nginx प्रॉक्सी पुन: प्रयास कर रहा है जबकि बैकएंड पुनः आरंभ हो रहा है


16

Nginx 502 देता है जबकि बैकएंड फिर से शुरू हो रहा है। मैं M सेकंड देरी से Nginx प्रॉक्सी रिट्री एन बार कैसे कर सकता हूं? वहाँ एक प्लगइन या कुछ और है?

जवाबों:


5

मैंने पाया कि यदि आप एक ही बैकेंड के सैकड़ों उदाहरण निर्दिष्ट करते हैं, तो निग्नेक्स ने ~ 2 सेकंड का समय निकाल लिया।

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

(.... एर, आवश्यकतानुसार दोहराएं!)

हां, एक भयावह कीचड़ - लेकिन यह तप की डिग्री को जोड़ता है ...

इससे भी बदतर, आप उपयोग कर सकते हैं:

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

मान लें कि Nginx पोर्ट 80 पर चल रहा है, तो यह Nginx के आसपास के अनुरोध को स्थानीय स्तर पर लगातार लूप करने की कोशिश करेगा: 8080 तालाब। यानी शून्य सेकंड की देरी के साथ अनंत (?) की संख्या।

मैं अब अपने गद्देदार सेल में वापस आ जाऊंगा ...।


एक पुनरावर्ती लूप में दूसरा दृष्टिकोण परिणाम नहीं देगा और सर्वर को क्रैश करेगा?
सीन ऑसेवा

@ सीनूसेवा यह काफी हद तक इस बात पर निर्भर करता है कि बैकएंड का जवाब देने में कितना समय लगता है, लेकिन हाँ, यह किसी बिंदु पर अतिप्रवाह करने वाला है।
ओली

2

यदि आपके नगीनेक्स इंस्टॉलेशन में लुआ सपोर्ट है तो आप स्लीप मेथड के साथ कुछ समय के लिए क्लाइंट पर पकड़ बना सकते हैं। ऑपरेशन गैर-अवरुद्ध है और कार्यकर्ता को लॉक नहीं करता है। ध्यान रखें कि उपयोगकर्ता को असीम रूप से नहीं रखा जा सकता है क्योंकि कुछ अन्य नेटवर्क से संबंधित सॉकेट / फ़ायरवॉल टाइमआउट अंततः हो सकते हैं।

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

फिर अपनी अपस्ट्रीम सूची में आपको क्लाइंट को रखने के लिए बैकअप के रूप में उपरोक्त सर्वर को जोड़ना होगा।

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
}

और यह आपके अनुमानित स्थान विनिर्देश में शामिल होना चाहिए:

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

luaUbuntu 17.04 रन पर नगनेक्स के लिए मॉड्यूल स्थापित करने के लिए:sudo apt-get install libnginx-mod-http-lua
यूजीन माला

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.