Cara menggunakan nginx sebagai penyeimbang beban http di linux

Cara menggunakan nginx sebagai penyeimbang beban http di linux

Ketika datang untuk menyiapkan beberapa server aplikasi untuk redundansi, penyeimbangan beban adalah mekanisme yang umum digunakan untuk secara efisien mendistribusikan permintaan layanan yang masuk atau lalu lintas jaringan di seluruh kelompok server back-end.

Balancing beban memiliki beberapa keunggulan termasuk peningkatan ketersediaan aplikasi melalui redundansi, peningkatan keandalan dan skalabilitas (lebih banyak server dapat ditambahkan dalam campuran ketika lalu lintas meningkat). Ini juga menyebabkan peningkatan kinerja aplikasi dan banyak manfaat lainnya.

Direkomendasikan baca: Panduan utama untuk mengamankan, mengeras, dan meningkatkan kinerja Nginx Web Server

Nginx dapat digunakan sebagai yang efisien HTTP Load Balancer Untuk mendistribusikan lalu lintas jaringan yang masuk dan beban kerja di antara sekelompok server aplikasi, dalam setiap kasus mengembalikan respons dari server yang dipilih ke klien yang sesuai.

Metode penyeimbangan beban didukung oleh Nginx adalah:

  • Round-robin - yang mendistribusikan permintaan ke server aplikasi dengan cara round-robin. Itu digunakan secara default ketika tidak ada metode yang ditentukan,
  • Terkecil - Menetapkan permintaan berikutnya ke server yang kurang sibuk (server dengan jumlah koneksi aktif paling sedikit),
  • IP-Hash - Di mana fungsi hash digunakan untuk menentukan server apa yang harus dipilih untuk permintaan berikutnya berdasarkan alamat IP klien. Metode ini memungkinkan untuk kegigihan sesi (ikat klien ke server aplikasi tertentu).

Selain itu, Anda dapat menggunakan bobot server untuk mempengaruhi Nginx algoritma penyeimbangan beban pada tingkat yang lebih maju. Nginx juga mendukung pemeriksaan kesehatan untuk menandai server sebagai gagal (untuk jumlah waktu yang dapat dikonfigurasi, default adalah 10 detik) Jika responsnya gagal dengan kesalahan, maka menghindari memilih server itu untuk permintaan masuk berikutnya untuk beberapa waktu.

Panduan Praktis ini menunjukkan cara menggunakan Nginx sebagai HTTP Load Balancer untuk mendistribusikan permintaan klien yang masuk antara dua server masing -masing memiliki instance dari aplikasi yang sama.

Untuk tujuan pengujian, setiap contoh aplikasi berlabel (pada antarmuka pengguna) untuk menunjukkan server yang sedang berjalan.

Pengaturan Lingkungan Pengujian

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

Di setiap server aplikasi, setiap instance aplikasi dikonfigurasi untuk diakses menggunakan domain Tecmintapp.lan. Dengan asumsi ini adalah domain yang terdaftar penuh, kami akan menambahkan yang berikut dalam pengaturan DNS.

Rekor @ 192.168.58.7 

Catatan ini memberi tahu permintaan klien di mana domain harus mengarahkan, dalam hal ini, Load Balancer (192.168.58.7). DNS A Catatan hanya menerima nilai IPv4. Atau, /etc/host File pada mesin klien juga dapat digunakan untuk tujuan pengujian, dengan entri berikut.

192.168.58.7 Tecmintapp.lan 

Mengatur Nginx Load Balancing di Linux

Sebelum menyiapkan nginx load balancing, Anda harus menginstal Nginx di server Anda menggunakan manajer paket default untuk distribusi Anda seperti yang ditunjukkan.

$ sudo apt install nginx [on Debian/Ubuntu] $ sudo yum menginstal nginx [on Centos/rhel] 

Selanjutnya, buat file blok server dipanggil /etc/nginx/conf.D/LoadBalancer.conf (Berikan nama pilihan Anda).

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

Kemudian salin dan tempel konfigurasi berikut ke dalamnya. Default konfigurasi ini untuk round-robin karena tidak ada metode penyeimbang beban yang didefinisikan.

 Backend hulu server 192.168.58.5; Server 192.168.58.8;  server listen 80 default_server; Dengarkan [::]: 80 default_server; Server_name Tecmintapp.lan; Lokasi / proxy_redirect off; proxy_set_header x-real-ip $ remote_addr; proxy_set_header X-forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_pass http: // backend;  

Dalam konfigurasi di atas, proxy_pass Petunjuk (yang harus ditentukan di dalam suatu lokasi, / Dalam hal ini) digunakan untuk meneruskan permintaan ke server proksi http yang dirujuk menggunakan kata backend, di Petunjuk hulu (Digunakan untuk mendefinisikan sekelompok server). Juga, permintaan akan didistribusikan di antara server menggunakan mekanisme penyeimbang round-robin tertimbang.

Untuk menggunakan mekanisme koneksi paling sedikit, gunakan konfigurasi berikut

hulu backend level_conn; Server 192.168.58.5; Server 192.168.58.8;  

Dan untuk mengaktifkan ip_hash Mekanisme Kegigihan Sesi, Gunakan:

hulu backend ip_hash; Server 192.168.58.5; Server 192.168.58.8;  

Anda juga dapat mempengaruhi keputusan penyeimbang beban menggunakan server bobot. Menggunakan konfigurasi berikut, jika ada enam permintaan dari klien, server aplikasi 192.168.58.5 akan ditugaskan 4 permintaan dan 2 akan pergi 192.168.58.8.

Backend hulu server 192.168.58.5 berat = 4; Server 192.168.58.8;  

Simpan file dan keluar. Kemudian pastikan struktur konfigurasi nginx benar setelah menambahkan perubahan terbaru, dengan menjalankan perintah berikut.

$ sudo nginx -t 

Jika konfigurasinya ok, restart dan aktifkan layanan Nginx untuk menerapkan perubahan.

$ sudo systemctl restart nginx $ sudo systemctl aktifkan nginx 

Menguji Balancing Load Nginx di Linux

Untuk menguji Nginx Muat penyeimbang, buka browser web dan gunakan alamat berikut untuk menavigasi.

http: // tecmintapp.lan 

Setelah antarmuka situs web memuat, perhatikan contoh aplikasi yang dimuat. Lalu terus menyegarkan halaman. Di beberapa titik, aplikasi harus dimuat dari server kedua yang menunjukkan keseimbangan beban.

Periksa Nginx Load Balancing di Linux

Anda baru saja belajar cara mengatur Nginx Sebagai penyeimbang beban HTTP di Linux. Kami ingin mengetahui pemikiran Anda tentang panduan ini, dan terutama tentang mempekerjakan Nginx sebagai penyeimbang beban, melalui formulir umpan balik di bawah ini. Untuk informasi lebih lanjut, lihat dokumentasi NGINX tentang penggunaan Nginx sebagai penyeimbang beban HTTP.