GitHub Meluncurkan Load Balancer Code - Cara Solusi Mereka Bekerja

Pekan lalu, pengembang dari GitHub mengunggah kode sumber penyeimbang beban mereka - Direktur GLB. Tim ini mengerjakan proyek ini selama beberapa tahun.

Apa yang luar biasa adalah keputusan mereka, bagaimana pengaturannya, dan siapa lagi yang memindahkan sistem penyeimbangan beban ke sumber terbuka, kami ceritakan lebih lanjut.


/ Flickr / theilr / cc

Mengapa GitHub memiliki penyeimbang


GitHub menggunakan infrastruktur cloud bare metal untuk meningkatkan produktivitas. Dalam hal ini, perangkat lunak ini bekerja tanpa tambahan level virtualisasi pada bare metal.

Sebelumnya, perusahaan menggunakan haproxy dengan konfigurasi perangkat keras khusus untuk menyediakan load balancing, yang memberikan toleransi kesalahan untuk koneksi Ethernet 10-gigabit. Namun, pendekatan ini tidak skala dengan baik (tersirat penskalaan vertikal), dan GitHub memutuskan untuk menulis load balancernya sendiri, yang masih dapat bekerja pada perangkat keras berbiaya rendah.

Apa yang bisa dan bagaimana cara Direktur GLB


Penyeimbang GitHub memastikan koneksi TCP yang tidak terputus, mengelola beban layanan individual, tahan terhadap serangan DDoS dan mampu menskala secara horizontal. Ini " dipenjara " untuk bekerja di pusat data, di mana sejumlah besar server mengumumkan alamat IP tunggal melalui BGP , dan router menggunakan strategi ECMP .

Penyeimbangan beban dilakukan pada level L4 dan L7. Tidak seperti solusi seperti LVS , Direktur GLB tidak merutekan semua paket ke node sutradara, sehingga mereka dapat didistribusikan kembali antara node lain. Sebagai gantinya, ia menggunakan variasi hashing rendezvous hashing ( HRW ) untuk membuat tabel statis untuk memilih sepasang server proxy (primer dan sekunder) untuk setiap koneksi yang masuk. Jika salah satu dari mereka gagal, maka paket tersebut dikirim ke yang kedua. Sistem mengingat pilihan ini, dan tidak perlu dibuat untuk setiap paket.

"Kesehatan" server dimonitor oleh solusi glb-healthcheck, yang mengganti sistem primer dan sekunder jika ada masalah. glb-healthcheck memantau operasi yang benar dari setiap terowongan GUE (Generic UDP Encapsulation) dan port HTTP sewenang-wenang dari server backend.

GLB juga menggunakan sistem Netfilter dan utilitas iptables . Netfilter memecahkan tugas sederhana: ia menentukan apakah paket TCP / IP internal di setiap paket GUE sesuai dengan Linux kernel TCP stack. Jika tidak, ini mengarahkan ulang paket ke server proxy sekunder, daripada mendekapsulasi secara lokal.

Diagram interaksi komponen terlihat seperti ini:


GitHub berharap bahwa penyeimbang mereka akan bermanfaat bagi semua perusahaan yang memiliki pusat data sendiri.

Cara menginstal GLB dan mulai bekerja dengannya dapat ditemukan di panduan mulai cepat yang disiapkan oleh pengembang .

Perkembangan serupa


Pada bulan Mei, Facebook juga membagikan kode sumber untuk pustaka penyeimbang beban Katran-nya. Raksasa IT menggunakannya untuk mendistribusikan beban antara server backend secara efisien.

Penyeimbang perusahaan sebelumnya - L4LB - tidak dapat mengatasi tugas tersebut, karena membutuhkan server khusus untuk bekerja, yang menambah beban pada jaringan. Untuk mengatasi masalah ini, perusahaan mengembangkan Katran. Diluncurkan menggunakan kerangka Jalur Data eXpress dan mesin virtual eBPF. VM memperluas fungsionalitas umum dengan menjalankan program di setiap titik pada kernel Linux.


/ Flickr / da sal / cc

Balance balancer yang diperbarui lebih efisien mendistribusikan beban pada infrastruktur dan meningkatkan kecepatan pemrosesan paket. Pengembang kode sumber "diunggah" di GitHub.

Sistem Katran memiliki beberapa perbedaan dari solusi yang diusulkan di GitHub. Misalnya, Facebook menggunakan terowongan XDP dan IPIP yang berfungsi dengan kernel Linux. GLB, sebaliknya, telah menggunakan bantuan DPDK untuk memproses paket dari ruang pengguna.

Theo Julienne, pengembang GitHub, menambahkan bahwa DPDK memungkinkan Anda menangani volume lalu lintas masuk yang besar. Ini memastikan kinerja tinggi (koneksi 10-gigabit) bahkan di lingkungan kerja yang kompleks dan memberikan perlindungan terhadap serangan DDoS.

Pengalihan alat-alat canggih seperti GLB dan Katran ke open source akan membuka peluang baru bagi perusahaan IT lainnya dan akan berkontribusi pada pengembangan ekosistem IT yang lebih cepat di dunia.



PS Beberapa artikel tambahan dari Blog IaaS Perusahaan Pertama:



Source: https://habr.com/ru/post/id420093/


All Articles