Terakhir kali kita berbicara tentang kemampuan NSX Edge dalam hal perutean statis dan dinamis, dan hari ini kita akan membahas tentang penyeimbang beban.
Sebelum kita mulai melakukan pengaturan, saya ingin mengingatkan Anda secara singkat tentang jenis-jenis utama penyeimbangan.
Teori
Semua solusi penyeimbangan muatan saat ini paling sering dibagi menjadi dua kategori: penyeimbangan pada tingkat model keempat (transportasi) dan ketujuh (aplikasi).
- Penyeimbang L4 paling sering ini adalah proxy tengah yang berdiri di antara klien dan sekumpulan backend yang tersedia, yang mengakhiri koneksi TCP (yaitu, merespons SYN secara independen), memilih backend dan memulai sesi TCP baru ke arahnya, mengirimkan SYN secara independen. Tipe ini adalah salah satu tipe dasar, opsi lain juga dimungkinkan.
- Penyeimbang L7 mendistribusikan lalu lintas ke seluruh backend yang tersedia βlebih canggihβ daripada penyeimbang L4. Itu dapat memutuskan backend mana yang akan dipilih berdasarkan, misalnya, konten pesan HTTP (URL, cookie, dll.).
Apa pun jenisnya, penyeimbang dapat mendukung fungsi berikut:
- Penemuan layanan adalah proses menentukan kumpulan backend yang tersedia (Statis, DNS, Konsul, Dll, dll.).
- Memeriksa fungsionalitas backend yang terdeteksi ("ping" aktif dari backend menggunakan permintaan HTTP, deteksi pasif masalah dalam koneksi TCP, adanya beberapa kode HTTP 503 dalam respons, dll.).
- Penyeimbangannya sendiri (round robin, pemilihan acak, hash IP sumber, URI).
- Penghentian TLS dan verifikasi sertifikat.
- Opsi terkait keamanan (otentikasi, pencegahan serangan DoS, pembatasan kecepatan) dan banyak lagi.
NSX Edge menawarkan dukungan untuk dua mode penerapan penyeimbang beban:
Mode proxy, atau satu tangan. Dalam mode ini, NSX Edge menggunakan alamat IP-nya sebagai alamat sumber saat mengirimkan permintaan ke salah satu backend. Dengan demikian, penyeimbang secara bersamaan menjalankan fungsi NAT Sumber dan Tujuan. Backend melihat semua lalu lintas yang dikirim dari penyeimbang dan langsung meresponsnya. Dalam skema seperti itu, penyeimbang harus berada di segmen jaringan yang sama dengan server internal.
Begini caranya:
1. Pengguna mengirimkan permintaan ke alamat VIP (alamat penyeimbang) yang dikonfigurasi di Edge.
2. Edge memilih salah satu backend dan melakukan NAT tujuan, mengganti alamat VIP dengan alamat backend yang dipilih.
3. Edge melakukan NAT sumber, mengganti alamat pengguna yang mengirim permintaan dengan alamatnya sendiri.
4. Paket dikirim ke backend yang dipilih.
5. Backend tidak merespons langsung ke pengguna, tetapi ke Edge, karena alamat asli pengguna telah diubah menjadi alamat penyeimbang.
6. Edge mengirimkan respon server kepada pengguna.
Diagramnya ada di bawah.
Mode transparan atau sebaris. Dalam skenario ini, penyeimbang memiliki antarmuka pada jaringan internal dan eksternal. Pada saat yang sama, tidak ada akses langsung ke jaringan internal dari jaringan eksternal. Penyeimbang beban bawaan bertindak sebagai gateway NAT untuk mesin virtual di jaringan internal.
Mekanismenya adalah sebagai berikut:
1. Pengguna mengirimkan permintaan ke alamat VIP (alamat penyeimbang) yang dikonfigurasi di Edge.
2. Edge memilih salah satu backend dan melakukan NAT tujuan, mengganti alamat VIP dengan alamat backend yang dipilih.
3. Paket dikirim ke backend yang dipilih.
4. Backend menerima permintaan dengan alamat asli pengguna (NAT sumber tidak dilakukan) dan meresponsnya secara langsung.
5. Lalu lintas diterima kembali oleh penyeimbang beban, karena dalam skema inline biasanya bertindak sebagai gateway default untuk server farm.
6. Edge melakukan NAT sumber untuk mengirimkan lalu lintas ke pengguna, menggunakan VIP-nya sebagai alamat IP sumber.
Diagramnya ada di bawah.
Praktek
Bangku pengujian saya memiliki 3 server yang menjalankan Apache, yang dikonfigurasi untuk bekerja melalui HTTPS. Edge akan melakukan penyeimbangan permintaan HTTPS secara round robin, mem-proxy setiap permintaan baru ke server baru.
Mari kita mulai.
Menghasilkan sertifikat SSL yang akan digunakan oleh NSX Edge
Anda dapat mengimpor sertifikat CA yang valid atau menggunakan sertifikat yang ditandatangani sendiri. Untuk tes ini saya akan menggunakan tanda tangan sendiri.
- Di antarmuka vCloud Director, buka pengaturan layanan Edge.
- Buka tab Sertifikat. Dari daftar tindakan, pilih menambahkan CSR baru.
- Isi bidang yang wajib diisi dan klik Simpan.
- Pilih CSR yang baru dibuat dan pilih opsi CSR yang ditandatangani sendiri.
- Pilih masa berlaku sertifikat dan klik Simpan
- Sertifikat yang ditandatangani sendiri muncul di daftar sertifikat yang tersedia.
Menyiapkan Profil Aplikasi
Profil aplikasi memberi Anda kontrol lebih penuh atas lalu lintas jaringan dan menjadikan pengelolaannya sederhana dan efektif. Mereka dapat digunakan untuk menentukan perilaku jenis lalu lintas tertentu.
- Buka tab Load Balancer dan aktifkan penyeimbang. Opsi Akselerasi diaktifkan di sini memungkinkan penyeimbang menggunakan penyeimbangan L4 yang lebih cepat daripada L7.
- Buka tab Profil aplikasi untuk mengatur profil aplikasi. Klik +.
- Tetapkan nama profil dan pilih jenis lalu lintas yang profilnya akan diterapkan. Izinkan saya menjelaskan beberapa parameter.
Ketekunan β menyimpan dan melacak data sesi, misalnya: server spesifik mana di kumpulan yang melayani permintaan pengguna. Hal ini memastikan bahwa permintaan pengguna dirutekan ke anggota kumpulan yang sama selama masa sesi atau sesi berikutnya.
Aktifkan passthrough SSL β Jika opsi ini dipilih, NSX Edge berhenti mengakhiri SSL. Sebaliknya, penghentian terjadi langsung pada server yang sedang diseimbangkan.
Masukkan header HTTP X-Forwarded-Untuk β memungkinkan Anda menentukan alamat IP sumber klien yang terhubung ke server web melalui penyeimbang beban.
Aktifkan SSL Sisi Kolam Renang β memungkinkan Anda menentukan bahwa kumpulan yang dipilih terdiri dari server HTTPS.
- Karena saya akan menyeimbangkan lalu lintas HTTPS, saya perlu mengaktifkan Pool Side SSL dan memilih sertifikat yang dibuat sebelumnya di tab Sertifikat Server Virtual -> Sertifikat Layanan.
- Demikian pula untuk Sertifikat Kumpulan -> Sertifikat Layanan.
Kami membuat kumpulan server, lalu lintasnya akan menjadi Pool yang seimbang
- Buka tab Kolam. Klik +.
- Kami menetapkan nama kumpulan, memilih algoritme (saya akan menggunakan round robin) dan jenis pemantauan untuk backend pemeriksaan kesehatan.Opsi Transparan menunjukkan apakah IP sumber awal klien terlihat oleh server internal.
- Jika opsi ini dinonaktifkan, lalu lintas untuk server internal berasal dari IP sumber penyeimbang.
- Jika opsi ini diaktifkan, server internal akan melihat IP sumber klien. Dalam konfigurasi ini, NSX Edge harus bertindak sebagai gateway default untuk memastikan bahwa paket yang dikembalikan melewati NSX Edge.
NSX mendukung algoritma penyeimbangan berikut:
- IP_HASH β pemilihan server berdasarkan hasil fungsi hash untuk IP sumber dan tujuan setiap paket.
- TERAKHIRNYA β penyeimbangan koneksi masuk, tergantung pada nomor yang sudah tersedia di server tertentu. Koneksi baru akan diarahkan ke server dengan koneksi paling sedikit.
- ROUND_ROBIN β koneksi baru dikirim ke setiap server secara bergantian, sesuai dengan bobot yang diberikan padanya.
- URI β bagian kiri URI (sebelum tanda tanya) di-hash dan dibagi dengan total bobot server di kumpulan. Hasilnya menunjukkan server mana yang menerima permintaan, memastikan bahwa permintaan selalu diarahkan ke server yang sama, selama semua server tetap tersedia.
- HTTPHEADER β penyeimbangan berdasarkan header HTTP tertentu, yang dapat ditentukan sebagai parameter. Jika header tidak ada atau tidak memiliki nilai apa pun, algoritma ROUND_ROBIN diterapkan.
- URL β Setiap permintaan HTTP GET mencari parameter URL yang ditentukan sebagai argumen. Jika parameter diikuti dengan tanda sama dengan dan nilai, maka nilai tersebut di-hash dan dibagi dengan total bobot server yang berjalan. Hasilnya menunjukkan server mana yang menerima permintaan tersebut. Proses ini digunakan untuk melacak ID pengguna dalam permintaan dan memastikan bahwa id pengguna yang sama selalu dikirim ke server yang sama, selama semua server tetap tersedia.
- Di blok Anggota, klik + untuk menambahkan server ke kumpulan.
Di sini Anda perlu menunjukkan:- nama server;
- Alamat IP server;
- port tempat server akan menerima lalu lintas;
- port untuk pemeriksaan kesehatan (Monitor healthcheck);
- berat β dengan menggunakan parameter ini Anda dapat menyesuaikan jumlah proporsional lalu lintas yang diterima untuk anggota kumpulan tertentu;
- Koneksi Maks β jumlah maksimum koneksi ke server;
- Koneksi Min β jumlah minimum koneksi yang harus diproses server sebelum lalu lintas diteruskan ke anggota kumpulan berikutnya.
Seperti inilah kumpulan terakhir dari tiga server.
Menambahkan Server Virtual
- Buka tab Server Virtual. Klik +.
- Kami mengaktifkan server virtual menggunakan Aktifkan Server Virtual.
Kami memberinya nama, pilih Profil Aplikasi yang dibuat sebelumnya, Kumpulan dan tunjukkan alamat IP ke mana Server Virtual akan menerima permintaan dari luar. Kami menentukan protokol HTTPS dan port 443.
Parameter opsional di sini:
Batas Koneksi β jumlah maksimum koneksi simultan yang dapat diproses oleh server virtual;
Batas Kecepatan Koneksi (CPS) β jumlah maksimum permintaan masuk baru per detik.
Ini menyelesaikan konfigurasi penyeimbang, Anda dapat memeriksa fungsinya. Server memiliki konfigurasi sederhana yang memungkinkan Anda memahami server mana dari kumpulan yang memproses permintaan. Selama pengaturan, kami memilih algoritma penyeimbangan Round Robin, dan parameter Bobot untuk setiap server sama dengan satu, sehingga setiap permintaan berikutnya akan diproses oleh server berikutnya dari kumpulan.
Kami memasukkan alamat eksternal penyeimbang di browser dan melihat:
Setelah menyegarkan halaman, permintaan akan diproses oleh server berikut:
Dan lagi - untuk memeriksa server ketiga dari kumpulan:
Saat memeriksa, Anda dapat melihat bahwa sertifikat yang dikirimkan Edge kepada kami sama dengan yang kami buat di awal.
Memeriksa status penyeimbang dari konsol Edge gateway. Untuk melakukan ini, masuk tampilkan kumpulan penyeimbang beban layanan.
Mengonfigurasi Service Monitor untuk memeriksa status server di pool
Menggunakan Service Monitor kita dapat memantau status server di kumpulan backend. Jika respon terhadap permintaan tidak seperti yang diharapkan, server dapat dikeluarkan dari pool sehingga tidak menerima permintaan baru.
Secara default, tiga metode verifikasi dikonfigurasi:
- monitor TCP,
- Pemantau HTTP,
- Monitor HTTPS.
Ayo buat yang baru.
- Buka tab Pemantauan Layanan, klik +.
- Memilih:
- nama metode baru;
- interval di mana permintaan akan dikirim,
- batas waktu menunggu jawaban,
- jenis pemantauan β Permintaan HTTPS menggunakan metode GET, kode status yang diharapkan β 200(OK) dan URL permintaan.
- Ini menyelesaikan pengaturan Service Monitor baru; sekarang kita dapat menggunakannya saat membuat kumpulan.
Menyiapkan Aturan Aplikasi
Aturan Aplikasi adalah cara untuk memanipulasi lalu lintas berdasarkan pemicu tertentu. Dengan alat ini kita dapat membuat aturan penyeimbangan beban tingkat lanjut yang mungkin tidak dapat dilakukan melalui profil Aplikasi atau layanan lain yang tersedia di Edge Gateway.
- Untuk membuat aturan, buka tab Aturan Aplikasi di penyeimbang.
- Pilih nama, skrip yang akan menggunakan aturan tersebut, dan klik Simpan.
- Setelah aturan dibuat, kita perlu mengedit Server Virtual yang sudah dikonfigurasi.
- Di tab Advanced, tambahkan aturan yang kita buat.
Pada contoh di atas kami mengaktifkan dukungan tlsv1.
Beberapa contoh lagi:
Alihkan lalu lintas ke kumpulan lain.
Dengan skrip ini kita dapat mengarahkan lalu lintas ke pool penyeimbang lain jika pool utama sedang down. Agar aturan berfungsi, beberapa kumpulan harus dikonfigurasi pada penyeimbang dan semua anggota kumpulan utama harus dalam keadaan tidak aktif. Anda perlu menentukan nama kumpulan, bukan ID-nya.
acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME
Alihkan lalu lintas ke sumber daya eksternal.
Di sini kami mengarahkan lalu lintas ke situs web eksternal jika semua anggota kumpulan utama sedang down.
acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down
Bahkan lebih banyak contoh
Itu saja bagi saya tentang penyeimbang. Jika Anda memiliki pertanyaan, tanyakan, saya siap menjawab.
Sumber: www.habr.com