लोड संतुलन के बिना nginx विफलता


13

मुझे nginx को कॉन्फ़िगर करने में समस्या हो रही है।

मैं एक रिवर्स प्रॉक्सी के रूप में nignx का उपयोग कर रहा हूं। मैं अपने पहले सर्वर को अपने सभी अनुरोध भेजना चाहता हूं। यदि पहला सर्वर डाउन है, तो मैं दूसरे सर्वर को अनुरोध भेजना चाहता हूं।

संक्षेप में, लोड संतुलन के बिना मेरे पास एक विफलता समाधान कैसे हो सकता है?

जवाबों:


13

आप जो चाहते हैं वह एक सक्रिय + निष्क्रिय सेटअप है। यहाँ एक उदाहरण है nginx conf स्निपेट आपको पाने के लिए:

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

इसलिए, 'सामान्य रूप से', सभी अनुरोध 1.2.3.4 की मेजबानी के लिए जाएंगे। अगर हमें उस बॉक्स में तीन विफलताएं मिलती हैं, तो 4.5.6.7 पर कब्जा कर लेगा।


यदि आपके पास कई बैकअप हैं तो क्या होगा?
बेनी बोटेमा

0

नगीनक्स में लोड संतुलन बहुत आसान है हम केवल सर्वर नामों को अपस्ट्रीम दायरे में कॉन्फ़िगर करते हैं, जहां हम लोड संतुलन के लिए सर्वर सूची लिखते हैं।
nginx डिफ़ॉल्ट रूप से राउंड रॉबिन द्वारा लोड संतुलन के लिए अलग एल्गोरिथ्म का समर्थन करता है, लेकिन हम इसे ip_hash जैसी विभिन्न कुंजी के साथ कॉन्फ़िगर करते हैं ...

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

0

Chrskly के उत्तर का विस्तार करते हुए, आप 3 झंडे / कॉन्फिगर कॉन्फ़िगर करना चाह सकते हैं।

  1. fail_timeout : विफल प्रयासों द्वारा कुल समय और उसी समय के लिए DOWN के रूप में सर्वर को भी चिह्नित करें। यदि 5 सेकंड, तो 5 सेकंड में अधिकतम_फेल प्रयास करेगा और यदि अभी भी विफल रहता है, तो उस सर्वर को 5 सेकंड के लिए DOWN के रूप में चिह्नित करें।
  2. max_fail : अधिकतम संख्या में प्रयास
  3. प्रॉक्सी_कनेक्ट_ टाइमआउट : कनेक्शन की प्रतीक्षा करने के लिए समय की मात्रा।

निम्नलिखित जीआरपीसी उदाहरण में, यदि मुख्य सर्वर 7 सेकंड में कनेक्ट नहीं किया जा सकता है, तो बैकअप पर स्विच करें और 6000 के लिए नीचे के रूप में मुख्य सर्वर को चिह्नित करें:

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
        }

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