Arka uç yeniden başlatılırken nginx proxy yeniden denemesi


16

Arka uç yeniden başlatılırken Nginx 502 değerini döndürür. Nginx proxy'nin M saniye gecikmesi ile N kez yeniden denemesini nasıl sağlayabilirim? Bir eklenti veya başka bir şey var mı?

Yanıtlar:


5

Aynı arka ucun yüzlerce örneğini belirttiyseniz, Nginx'in denemeleri bitirmek için ~ 2 saniye sürdüğünü buldum:

    server  localhost:8080 max_fails=0;
    server  localhost:8080 max_fails=0;
    server  localhost:8080 max_fails=0;
    server  localhost:8080 max_fails=0;

(.... er, gerektiği kadar tekrarlayın!)

Evet, korkunç bir çamur - ama bir dereceye kadar azim katıyor ...

Daha da kötüsü şunları kullanabilirsiniz:

    server  localhost:8080 max_fails=0;     
    server  localhost:80 backup;        

Nginx'in 80 numaralı bağlantı noktasında çalıştığını varsayarsak, bu istek localhost: 8080 yanıt verene kadar Nginx çevresinde sürekli döngü oluşturmaya çalışır. Sıfır saniye gecikmesi ile sonsuz sayıda (?) Tekrar deneyin.

Şimdi yastıklı hücreme geri döneceğim ....


İkinci yaklaşım özyinelemeli bir döngüye neden olmaz ve sunucuyu kilitlemez mi?
Mart'ta 17.02'de Osewa Seun

@SeunOsewa Arka ucun yanıt vermesinin ne kadar sürdüğüne bağlı, ancak evet, bir noktada taşacak.
Oli

2

Nginx kurulumunuzda Lua desteği varsa, uyku yöntemiyle bir süre istemcide bekleyebilirsiniz. İşlem engellemiyor ve işçiyi kilitlemiyor. Ağla ilgili diğer bazı soket / güvenlik duvarı zaman aşımları nihayet gerçekleşebileceğinden, kullanıcının sonsuza kadar tutulamayacağını unutmayın.

server {
    listen 8502;
    location / {
        #25 seconds sleep
        content_by_lua_block {
             ngx.sleep(25); 
             ngx.exit(ngx.HTTP_BAD_GATEWAY);
        }
    }
}

Sonra akış yukarı listenizde bir istemciyi tutmak için yukarıdaki sunucuyu yedek olarak eklemeniz gerekir.

upstream backend {
    server 127.0.0.1:3001 fail_timeout=2s; #The backend
    server 127.0.0.1:8502 backup; #Lua holding server in the event backend is restarting
}

Bu, proxy konum belirtiminize dahil edilmelidir:

proxy_read_timeout         30;  #Value must be higher than sleep in Lua
proxy_next_upstream error timeout http_502 http_504;

luasudo apt-get install libnginx-mod-http-lua
Eugene Mala

1

Bildiğim en yakın şey bu proje , ama hiç kullanmadım. Bunu biliyorum vernik belki de gidip bir göz atmak istiyorum denetimi arkayüz etti.

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.