Cara Menggunakan Nginx Sebagai Pengimbang Beban HTTP di Linux

Cara Menggunakan Nginx Sebagai Pengimbang Beban HTTP di Linux

Ketika datang untuk menubuhkan beberapa pelayan aplikasi untuk redundansi, mengimbangi beban adalah mekanisme yang biasa digunakan untuk mengedarkan permintaan perkhidmatan masuk atau trafik rangkaian yang efisien di seluruh sekumpulan pelayan back-end.

Pengimbangan beban mempunyai beberapa kelebihan termasuk peningkatan ketersediaan permohonan melalui redundansi, peningkatan kebolehpercayaan dan skalabilitas (lebih banyak pelayan dapat ditambah dalam campuran ketika peningkatan lalu lintas). Ia juga membawa prestasi aplikasi yang lebih baik dan banyak manfaat lain.

Baca yang disyorkan: Panduan Terbaik untuk Mengamankan, Mengeraskan dan Meningkatkan Prestasi Pelayan Web Nginx

Nginx boleh digunakan sebagai cekap HTTP Load Balancer Untuk mengedarkan trafik rangkaian masuk dan beban kerja di kalangan sekumpulan pelayan aplikasi, dalam setiap kes mengembalikan respons dari pelayan yang dipilih kepada klien yang sesuai.

Kaedah pengimbangan beban yang disokong oleh Nginx adalah:

  • Robin pusingan - yang mengedarkan permintaan kepada pelayan aplikasi dalam fesyen bulat-robin. Ia digunakan secara lalai apabila tiada kaedah ditentukan,
  • paling tidak disambungkan - memberikan permintaan seterusnya kepada pelayan yang kurang sibuk (pelayan dengan bilangan sambungan aktif paling sedikit),
  • IP-Hash - Di mana fungsi hash digunakan untuk menentukan pelayan apa yang harus dipilih untuk permintaan seterusnya berdasarkan alamat IP klien. Kaedah ini membolehkan ketekunan sesi (mengikat pelanggan ke pelayan aplikasi tertentu).

Selain itu, anda boleh menggunakan berat pelayan untuk mempengaruhi Nginx algoritma mengimbangi beban pada tahap yang lebih maju. Nginx juga menyokong pemeriksaan kesihatan untuk menandakan pelayan sebagai gagal (untuk jumlah masa yang boleh dikonfigurasikan, lalai adalah 10 detik) Jika responsnya gagal dengan ralat, dengan itu mengelakkan memilih pelayan itu untuk permintaan masuk berikutnya untuk beberapa waktu.

Panduan praktikal ini menunjukkan cara menggunakan Nginx sebagai HTTP Load Balancer untuk mengedarkan permintaan pelanggan yang masuk antara dua pelayan masing -masing mempunyai contoh aplikasi yang sama.

Untuk tujuan ujian, setiap contoh permohonan adalah dilabelkan (pada antara muka pengguna) untuk menunjukkan pelayan yang sedang berjalan.

Persediaan Persekitaran Ujian

Load Balancer: 192.168.58.7 Pelayan Aplikasi 1: 192.168.58.5 Pelayan Aplikasi 2: 192.168.58.8 

Pada setiap pelayan aplikasi, setiap contoh aplikasi dikonfigurasikan untuk diakses menggunakan domain Tecmintapp.lan. Dengan mengandaikan ini adalah domain berdaftar sepenuhnya, kami akan menambah yang berikut dalam tetapan DNS.

Rekod @ 192.168.58.7 

Rekod ini memberitahu permintaan pelanggan di mana domain harus mengarahkan ke, dalam kes ini, beban pengimbang (192.168.58.7). DNS A Rekod hanya menerima nilai IPv4. Sebagai alternatif, /etc/hos Fail pada mesin klien juga boleh digunakan untuk tujuan ujian, dengan entri berikut.

192.168.58.7 Tecmintapp.lan 

Menyediakan pengimbangan beban nginx di linux

Sebelum menyediakan pengimbangan beban nginx, anda mesti memasang Nginx di pelayan anda menggunakan pengurus pakej lalai untuk pengedaran anda seperti yang ditunjukkan.

$ sudo apt memasang nginx [on Debian/Ubuntu] $ sudo yum memasang nginx [on Centos/RHEL] 

Seterusnya, buat fail blok pelayan yang dipanggil /etc/nginx/conf.D/LoadBalancer.Conf (Beri nama pilihan anda).

$ sudo vi/etc/nginx/conf.D/LoadBalancer.Conf 

Kemudian salin dan tampal konfigurasi berikut ke dalamnya. Konfigurasi ini mungkir ke robin bulat kerana tiada kaedah pengimbangan beban ditakrifkan.

 Backend Hulu Server 192.168.58.5; pelayan 192.168.58.8;  pelayan Dengar 80 default_server; Dengar [::]: 80 default_server; server_name tecmintapp.LAN; lokasi / proxy_redirect off; proxy_set_header x-real-ip $ remote_addr; proxy_set_header x-forward-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_pass http: // backend;  

Dalam konfigurasi di atas, proxy_pass Arahan (yang harus ditentukan di dalam lokasi, / dalam kes ini) digunakan untuk menyampaikan permintaan kepada pelayan proksi HTTP yang dirujuk menggunakan backend perkataan, di Arahan hulu (digunakan untuk menentukan sekumpulan pelayan). Juga, permintaan akan diedarkan di antara pelayan menggunakan mekanisme pengimbangan bulat berwajaran.

Untuk menggunakan mekanisme sambungan paling sedikit, gunakan konfigurasi berikut

backend hulu paling tidak_conn; pelayan 192.168.58.5; pelayan 192.168.58.8;  

Dan untuk membolehkan ip_hash Mekanisme Kegigihan Sesi, Penggunaan:

Backend hulu ip_hash; pelayan 192.168.58.5; pelayan 192.168.58.8;  

Anda juga boleh mempengaruhi keputusan mengimbangi beban menggunakan pelayan Berat. Menggunakan konfigurasi berikut, jika terdapat enam permintaan dari pelanggan, pelayan aplikasi 192.168.58.5 akan diberikan 4 permintaan dan 2 akan pergi 192.168.58.8.

Backend Hulu Server 192.168.58.5 berat = 4; pelayan 192.168.58.8;  

Simpan fail dan keluar. Kemudian pastikan struktur konfigurasi nginx betul selepas menambahkan perubahan baru -baru ini, dengan menjalankan arahan berikut.

$ sudo nginx -t 

Sekiranya konfigurasi adalah OK, mulakan semula dan membolehkan perkhidmatan nginx menggunakan perubahan.

$ sudo systemctl mulakan semula nginx $ sudo systemctl enable nginx 

Menguji pengimbangan beban nginx di linux

Untuk menguji Nginx memuatkan keseimbangan, buka penyemak imbas web dan gunakan alamat berikut untuk menavigasi.

http: // tecmintapp.lan 

Sebaik sahaja antara muka laman web dimuatkan, perhatikan contoh aplikasi yang telah dimuatkan. Kemudian terus menyegarkan halaman. Pada satu ketika, aplikasi harus dimuatkan dari pelayan kedua yang menunjukkan pengimbangan beban.

Periksa pengimbangan beban nginx di linux

Anda baru sahaja belajar bagaimana untuk menubuhkan Nginx Sebagai pengimbang beban HTTP di Linux. Kami ingin mengetahui pemikiran anda mengenai panduan ini, dan terutama mengenai menggunakan Nginx sebagai pengimbang beban, melalui borang maklum balas di bawah. Untuk maklumat lanjut, lihat dokumentasi Nginx mengenai menggunakan NGINX sebagai pengimbang beban HTTP.