Apa itu nftlb?

DIPOS oleh Zevenet | 2 Februari 2018

Gambaran Keseluruhan

nftlb bermaksud pengimbang beban nftables, firewall linux generasi akan datang yang akan menggantikan iptables disesuaikan untuk berkelakuan sebagai pengimbang beban penuh dan pengedar trafik.

nftlb adalah pengurus peraturan nftables untuk membuat perkhidmatan maya untuk penyeimbangan beban pada lapisan 2, lapisan 3 dan lapisan 4, meminimumkan bilangan peraturan dan menggunakan struktur agar sesuai dengan paket. Ia juga dilengkapi dengan perkhidmatan JSON API yang mudah untuk mempunyai fleksibiliti untuk berinteraksi dengan nftlb secara teratur dan untuk memenuhi automasi. Oleh itu, anda boleh menggunakan pemeriksa kesihatan pilihan anda untuk disatukan dengan nftlb dengan sangat mudah.

Falsafah nftlb adalah untuk mengekalkan laluan data ke dalam kernel, untuk mencapai prestasi yang paling mungkin, tetapi pesawat kawalan dan heath memeriksa ruang pengguna untuk mempunyai fleksibilitas untuk mengubah tingkah laku dengan mudah tetapi juga bersesuaian dengan sisa linux stack .

Di Zevenet, kami telah menggunakan iptables dan infrastruktur netfilter selama bertahun-tahun untuk membuat penyeimbang beban dengan ciri lengkap, oleh itu kami tahu dengan baik batasan pendekatan yang kami simpan dengan nftlb.

Kenapa nftlb diperlukan?

Kernel linux sudah menghitung pengimbang beban dalaman yang dipanggil IPVS, atau juga dikenali sebagai LVS (Server Maya Linux), yang merupakan perisian lengkap dan sangat stabil yang telah digunakan selama bertahun-tahun. Tetapi pengimbang beban tersebut mempunyai beberapa batasan: bahagian kernel digunakan untuk tugas-tugas yang harus dilakukan oleh ruang pengguna, untuk kemampuan tertentu ia menduplikasi infrastruktur yang saat ini netfilter menyediakan, dan bergantung pada iptables dan potongan-potongan software lain jika diperlukan sesuatu lebih kompleks (seperti proksi telus, berbilang atau multiprotocol). Ia menyediakan topologi SNAT dan DSR, tetapi tidak DNAT.

Dengan pendekatan iptables had utama adalah bilangan peraturan yang akan diwujudkan oleh perkhidmatan maya dan bilangan backend (sekurang-kurangnya ~ peraturan 2 setiap backend dengan beberapa padanan yang termasuk di dalamnya) dan kerumitan linear meningkat mengikut bilangan backend yang ditambah . Peraturan pemprosesan secara berurutan juga melambatkan prestasi jika terlalu banyak peraturan dimasukkan, dan ini lebih buruk lagi disebabkan oleh masalah penguncian iptables klasik. Untuk memberikan keseimbangan beban IPv6, ia mempunyai kesulitan penggunaan arahan yang berbeza, ip6tables. Di samping itu, pendekatan ini dapat menyediakan DNAT (NAT tujuan untuk ketelusan) dan beban SNAT (Sumber NAT) tetapi tidak dapat bekerja dalam topologi DSR (Direct Server Return).

Apabila berlakunya nftlb berdasarkan nftables kami menyelamatkan semua isu ini:
Ia boleh membina semua topologi dan perubahan dari satu ke yang lain dengan mudah.
Ia boleh mengendalikan multiport dan multiprotocol secara asli.
Ia boleh mengurus lalu lintas IPv4 dan IPv6 dengan lancar.
Ia hanya menggunakan satu antara muka untuk menyediakan semua kemampuan yang diperlukan untuk pengimbangan beban.
nftables menyediakan bahasa yang lebih ekspresif supaya kita boleh menggunakan peraturan 2 untuk membina pengimbang beban lengkap dengan kerumitan malar!
Pertandingan diindeks setiap perkhidmatan maya, jadi kami tidak perlu memproses semuanya secara berurutan.
Ia disediakan dari subsistem RCU supaya tidak ada masalah mengunci apabila mengemaskini peraturan.
Laluan data masih berada di ruang kernel tetapi menyediakan fleksibiliti dalam ruang pengguna untuk pesawat kawalan.
Telah terbukti bahawa ia boleh melakukan 10x lebih cepat daripada LVS.

ciri nftlb

Pada masa ini, nftlb menyediakan keupayaan berikut:
Topologi disokong: Destination NAT, Source NAT, Return Server Return dan DNAT Stateless. Ini membolehkan penggunaan pengimbang beban dalam seni bina rangkaian bersenjata dan dua bersenjata.
Sokongan untuk kedua-dua keluarga IPv4 dan IPv6.
Pengimbang beban multilayer: DSR di lapisan 2, pengimbangan beban berasaskan IP dengan protokol agnostik pada lapisan 3, dan sokongan pengimbangan beban UDP, TCP dan SCTP pada lapisan 4.
Sokongan multiport untuk julat dan senarai pelabuhan.
Sokongan pelbagai perkhidmatan maya (atau ladang).
Penjadualan tersedia: berat, pusingan robin, hash dikonfigurasikan (setiap IP, port, MAC atau gabungannya) dan hash simetri.
Sokongan untuk kegigihan yang boleh dikonfigurasikan atau afiniti klien-backend dengan timeout (setiap IP, port, MAC atau gabungan mereka).
Sokongan dasar keselamatan setiap perkhidmatan: putih dan hitam (dari ingress), beratur kepada penapis ruang pengguna, menapis bingkai TCP bingkai, bilangan maksimum sambungan yang ditetapkan, hadkan TCP RST sesaat, hadkan sambungan baru sesaat dan banyak lagi.
Sokongan keutamaan bagi setiap backend.
Pengurusan langsung perkhidmatan maya dan backends secara pemrograman melalui API JSON.
Pengesahan perkhidmatan web dengan Kunci keselamatan.
Testbed automatik disertakan.

Repository git rasmi: https://github.com/zevenet/nftlb

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

Berkongsi pada:

Dokumentasi di bawah syarat-syarat Lesen Dokumentasi Bebas GNU.

Adakah artikel ini berguna?

Artikel yang berkaitan