nginx otomatik yük devretme yük dengeleme


29

Yük dengeleme için nginx ve NginxHttpUpstreamModule kullanıyorum. Benim yapılandırmam çok basit:

upstream lb {
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

server {
    listen  89;
    server_name localhost;

    location / {
            proxy_pass      http://lb;
            proxy_redirect  off;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Ancak bu yapılandırmada, 2 arka uç sunucusundan biri devre dışı kaldığında, nginx yine de isteği kendisine yönlendiriyor ve zamanın yarısında zaman aşımına uğruyor :(

Nginx'in isteği, indirilmiş bir sunucu algıladığında isteği başka bir sunucuya otomatik olarak yönlendirmesi için bir çözüm var mı.

Teşekkür ederim.

Yanıtlar:


33

Bunun nedeni, nginx'in yukarı akışın aşağı olduğunu tespit etmemesi çünkü aynı makinede olmasıdır.

Aradığınız seçenekler: proxy_next_upstream ve proxy_connect_timeout .

Bunu dene:

location / {
        proxy_pass              http://lb;
        proxy_redirect          off;
        proxy_next_upstream     error timeout invalid_header http_500;
        proxy_connect_timeout   2;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

Tamamlanmamış bir Apache / PHP kurulumuyla (eksik PEAR kitaplığı dosyaları) http 500 hatalarını atıyordum. proxy_next_upstream sadece diğer makinede tekrar denedi - bu Tamam'a geri döndü.
Alister Bulman

5
Proxy_redirect neden kapalı?
Seun Osewa

2

Hey, lütfen vikiyi görün: http://wiki.nginx.org/NginxHttpUpstreamModule#server

Temel olarak bir arıza tespit edilirse, arka uç x saniye boyunca aşağı olarak işaretlenir ve tekrar denenir. Bu yüzden, bağlantıları görmeye devam ederseniz, muhtemelen arka ucun kullanılabilir olup olmadığını kontrol etmeye devam eden nginx olur.

Bununla birlikte, yukarı akış bloğundaki bir sonraki girişi denemeli, bu nedenle yalnızca bir tanesi kapalıysa arka uçların mevcut olmadığını görmemelisiniz.

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.