Bagaimana cara membuat penyeimbang beban yang berlebihan?

27

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?

Sherzod
sumber
Tidak ada "load balancing load balancers" di bagian paling atas arsitektur Anda, Anda hanya membuat LBs Anda berlebihan dan mengatur solusi Ketersediaan Tinggi untuk menangani kegagalan seperti kebanyakan tipologi pengelompokan lakukan.
Xavier Lucas

Jawaban:

32

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:

  • 192.168.100.101
  • 192.168.100.102

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.

|   VIP   |                           |         |
|  Box A  | ------v^-----------v^---- |  Box B  |
|   IP1   |                           |   IP2   |

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.

                                      |   VIP   |
    ------------------ -------------- |  Box B  |
                                      |   IP2   |

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.

|   VIP   |                           |   VIP   |
|  Box A  |                           |  Box B  |
|   IP1   |                           |   IP2   |

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.

Jakov Sosic
sumber
3

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.

pengguna4657
sumber
2

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:

  • selektif menjawab permintaan ARP ke IP bersama berdasarkan has dari sumber MAC atau alamat IP ketika klien berada di jaringan yang sama
  • bernegosiasi antara satu sama lain yang menangani lalu lintas koneksi TCP baru yang diberikan
  • biarkan lalu lintas layer duplikat atau salah terjadi secara serampangan dan bergantung pada tumpukan TCP klien / router untuk mengatasinya

Dan kemudian ubah modenya untuk menerima semua atau lebih traffic ketika komunikasi dengan / perangkat mitra terputus.

di sisi backend:

  • masing-masing penyeimbang mungkin, dalam operasi normal, hanya menggunakan sub-kumpulan server aplikasi tertentu
  • atau, permintaan duplikat mungkin hanya dihasilkan di sini juga ...
  • atau, negosiasi antara penyeimbang mungkin dilakukan
pemeras
sumber