Wolkra लोड बैलेंसर आने वाले ट्रैफ़िक को कई सर्वरों में बांटता है और उसे सिर्फ़ उन टारगेट तक भेजता है जो अपने हेल्थ चेक पास करते हैं। यह लेयर 4 (TCP) और HTTP सर्विस सपोर्ट करता है, और टारगेट सर्वर, लेबल सिलेक्टर या IP एड्रेस हो सकते हैं, जिनमें वे सर्वर भी शामिल हैं जो सिर्फ़ प्राइवेट नेटवर्क पर हैं।
इसकी ज़रूरत कब होती है
- क्षमता या रिडंडेंसी के लिए दो या ज़्यादा ऐप सर्वर।
- बिना डाउनटाइम के डिप्लॉय: एक सर्वर हटाएं, अपडेट करें, वापस लगाएं।
- प्राइवेट सर्वरों के आगे एक स्थिर पब्लिक एंट्री पॉइंट।
लोड बैलेंसर बनाएं
- कंसोल में Load balancers खोलें और Create load balancer चुनें।
- उसे नाम दें, जैसे
web-lb। - चाहें तो उसे किसी प्राइवेट नेटवर्क से जोड़ें, ताकि वह सिर्फ़-प्राइवेट सर्वरों तक पहुंच सके।
- सर्विस (लिसनिंग पोर्ट) जोड़ें।
- टारगेट जोड़ें।
- हेल्थ चेक कॉन्फ़िगर करें।
- उसे बनाएं। पुष्टि करने से पहले कंसोल कीमत दिखाता है।
सर्विस
एक सर्विस लोड बैलेंसर के किसी पोर्ट को टारगेट के किसी पोर्ट से जोड़ती है।
| प्रकार | किसके लिए | उदाहरण |
|---|---|---|
| TCP (लेयर 4) | कोई भी TCP प्रोटोकॉल, TLS पासथ्रू | 443 → 443 |
| HTTP | सादे HTTP ऐप | 80 → 8080 |
हर लिसनिंग पोर्ट के लिए एक सर्विस जोड़ें।
टारगेट
- सर्वर: अलग-अलग सर्वर चुनें।
- लेबल सिलेक्टर: जैसे
role=web। उस लेबल वाले नए सर्वर अपने-आप जुड़ जाते हैं, और जिन सर्वरों से लेबल हटता है वे बाहर हो जाते हैं। यह स्नैपशॉट से या API के ज़रिए बनाए गए सर्वरों के साथ बढ़िया काम करता है। - IP एड्रेस: उन बैकएंड के लिए जिनकी पहचान एड्रेस से होती है।
जब लोड बैलेंसर किसी प्राइवेट नेटवर्क से जुड़ा होता है, तो वह टारगेट तक उनके प्राइवेट एड्रेस से पहुंचता है, इसलिए टारगेट को किसी पब्लिक IP की ज़रूरत ही नहीं होती।
हेल्थ चेक
हेल्थ चेक तय करता है कि किसी टारगेट को ट्रैफ़िक मिलेगा या नहीं। ये कॉन्फ़िगर करें:
- प्रोटोकॉल: TCP (पोर्ट कनेक्शन स्वीकार करता है) या HTTP (कोई पाथ सफलता का स्टेटस लौटाता है)।
- पोर्ट और HTTP के लिए एक पाथ, जैसे
/healthz। - इंटरवल, टाइमआउट और रीट्राई।
Caddy के पीछे एक न्यूनतम हेल्थ एंडपॉइंट:
:8080 {
respond /healthz "ok" 200
reverse_proxy localhost:3000
}
हेल्थ चेक को असली तैयारी दिखानी चाहिए। अगर ऐप को डेटाबेस चाहिए, तो डेटाबेस बंद होने पर /healthz को फ़ेल होने दें, ताकि ट्रैफ़िक किसी स्वस्थ सर्वर पर चला जाए।
HTTPS
HTTPS के लिए पोर्ट 443 पर एक TCP सर्विस जोड़ें और TLS को सर्वरों पर ही टर्मिनेट करें, जैसे Caddy के साथ। तब हर सर्वर को सर्टिफ़िकेट चाहिए; Caddy उसे अपने-आप ला सकता है, या आप उसे सर्वरों के बीच शेयर कर सकते हैं। पोर्ट 80 पर एक TCP या HTTP सर्विस जोड़ें ताकि सर्टिफ़िकेट चैलेंज और रीडायरेक्ट सर्वरों तक पहुंचें। Caddy गाइड सर्वर साइड को कवर करती है, जिसमें फ़ॉरवर्ड किए गए हेडर पर भरोसा करना भी शामिल है।
फ़ायरवॉल
टारगेट पर ऐप्लिकेशन पोर्ट सिर्फ़ वहीं से खोलें जहां से लोड बैलेंसर कनेक्ट करता है: अगर वह किसी प्राइवेट नेटवर्क से जुड़ा है, तो उस नेटवर्क की रेंज से। SSH को हमेशा की तरह सीमित रखें। देखें फ़ायरवॉल।
बिना डाउनटाइम के डिप्लॉय
- सर्वर का लेबल (या सर्वर) टारगेट से हटाएं, या जानबूझकर उसका हेल्थ चेक फ़ेल होने दें।
- मौजूदा कनेक्शन खत्म होने तक इंतज़ार करें।
- ऐप को अपडेट और रीस्टार्ट करें।
- लेबल वापस लगाएं और हेल्थ चेक पास होने तक इंतज़ार करें।
- अगले सर्वर के लिए यही दोहराएं।
जांचें कि यह काम करता है
for i in $(seq 1 6); do curl -s http://203.0.113.20/whoami; echo; done # उदाहरण एड्रेस
अगर हर सर्वर /whoami का जवाब अपने hostname से देता है, तो आपको जवाब बारी-बारी से बदलते दिखेंगे।
बिलिंग
लोड बैलेंसर का बिल सर्वरों की तरह हर शुरू हुए घंटे के हिसाब से बनता है, मासिक कीमत की अधिकतम सीमा के साथ। इनसे गुज़रने वाला ट्रैफ़िक अनमीटर्ड है। देखें कीमतें।
API
लोड बैलेंसर https://api.wolkra.com/v1/load_balancers पर उपलब्ध हैं। देखें API टोकन।
प्रोडक्ट पेज पर और जानकारी: लोड बैलेंसर।
अक्सर पूछे जाने वाले सवाल
लोड बैलेंसर किस तरह का ट्रैफ़िक संभाल सकता है?
किसी भी प्रोटोकॉल के लिए लेयर 4 (TCP) सर्विस, और HTTP सर्विस। दोनों हेल्थ चेक का इस्तेमाल करती हैं ताकि ट्रैफ़िक सिर्फ़ स्वस्थ टारगेट तक जाए।
क्या बिना पब्लिक IP वाले सर्वर टारगेट हो सकते हैं?
हां। लोड बैलेंसर को उसी प्राइवेट नेटवर्क से जोड़ें, फिर वह उस नेटवर्क के ज़रिए सिर्फ़-प्राइवेट सर्वरों तक पहुंच जाता है।
नए सर्वर अपने-आप कैसे जोड़ें?
टारगेट के रूप में लेबल सिलेक्टर इस्तेमाल करें, जैसे role=web। उस लेबल वाला हर सर्वर बनते ही टारगेट बन जाता है।
HTTPS कहां टर्मिनेट होता है?
एक आसान तरीका है पोर्ट 443 पर TCP सर्विस, जो TLS को सीधे आपके सर्वरों तक पास कर देती है, जहां Caddy या कोई दूसरा प्रॉक्सी सर्टिफ़िकेट रखता है।