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 / ccMengapa 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 / ccBalance 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: