Saya mengerti bahwa tujuan penyeimbang beban adalah untuk menyeimbangkan beban antara server Anda dan melacak kesehatan contoh, dll. Tetapi bagaimana jika penyeimbang beban itu sendiri gagal? Bagaimana Anda mengatur penyeimbang beban yang berlebihan? (load balancing load balancers?)
Saya bisa melihat bagaimana pemeriksaan kesehatan DNS bisa bermanfaat, tetapi jelas ada masalah latensi besar, bukan?
Ini dengan asumsi bahwa Anda tidak menggunakan layanan pihak ketiga seperti AWS ELB atau yang serupa. Apa yang harus dilakukan jika Anda hanya menggunakan say Nginx?
nginx
load-balancing
redundancy
load-balance
Sherzod
sumber
sumber
Jawaban:
Ada beberapa cara untuk mencapai HA (ketersediaan tinggi) dari Load Balancer - atau dalam hal layanan apa pun. Mari kita asumsikan Anda memiliki dua mesin, dengan alamat IP:
Pengguna terhubung ke IP, jadi yang ingin Anda lakukan adalah memisahkan IP dari kotak tertentu - misalnya membuat IP virtual. IP itu akan menjadi 192.168.100.100.
Sekarang, Anda dapat memilih layanan HA yang akan menangani failover / failback otomatis dari alamat IP. Beberapa layanan paling sederhana untuk unix adalah (u) carp dan keepalived, beberapa yang lebih kompleks misalnya RedHat Cluster Suite atau Pacemaker.
Mari kita ambil keepalived sebagai contoh - dua layanan keepalived - masing-masing berjalan pada kotaknya sendiri - dan mereka berkomunikasi bersama. Komunikasi itu sering disebut detak jantung.
Jika satu keepalived berhenti merespons (salah satu layanan turun karena alasan apa pun, atau kotak memantul atau dimatikan) - keepalived di kotak lain akan melihat denyut jantung yang terlewat, dan akan menganggap simpul lain mati, dan mengambil tindakan failover. Tindakan itu dalam kasus kami akan memunculkan IP mengambang.
Kasus terburuk yang dapat terjadi dalam kasus ini adalah hilangnya sesi untuk klien, tetapi mereka akan dapat terhubung kembali. Jika Anda ingin menghindari itu, dua penyeimbang beban harus dapat menyinkronkan data sesi di antara mereka, dan jika mereka bisa melakukan itu, pengguna tidak akan melihat apa pun kecuali mungkin menunda penundaan singkat.
Perangkap lain dari pengaturan ini adalah otak terpecah - saat kedua kotak daring tetapi tautan terputus, dan kedua kotak tersebut menampilkan IP yang sama. Ini sering diselesaikan melalui semacam mekanisme pagar (reservasi SCSI, restart IPMI, pemadaman listrik PDU pintar, ...), atau jumlah ganjil node yang mengharuskan mayoritas anggota kluster untuk hidup agar layanan dapat dimulai.
Perangkat lunak manajemen kluster yang lebih kompleks (seperti Pacemaker) dapat memindahkan seluruh layanan (mis .: hentikan pada satu simpul dan mulai dari yang lain) - dan ini adalah cara HA untuk layanan seperti basis data dapat dicapai.
Cara lain yang mungkin - jika Anda mengontrol router di dekat penyeimbang beban Anda, adalah dengan memanfaatkan ECMP. Pendekatan ini juga memungkinkan Anda untuk skala penyeimbang beban secara horizontal. Ini berfungsi oleh masing-masing dari dua kotak Anda berbicara BGP ke router Anda. Setiap kotak harus mengiklankan IP virtual (192.168.100.100) dan router akan memuat lalu lintas keseimbangan melalui ECMP. Jika sebuah mesin mati, itu akan menghentikan iklan VIP, yang pada gilirannya akan menghentikan router dari mengirimkan lalu lintas ke sana. Satu-satunya hal yang harus Anda perhatikan dalam pengaturan ini adalah menghentikan iklan IP jika penyeimbang beban itu sendiri mati.
sumber
Menggunakan Nginx sebagai penyeimbang beban Anda harus memungkinkan Anda untuk mengikuti arahan ulang yang dirinci dalam posting ini dengan mengubah konfigurasi Anda untuk mendeteksi batas waktu tidak ada respons:
nginx otomatis load balancing balancing
Secara teori jika Anda memiliki lingkungan HA, penyeimbang beban berganda harus memungkinkan layanan dipertahankan jika ada yang gagal.
Semoga ini membantu.
sumber
Penyeimbang beban perangkat keras telah mendukung pengaturan "aktif / pasif" atau "aktif / aktif" selama bertahun-tahun, dalam kedua kasus, pengaturan tersebut kemudian diatur secara paralel dari perspektif layer 1/2 ... aktif / pasif menggunakan mekanisme pemantauan / keepalive seperti yang dijelaskan , aktif / aktif dapat diimplementasikan dengan berbagai cara. Untuk tampil sebagai IP tunggal di frontend, dua penyeimbang atau lebih mungkin, asalkan semuanya / keduanya on-line, melakukan hal-hal seperti:
Dan kemudian ubah modenya untuk menerima semua atau lebih traffic ketika komunikasi dengan / perangkat mitra terputus.
di sisi backend:
sumber