Kali terakhir kita bercakap tentang keupayaan NSX Edge dari segi penghalaan statik dan dinamik, dan hari ini kita akan berurusan dengan pengimbang beban.
Sebelum kita mula menyediakan, saya ingin mengingatkan anda secara ringkas tentang jenis utama pengimbangan.
Teori
Semua penyelesaian pengimbangan muatan hari ini paling kerap dibahagikan kepada dua kategori: pengimbangan pada tahap keempat (pengangkutan) dan ketujuh (aplikasi) model
- Pengimbang L4 selalunya ia adalah proksi tengah yang berdiri di antara pelanggan dan satu set backend yang tersedia, yang menamatkan sambungan TCP (iaitu, bertindak balas secara bebas kepada SYN), memilih backend dan memulakan sesi TCP baharu ke arahnya, secara bebas menghantar SYN. Jenis ini adalah salah satu yang asas; pilihan lain mungkin.
- Pengimbang L7 mengedarkan trafik merentas bahagian belakang yang tersedia "lebih canggih" daripada pengimbang L4. Ia boleh memutuskan bahagian belakang yang hendak dipilih berdasarkan, sebagai contoh, kandungan mesej HTTP (URL, kuki, dsb.).
Tidak kira jenisnya, pengimbang boleh menyokong fungsi berikut:
- Penemuan perkhidmatan ialah proses menentukan set backend yang tersedia (Static, DNS, Consul, Etcd, dll.).
- Menyemak kefungsian bahagian belakang yang dikesan ("ping" aktif bahagian belakang menggunakan permintaan HTTP, pengesanan pasif masalah dalam sambungan TCP, kehadiran beberapa kod HTTP 503 dalam respons, dsb.).
- Pengimbangan itu sendiri (round robin, pemilihan rawak, cincang IP sumber, URI).
- Penamatan TLS dan pengesahan sijil.
- Pilihan berkaitan keselamatan (pengesahan, pencegahan serangan DoS, pengehadan kelajuan) dan banyak lagi.
NSX Edge menawarkan sokongan untuk dua mod penggunaan pengimbang beban:
Mod proksi, atau satu lengan. Dalam mod ini, NSX Edge menggunakan alamat IPnya sebagai alamat sumber apabila menghantar permintaan ke salah satu bahagian belakang. Oleh itu, pengimbang melaksanakan fungsi NAT Sumber dan Destinasi secara serentak. Bahagian belakang melihat semua trafik sebagai dihantar daripada pengimbang dan bertindak balas terus kepadanya. Dalam skema sedemikian, pengimbang mesti berada dalam segmen rangkaian yang sama dengan pelayan dalaman.
Begini caranya:
1. Pengguna menghantar permintaan ke alamat VIP (alamat pengimbang) yang dikonfigurasikan pada Edge.
2. Edge memilih salah satu hujung belakang dan melaksanakan NAT destinasi, menggantikan alamat VIP dengan alamat hujung belakang yang dipilih.
3. Edge melaksanakan sumber NAT, menggantikan alamat pengguna yang menghantar permintaan dengan alamatnya sendiri.
4. Pakej dihantar ke bahagian belakang yang dipilih.
5. Bahagian belakang tidak bertindak balas terus kepada pengguna, tetapi kepada Edge, kerana alamat asal pengguna telah ditukar kepada alamat pengimbang.
6. Edge menghantar respons pelayan kepada pengguna.
Rajah di bawah.
Mod telus atau sebaris. Dalam senario ini, pengimbang mempunyai antara muka pada rangkaian dalaman dan luaran. Pada masa yang sama, tiada akses langsung ke rangkaian dalaman dari luar. Pengimbang beban terbina dalam bertindak sebagai gerbang NAT untuk mesin maya pada rangkaian dalaman.
Mekanismenya adalah seperti berikut:
1. Pengguna menghantar permintaan ke alamat VIP (alamat pengimbang) yang dikonfigurasikan pada Edge.
2. Edge memilih salah satu hujung belakang dan melaksanakan NAT destinasi, menggantikan alamat VIP dengan alamat hujung belakang yang dipilih.
3. Pakej dihantar ke bahagian belakang yang dipilih.
4. Bahagian belakang menerima permintaan dengan alamat asal pengguna (sumber NAT tidak dilakukan) dan bertindak balas terus kepadanya.
5. Trafik diterima semula oleh pengimbang beban, kerana dalam skema sebaris ia biasanya bertindak sebagai pintu masuk lalai untuk ladang pelayan.
6. Edge melaksanakan NAT sumber untuk menghantar trafik kepada pengguna, menggunakan VIPnya sebagai alamat IP sumber.
Rajah di bawah.
Amalan
Bangku ujian saya mempunyai 3 pelayan yang menjalankan Apache, yang dikonfigurasikan untuk berfungsi melalui HTTPS. Edge akan melakukan pengimbangan round robin permintaan HTTPS, memproksi setiap permintaan baharu kepada pelayan baharu.
Mari kita mulakan.
Menjana sijil SSL yang akan digunakan oleh NSX Edge
Anda boleh mengimport sijil CA yang sah atau menggunakan sijil yang ditandatangani sendiri. Untuk ujian ini saya akan menggunakan tandatangan sendiri.
- Dalam antara muka Pengarah vCloud, pergi ke tetapan perkhidmatan Edge.
- Pergi ke tab Sijil. Daripada senarai tindakan, pilih menambah CSR baharu.
- Isikan medan yang diperlukan dan klik Simpan.
- Pilih CSR yang baru dibuat dan pilih pilihan CSR tanda sendiri.
- Pilih tempoh sah sijil dan klik Simpan
- Sijil yang ditandatangani sendiri muncul dalam senarai yang tersedia.
Menyediakan Profil Aplikasi
Profil aplikasi memberi anda kawalan yang lebih lengkap ke atas trafik rangkaian dan menjadikannya mudah dan berkesan. Ia boleh digunakan untuk menentukan gelagat untuk jenis trafik tertentu.
- Pergi ke tab Pengimbang Beban dan dayakan pengimbang. Pilihan yang didayakan Pecutan di sini membolehkan pengimbang menggunakan pengimbangan L4 yang lebih pantas berbanding L7.
- Pergi ke tab Profil aplikasi untuk menetapkan profil aplikasi. Klik +.
- Tetapkan nama profil dan pilih jenis trafik yang mana profil akan digunakan. Biar saya terangkan beberapa parameter.
Kegigihan β menyimpan dan menjejak data sesi, sebagai contoh: pelayan tertentu dalam kumpulan yang melayani permintaan pengguna. Ini memastikan permintaan pengguna dihalakan kepada ahli kumpulan yang sama untuk sepanjang hayat sesi atau sesi berikutnya.
Dayakan laluan SSL β Apabila pilihan ini dipilih, NSX Edge berhenti menamatkan SSL. Sebaliknya, penamatan berlaku secara langsung pada pelayan yang sedang seimbang.
Masukkan X-Forwarded-For HTTP header β membolehkan anda menentukan alamat IP sumber pelanggan yang menyambung ke pelayan web melalui pengimbang beban.
Dayakan SSL Sisi Kolam β membolehkan anda menentukan bahawa kumpulan yang dipilih terdiri daripada pelayan HTTPS.
- Memandangkan saya akan mengimbangi trafik HTTPS, saya perlu mendayakan SSL Pool Side dan pilih sijil yang dijana sebelum ini dalam tab Sijil Pelayan Maya -> Sijil Perkhidmatan.
- Begitu juga untuk Sijil Pool -> Sijil Perkhidmatan.
Kami mencipta kumpulan pelayan, lalu lintas yang akan menjadi Kumpulan seimbang
- Pergi ke tab Pools. Klik +.
- Kami menetapkan nama kumpulan, pilih algoritma (saya akan menggunakan round robin) dan jenis pemantauan untuk bahagian belakang pemeriksaan kesihatan. Pilihan Telus menunjukkan sama ada IP sumber awal pelanggan kelihatan kepada pelayan dalaman.
- Jika pilihan dilumpuhkan, trafik untuk pelayan dalaman datang daripada IP sumber pengimbang.
- Jika pilihan didayakan, pelayan dalaman melihat IP sumber pelanggan. Dalam konfigurasi ini, NSX Edge mesti bertindak sebagai get laluan lalai untuk memastikan paket yang dikembalikan melalui NSX Edge.
NSX menyokong algoritma pengimbangan berikut:
- IP_HASH β pemilihan pelayan berdasarkan hasil fungsi cincang untuk sumber dan IP destinasi setiap paket.
- LEASTCONN β mengimbangi sambungan masuk, bergantung pada nombor yang sudah tersedia pada pelayan tertentu. Sambungan baharu akan diarahkan ke pelayan dengan sambungan paling sedikit.
- ROBIN PUSINGAN β sambungan baharu dihantar ke setiap pelayan secara bergilir-gilir, mengikut berat yang diberikan kepadanya.
- URI β bahagian kiri URI (sebelum tanda soal) dicincang dan dibahagikan dengan jumlah berat pelayan dalam kumpulan. Hasilnya menunjukkan pelayan mana yang menerima permintaan, memastikan permintaan itu sentiasa dihalakan ke pelayan yang sama, selagi semua pelayan masih tersedia.
- HTTPHEADER β mengimbangi berdasarkan pengepala HTTP tertentu, yang boleh ditentukan sebagai parameter. Jika pengepala tiada atau tidak mempunyai sebarang nilai, algoritma ROUND_ROBIN digunakan.
- URL β Setiap permintaan HTTP GET mencari parameter URL yang dinyatakan sebagai hujah. Jika parameter diikuti dengan tanda sama dan nilai, maka nilai dicincang dan dibahagikan dengan jumlah berat pelayan yang sedang berjalan. Hasilnya menunjukkan pelayan yang menerima permintaan. Proses ini digunakan untuk menjejaki ID pengguna dalam permintaan dan memastikan bahawa id pengguna yang sama sentiasa dihantar ke pelayan yang sama, selagi semua pelayan masih tersedia.
- Dalam blok Ahli, klik + untuk menambah pelayan pada kumpulan.
Di sini anda perlu menunjukkan:- nama pelayan;
- Alamat IP pelayan;
- pelabuhan di mana pelayan akan menerima trafik;
- pelabuhan untuk pemeriksaan kesihatan (Monitor healthcheck);
- berat β menggunakan parameter ini anda boleh melaraskan jumlah berkadar trafik yang diterima untuk ahli kumpulan tertentu;
- Sambungan Maks β bilangan maksimum sambungan ke pelayan;
- Sambungan Min β bilangan sambungan minimum yang mesti diproses oleh pelayan sebelum trafik dimajukan kepada ahli kumpulan seterusnya.
Inilah rupa kumpulan terakhir tiga pelayan.
Menambah Pelayan Maya
- Pergi ke tab Pelayan Maya. Klik +.
- Kami mengaktifkan pelayan maya menggunakan Dayakan Pelayan Maya.
Kami memberinya nama, pilih Profil Aplikasi yang dibuat sebelum ini, Pool dan nyatakan alamat IP yang mana Pelayan Maya akan menerima permintaan dari luar. Kami menentukan protokol HTTPS dan port 443.
Parameter pilihan di sini:
Had Sambungan β bilangan maksimum sambungan serentak yang boleh diproses oleh pelayan maya;
Had Kadar Sambungan (CPS) β bilangan maksimum permintaan masuk baharu sesaat.
Ini melengkapkan konfigurasi pengimbang; anda boleh menyemak kefungsiannya. Pelayan mempunyai konfigurasi mudah yang membolehkan anda memahami pelayan dari kumpulan yang memproses permintaan tersebut. Semasa persediaan, kami memilih algoritma pengimbangan Round Robin dan parameter Weight untuk setiap pelayan adalah sama dengan satu, jadi setiap permintaan seterusnya akan diproses oleh pelayan seterusnya daripada kumpulan.
Kami memasukkan alamat luaran pengimbang dalam penyemak imbas dan lihat:
Selepas memuat semula halaman, permintaan akan diproses oleh pelayan berikut:
Dan sekali lagi - untuk menyemak pelayan ketiga dari kolam:
Apabila menyemak, anda dapat melihat bahawa sijil yang Edge hantar kepada kami adalah sama yang kami hasilkan pada awalnya.
Menyemak status pengimbang daripada konsol gerbang Edge. Untuk melakukan ini, masukkan tunjukkan kolam loadbalancer perkhidmatan.
Mengkonfigurasi Pemantau Perkhidmatan untuk menyemak status pelayan dalam kumpulan
Menggunakan Pemantau Perkhidmatan kami boleh memantau status pelayan dalam kumpulan hujung belakang. Jika tindak balas kepada permintaan tidak seperti yang diharapkan, pelayan boleh dibawa keluar dari kolam supaya ia tidak menerima sebarang permintaan baharu.
Secara lalai, tiga kaedah pengesahan dikonfigurasikan:
- TCP-monitor,
- Pemantau HTTP,
- HTTPS-monitor.
Jom buat yang baru.
- Pergi ke tab Pemantauan Perkhidmatan, klik +.
- Pilih:
- nama untuk kaedah baru;
- selang masa permintaan akan dihantar,
- tamat masa menunggu jawapan,
- jenis pemantauan β permintaan HTTPS menggunakan kaedah GET, kod status yang dijangka β 200(OK) dan URL permintaan.
- Ini melengkapkan persediaan Pemantau Perkhidmatan baharu; kini kami boleh menggunakannya semasa membuat kolam.
Menyediakan Peraturan Permohonan
Peraturan Aplikasi ialah cara untuk memanipulasi trafik berdasarkan pencetus tertentu. Dengan alat ini, kami boleh mencipta peraturan pengimbangan beban lanjutan yang mungkin tidak boleh dilakukan melalui profil Aplikasi atau perkhidmatan lain yang tersedia di Edge Gateway.
- Untuk membuat peraturan, pergi ke tab Peraturan Aplikasi pengimbang.
- Pilih nama, skrip yang akan menggunakan peraturan dan klik Simpan.
- Selepas peraturan dibuat, kita perlu mengedit Pelayan Maya yang telah dikonfigurasikan.
- Dalam tab Lanjutan, tambahkan peraturan yang kami buat.
Dalam contoh di atas kami mendayakan sokongan tlsv1.
Beberapa lagi contoh:
Ubah hala trafik ke kolam lain.
Dengan skrip ini kita boleh mengubah hala trafik ke kolam pengimbangan lain jika kolam utama tidak berfungsi. Agar peraturan berfungsi, berbilang kumpulan mesti dikonfigurasikan pada pengimbang dan semua ahli kumpulan utama mesti berada dalam keadaan bawah. Anda perlu menyatakan nama kolam, bukan IDnya.
acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME
Ubah hala trafik ke sumber luaran.
Di sini kami mengubah hala trafik ke tapak web luaran jika semua ahli kumpulan utama tidak berfungsi.
acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down
Malah lebih banyak contoh
Itu sahaja untuk saya tentang pengimbang. Jika anda mempunyai sebarang soalan, tanya, saya sedia menjawab.
Sumber: www.habr.com