failover nginx tanpa load balancing

13

Saya mengalami kesulitan mengkonfigurasi nginx.

Saya menggunakan nignx sebagai proxy terbalik. Saya ingin mengirim semua permintaan saya ke server pertama saya. Jika server pertama mati, saya ingin mengirim permintaan ke server kedua.

Singkatnya, bagaimana saya bisa memiliki solusi failover tanpa load balancing?

Serhat
sumber

Jawaban:

13

Yang Anda inginkan adalah pengaturan + pasif aktif. Berikut ini cuplikan nginx conf untuk membuat Anda aktif:

upstream backend {
    server 1.2.3.4:80 fail_timeout=5s max_fails=3;
    server 4.5.6.7:80 backup;
}

server {
    listen 80;
    server_name whatevs.com;

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

Jadi, 'normal', semua permintaan akan masuk ke host 1.2.3.4. Jika kami mendapatkan tiga kegagalan di kotak itu, maka 4.5.6.7 akan mengambil alih.

chrskly
sumber
Bagaimana jika Anda memiliki banyak cadangan?
Benny Bottema
0

Load balancing di nginx sangat mudah, kami hanya mengkonfigurasi nama server dalam lingkup hulu, di mana kami menulis daftar server untuk load balancing.
nginx mendukung algoritma yang berbeda untuk load balancing secara default, round robine, tetapi kami mengonfigurasinya dengan kunci yang berbeda seperti ip_hash ...

http{
 upstream servername{
    ip_hash//for sticky hash
    least_conn//FOR least connection 
    sever localhost:1001;
    sever localhost:1002;
    sever localhost:1003;
}
akshay panwar
sumber
0

Memperluas jawaban chrskly, Anda mungkin ingin mengonfigurasi 3 flag / konfigurasi.

  1. fail_timeout : Total waktu dengan upaya yang gagal dan juga menandai server sebagai BAWAH untuk waktu yang sama. Jika 5 detik, maka akan mencoba upaya max_fail dalam 5 detik dan jika masih gagal, tandai server itu BAWAH selama 5 detik.
  2. max_fail : Jumlah percobaan maksimum
  3. proxy_connect_timeout : Jumlah waktu untuk menunggu koneksi.

Dalam contoh GRPC berikut, jika server utama tidak dapat terhubung dalam 7 detik, kemudian beralih ke cadangan dan tandai server utama turun selama 6000s:

upstream grpcservers {
    server 192.168.0.XX:9997 fail_timeout=6000s max_fails=1;  # After 1 fail in 6000s, Main server is marked unavailable for 6000s.
    server 192.168.0.XX:9999 backup;
        } 
location / {
            grpc_pass grpc://grpcservers;
            grpc_connect_timeout 7s;  # If conn cant be made in 7sec, switch to backup
        }

Prakhar Pandey
sumber