GNU/Linux >> Belajar Linux >  >> Linux

Penyeimbangan beban Nginx

Penyeimbangan beban antara beberapa aplikasi, backend, dan server adalah bagian dari proses pengoptimalan sumber daya, peningkatan kinerja, dan toleransi kesalahan layanan.

Nginx sebagai penyeimbang beban

Server web ini dianggap sebagai salah satu solusi paling populer dan produktif karena memiliki fungsionalitas dan fleksibilitas terluas saat melakukan konfigurasi. Jadi Nginx sering digunakan untuk load balancing.

Ada beberapa pendekatan dan implementasi, tetapi periksa dulu ketersediaan modul ngx_http_upstream_module:

# nginx -v

Jika tidak ada, maka Anda harus membangun kembali Nginx dengan menambahkan modul ini. Setelah itu, Anda dapat mulai mengkonfigurasi server web. Untuk mengaktifkan penyeimbangan, tambahkan direktif upstream (bagian http) ke file konfigurasi Nginx:

upstream backend  {
  server backend1.somesite.com;
  server backend2.somesite.com;
  server backend3.somesite.com;
}

Sekarang Anda perlu menentukan pengalihan grup yang diperlukan:

server {
  location / {
    proxy_pass  http://backend;
  }
}

Selain itu, Nginx mendukung parameter tambahan dan metode penyeimbangan beban.

Memilih metode penyeimbangan

Nginx menawarkan beberapa metode penyeimbangan beban.

Permainan round-robin

Secara default, server web mendistribusikan permintaan secara merata di antara backend (tetapi dengan mempertimbangkan bobot akun). Ini adalah metode standar di Nginx, jadi tidak ada arahan penyertaan.

koneksi_paling kecil

Permintaan pertama-tama dikirim ke backend dengan jumlah koneksi aktif paling sedikit (tetapi mempertimbangkan bobot akun):

upstream backend {
    least_conn;

    server backend1.somesite.com;
    server backend2.somesite.com;
}

Hash dan hash IP

Dengan menggunakan metode ini, Anda dapat membuat semacam koneksi persisten antara klien dan backend. Untuk setiap permintaan, Nginx menghitung hash yang terdiri dari teks, variabel server web, atau kombinasinya, lalu memetakannya ke backend:

upstream backend {
   hash $scheme$request_uri;

   server backend1.somesite.com;
   server backend2.somesite.com;
   server backend3.somesite.com;
}

Hash IP hanya berfungsi dengan HTTP, ini adalah opsi yang telah ditentukan di mana hash dihitung berdasarkan alamat IP klien:

upstream backend {
   ip_hash;

   server backend1.somesite.com;
   server backend2.somesite.com;
   server backend3.somesite.com;
}

Berat backend

Jika backend tertentu pada tumpukan lebih kuat daripada yang lain, bobot akan berguna:

upstream backend {
    server backend1.somesite.com weight=10;
    server backend2.somesite.com weight=5;
    server backend3.somesite.com;
    server 192.0.0.1 backup;
}

Dalam contoh ini, dari setiap 16 permintaan, backend pertama akan memproses 10, kedua 5, dan ketiga 1. Dalam hal ini, server cadangan akan menerima permintaan hanya jika tiga backend utama tidak tersedia.

Pemantauan

Jika Nginx yakin bahwa server backend tidak tersedia, untuk sementara Nginx berhenti mengirim permintaan ke sana. Dua arahan bertanggung jawab untuk ini:

  • max_fails — menyetel jumlah upaya koneksi yang gagal, setelah itu backend dianggap tidak tersedia untuk waktu tertentu;
  • fail_timeout — waktu selama server dianggap tidak tersedia.

Parameternya terlihat seperti ini:

upstream backend {                
    server backend1.somesite.com;
    server backend2.somesite.com max_fails=3 fail_timeout=30s;
    server backend3.somesite.com max_fails=2;
}

Kesimpulan

Memilih metode penyeimbangan yang tepat akan memungkinkan untuk mendistribusikan beban secara lebih merata. Jangan lupakan bobot backend, pemantauan, dan toleransi kesalahan server.


Linux
  1. Cara mengonfigurasi penyeimbang beban HAProxy

  2. Instal Nginx di Windows

  3. Nginx Whitelist IP tertentu

  1. Cara Mengarahkan HTTP ke HTTPS di Nginx

  2. nginx - 413 Permintaan Entitas Terlalu Besar

  3. Cara Memeriksa Beban Server Anda di Linux

  1. Cara Meng-host Situs Web di Server Web NGINX

  2. Cara Mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 8

  3. Setup Load Balancing dengan HAProxy, Nginx dan Keepalive di Linux