Apa itu nftlb?

DIKIRIM PADA 2 Februari 2018

Pengantar

nftlb singkatan nftables load balancer, firewall linux generasi berikutnya yang akan menggantikan iptables disesuaikan untuk berperilaku sebagai penyeimbang muatan dan distributor lalu lintas yang lengkap.

nftlb adalah manajer aturan nftables untuk membuat layanan virtual untuk load balancing pada lapisan 2, lapisan 3 dan lapisan 4, meminimalkan jumlah aturan dan menggunakan struktur untuk mencocokkan paket secara efisien. Ini juga dilengkapi dengan layanan API JSON yang mudah untuk memiliki fleksibilitas untuk berinteraksi dengan nftlb secara terprogram dan untuk memenuhi otomatisasi. Jadi, Anda dapat menggunakan pemeriksa kesehatan pilihan Anda untuk diintegrasikan dengan nftlb dengan sangat mudah.

Filosofi dari nftlb adalah untuk mempertahankan jalur data ke dalam kernel, untuk mencapai kinerja yang paling mungkin, tetapi bidang kontrol dan heath memeriksa ke dalam ruang pengguna untuk memiliki fleksibilitas untuk mengubah perilaku dengan mudah tetapi juga agar kompatibel dengan sisa tumpukan linux .

Di Zevenet, kami telah menggunakan iptables dan infrastruktur netfilter selama bertahun-tahun untuk membuat penyeimbang beban berfitur lengkap, oleh karena itu kami tahu betul batasan dari pendekatan yang kami hemat. nftlb.

Mengapa nftlb dibutuhkan?

Kernel linux sudah menghitung penyeimbang beban internal yang disebut IPVS, atau juga dikenal sebagai LVS (Linux Virtual Server), yang merupakan perangkat lunak lengkap dan sangat stabil yang telah digunakan selama bertahun-tahun. Tetapi penyeimbang beban semacam itu memiliki beberapa keterbatasan: sisi kernel digunakan untuk tugas-tugas yang harus dilakukan oleh ruang pengguna, untuk kemampuan tertentu ia menduplikasi infrastruktur yang saat ini disediakan netfilter, dan ia bergantung pada iptables dan perangkat lunak lain jika diperlukan sesuatu lebih kompleks (seperti proxy transparan, multiport, atau multiprotocol). Ini memberikan topologi SNAT dan DSR, tetapi tidak DNAT.

Dengan pendekatan iptables, batasan utama adalah jumlah aturan yang akan dibuat oleh layanan virtual dan jumlah backend (minimal ~ 2 aturan per backend dengan beberapa pertandingan yang disertakan di dalamnya) dan kompleksitas linier yang meningkat sesuai dengan jumlah backend yang ditambahkan. . Pemrosesan aturan secara berurutan juga memperlambat kinerja jika terlalu banyak aturan dimasukkan, dan ini bahkan lebih buruk karena masalah penguncian iptables klasik. Untuk memberikan penyeimbangan beban IPv6, ia memiliki ketidaknyamanan menggunakan perintah yang berbeda, ip6tables. Selain itu, pendekatan ini dapat memberikan penyeimbangan beban DNAT (NAT Tujuan untuk transparansi) dan SNAT (Source NAT) tetapi tidak dapat bekerja dalam topologi DSR (Direct Server Return).

Dengan nftlb berdasarkan nftables kami menyimpan semua masalah ini:
Itu dapat membangun semua topologi ini dan berubah dari satu ke yang lain dengan sangat mudah.
Dapat menangani multiport dan multiprotocol secara asli.
Ini dapat mengelola lalu lintas IPv4 dan IPv6 dengan mulus.
Ini hanya digunakan satu antarmuka untuk menyediakan semua kemampuan yang diperlukan untuk load balancing.
nftables menyediakan bahasa yang lebih ekspresif sehingga kita dapat menggunakan aturan 2 untuk membangun penyeimbang beban lengkap dengan kompleksitas konstan!
Kecocokan diindeks per layanan virtual, jadi kami tidak perlu memproses semuanya secara berurutan.
Ini disediakan dari subsistem RCU sehingga tidak ada masalah penguncian saat memperbarui aturan.
Jalur data tetap di ruang kernel tetapi memberikan fleksibilitas dalam ruang pengguna untuk bidang kontrol.
Sudah terbukti itu itu dapat melakukan 10x lebih cepat dari LVS.

fitur nftlb

Saat ini, nftlb menyediakan kemampuan berikut:
Topologi didukung: Destination NAT, Source NAT, Direct Server Return, dan DNAT Stateless. Ini memungkinkan penggunaan penyeimbang beban dalam arsitektur jaringan satu-bersenjata dan dua-bersenjata.
Dukungan untuk keluarga IPv4 dan IPv6.
Multilayer load balancer: DSR pada layer 2, load balancing berbasis IP dengan protokol agnostik pada layer 3, dan dukungan load balancing UDP, TCP dan SCTP pada layer 4.
Dukungan multiport untuk rentang dan daftar port.
Dukungan beberapa layanan virtual (atau peternakan).
Penjadwal tersedia: berat, round robin, hash yang dapat dikonfigurasi (per IP, port, MAC atau kombinasi mereka) dan hash simetris.
Dukungan ketekunan yang dapat dikonfigurasi atau afinitas backend klien dengan batas waktu (per IP, port, MAC, atau kombinasi keduanya).
Dukungan kebijakan keamanan per layanan: daftar putih dan hitam (dari masuknya), antrian ke filter ruang pengguna, pemfilteran frame TCP palsu, jumlah maksimum koneksi yang dibuat, batas TCP RST per detik, batasi koneksi baru per detik dan banyak lagi.
Dukungan prioritas per backend.
Manajemen langsung layanan virtual dan backends secara terprogram melalui API JSON.
Otentikasi layanan web dengan Kunci keamanan.
Testbed otomatis disertakan.

Gudang git resmi: https://github.com/zevenet/nftlb

changelog: https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/

Bagikan ke:

Dokumentasi di bawah ketentuan Lisensi Dokumentasi Bebas GNU.

Apakah artikel ini berguna?

Artikel terkait