ব্যাকএন্ড পুনরায় চালু হওয়ার সময় এনজিনেক্স প্রক্সি পুনরায় চেষ্টা করুন


16

ব্যাকএন্ড পুনরায় আরম্ভ করার সময় Nginx 502 ফেরত দেয়। আমি এম সেকেন্ড বিলম্বের সাথে এনগিনেক্স প্রক্সি পুনরায় চেষ্টা করব কীভাবে? একটি প্লাগইন বা অন্য কিছু আছে?

উত্তর:


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;        

ধরে নিই যে এনগিনেক্স ৮০ পোর্টে চলমান রয়েছে, এটি লোকজনহস্ট: 8080 সাড়া না দেওয়া পর্যন্ত Nginx এর চারদিকে অনুরোধটি ক্রমাগত লুপ করার চেষ্টা করবে। অর্থাৎ শূন্য সেকেন্ড দেরি করে একটি অসীম (?) সংখ্যার বার চেষ্টা করুন।

আমি এখন আমার প্যাডেড সেলে ফিরে যাব ...


দ্বিতীয় পদ্ধতির ফলে পুনরাবৃত্ত হওয়া লুপ এবং সার্ভার ক্র্যাশ হবে না?
Seun Osewa

@ সুনোসোয়া এটি ব্যাকএন্ডের প্রতিক্রিয়া জানাতে কতক্ষণ সময় নেয় তার উপর অনেকাংশে নির্ভর করে তবে হ্যাঁ, এটি কোনও পর্যায়ে উপচে পড়ছে।
ওলি

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;

luaওবুন্টুতে 17.04 রান করে এনজিঙ্ক্সে মডিউল ইনস্টল করতে:sudo apt-get install libnginx-mod-http-lua
ইউজিন মালা

1

আমি জানি সবচেয়ে কাছের জিনিসটি এই প্রকল্প , তবে আমি কখনই ব্যবহার করি না। আমি জানি যে বার্নিশের ব্যাকএন্ড চেকিং রয়েছে, সম্ভবত আপনি এটি একবার দেখতে চান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.