yük dengeleme olmadan nginx yük devretme


13

Nginx yapılandırmasında sorun yaşıyorum.

Nignx'i ters proxy olarak kullanıyorum. Tüm taleplerimi ilk sunucuma göndermek istiyorum. İlk sunucu kapalıysa, ikinci sunucuya istek göndermek istiyorum.

Kısacası, yük dengeleme olmadan yük devretme çözümüne nasıl sahip olabilirim?

Yanıtlar:


13

İstediğiniz aktif + pasif kurulum. İşte size bir örnek nginx conf snippet'i:

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;
    }
}

Dolayısıyla, 'normal' olarak, tüm istekler ana bilgisayar 1.2.3.4'e gider. Bu kutuda üç hata alırsak, 4.5.6.7 devreye girer.


Birden fazla yedeklemeniz varsa ne olur?
Benny Bottema

0

Nginx'te yük dengeleme çok kolaydır, sunucu adlarını yük dengeleme için sunucu listesi yazdığımız yukarı akış kapsamında yapılandırırız.
nginx varsayılan olarak yük dengeleme için farklı algoritmayı destekler yuvarlak robine, ancak ip_hash gibi farklı anahtarlarla yapılandırıyoruz ...

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

0

Chrskly'nin cevabını genişleterek 3 bayrak / yapılandırma yapılandırmak isteyebilirsiniz.

  1. fail_timeout : Başarısız denemelerin toplam süresi ve aynı zamanda sunucuyu DOWN olarak işaretleyin. 5 saniye sonra, 5 saniye içinde max_fail girişimlerini deneyecek ve hala başarısız olursa, sunucuyu 5 saniye boyunca AŞAĞI olarak işaretleyin.
  2. max_fail : Maksimum deneme sayısı
  3. proxy_connect_timeout : Bir bağlantı için beklenecek süre.

Aşağıdaki GRPC örneğinde, ana sunucu 7 saniye içinde bağlanamazsa, yedeklemeye geçin ve ana sunucuyu 6000 saniye kapalı olarak işaretleyin:

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
        }

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.