पछिल्लो पटक हामीले स्थिर र गतिशील राउटिङको सन्दर्भमा NSX Edge को क्षमताहरूको बारेमा कुरा गरेका थियौं, र आज हामी लोड ब्यालेन्सरसँग सम्झौता गर्नेछौं।
हामीले सेटअप सुरु गर्नु अघि, म तपाईंलाई सन्तुलनका मुख्य प्रकारहरूको बारेमा संक्षिप्त रूपमा सम्झाउन चाहन्छु।
थ्योरी
आजका सबै पेलोड सन्तुलन समाधानहरू प्रायः दुई कोटीहरूमा विभाजित हुन्छन्: मोडेलको चौथो (ट्रान्सपोर्ट) र सातौं (एप्लिकेशन) स्तरहरूमा सन्तुलन।
- ब्यालेन्सर L4 प्राय: यो क्लाइन्ट र उपलब्ध ब्याकएन्डहरूको सेटको बीचमा रहेको मध्य प्रोक्सी हो, जसले TCP जडानहरू समाप्त गर्दछ (अर्थात, स्वतन्त्र रूपमा SYN लाई जवाफ दिन्छ), ब्याकइन्ड चयन गर्दछ र स्वतन्त्र रूपमा SYN पठाउँदै नयाँ TCP सत्र सुरु गर्दछ। यो प्रकार आधारभूत मध्ये एक हो; अन्य विकल्पहरू सम्भव छन्।
- ब्यालेन्सर L7 L4 ब्यालेन्सरको तुलनामा उपलब्ध ब्याकइन्डहरूमा "अधिक परिष्कृत" ट्राफिक वितरण गर्दछ। यसले कुन ब्याकइन्डमा आधारित छनोट गर्ने निर्णय गर्न सक्छ, उदाहरणका लागि, HTTP सन्देशको सामग्री (URL, कुकी, आदि)।
प्रकारको बावजुद, ब्यालेन्सरले निम्न कार्यहरूलाई समर्थन गर्न सक्छ:
- सेवा खोज भनेको उपलब्ध ब्याकएन्डहरूको सेट निर्धारण गर्ने प्रक्रिया हो (स्थिर, DNS, Consul, Etcd, आदि)।
- पत्ता लगाइएका ब्याकइन्डहरूको कार्यक्षमता जाँच गर्दै (HTTP अनुरोध प्रयोग गरेर ब्याकइन्डको सक्रिय "पिङ", TCP जडानहरूमा समस्याहरूको निष्क्रिय पत्ता लगाउने, प्रतिक्रियाहरूमा धेरै 503 HTTP कोडहरूको उपस्थिति, आदि)।
- सन्तुलन आफै (राउन्ड रोबिन, अनियमित चयन, स्रोत आईपी ह्यास, URI)।
- TLS समाप्ति र प्रमाणपत्र प्रमाणिकरण।
- सुरक्षा-सम्बन्धित विकल्पहरू (प्रमाणीकरण, DoS आक्रमण रोकथाम, गति सीमित) र अधिक।
NSX Edge ले दुई लोड ब्यालेन्सर डिप्लोइमेन्ट मोडहरूको लागि समर्थन प्रदान गर्दछ:
प्रोक्सी मोड, वा एक हात। यस मोडमा, NSX Edge ले आफ्नो IP ठेगानालाई स्रोत ठेगानाको रूपमा प्रयोग गर्दछ जब ब्याकएन्डहरू मध्ये एकमा अनुरोध पठाउँछ। यसैले, ब्यालेन्सरले एकै साथ स्रोत र गन्तव्य NAT को कार्य गर्दछ। ब्यालेन्सरबाट पठाइएका सबै ट्राफिकलाई ब्याकइन्डले देख्छ र यसलाई सीधा प्रतिक्रिया दिन्छ। यस्तो योजनामा, ब्यालेन्सर आन्तरिक सर्भरहरूसँग एउटै नेटवर्क खण्डमा हुनुपर्छ।
यो कसरी जान्छ यहाँ छ:
1. प्रयोगकर्ताले एजमा कन्फिगर गरिएको VIP ठेगाना (ब्यालेन्सर ठेगाना) मा अनुरोध पठाउँदछ।
2. Edge ले ब्याकएन्ड मध्ये एउटा चयन गर्छ र VIP ठेगानालाई चयन गरिएको ब्याकइन्डको ठेगानासँग बदलेर गन्तव्य NAT प्रदर्शन गर्छ।
3. Edge ले स्रोत NAT प्रदर्शन गर्दछ, अनुरोध पठाउने प्रयोगकर्ताको ठेगानालाई आफ्नै ठेगानामा बदलेर।
4. प्याकेज चयन गरिएको ब्याकइन्डमा पठाइन्छ।
5. ब्याकइन्डले प्रयोगकर्तालाई सीधै जवाफ दिँदैन, तर किनारामा, किनभने प्रयोगकर्ताको मूल ठेगाना ब्यालेन्सरको ठेगानामा परिवर्तन गरिएको छ।
6. Edge ले प्रयोगकर्तालाई सर्भरको प्रतिक्रिया पठाउँछ।
रेखाचित्र तल छ।
पारदर्शी, वा इनलाइन, मोड। यस परिदृश्यमा, ब्यालेन्सरसँग आन्तरिक र बाह्य नेटवर्कहरूमा इन्टरफेसहरू छन्। एकै समयमा, बाह्य नेटवर्कबाट आन्तरिक नेटवर्कमा कुनै सीधा पहुँच छैन। बिल्ट-इन लोड ब्यालेन्सरले आन्तरिक नेटवर्कमा भर्चुअल मेसिनहरूको लागि NAT गेटवेको रूपमा कार्य गर्दछ।
संयन्त्र निम्नानुसार छ:
1. प्रयोगकर्ताले एजमा कन्फिगर गरिएको VIP ठेगाना (ब्यालेन्सर ठेगाना) मा अनुरोध पठाउँदछ।
2. Edge ले ब्याकएन्ड मध्ये एउटा चयन गर्छ र VIP ठेगानालाई चयन गरिएको ब्याकइन्डको ठेगानासँग बदलेर गन्तव्य NAT प्रदर्शन गर्छ।
3. प्याकेज चयन गरिएको ब्याकइन्डमा पठाइन्छ।
4. ब्याकइन्डले प्रयोगकर्ताको मूल ठेगानाको साथ अनुरोध प्राप्त गर्दछ (स्रोत NAT प्रदर्शन गरिएको थिएन) र यसलाई सीधा प्रतिक्रिया दिन्छ।
5. ट्राफिक फेरि लोड ब्यालेन्सर द्वारा स्वीकार गरिन्छ, किनकि एक इनलाइन योजना मा यो सामान्यतया सर्भर फार्म को लागी पूर्वनिर्धारित गेटवे को रूप मा कार्य गर्दछ।
6. Edge ले स्रोत IP ठेगानाको रूपमा यसको VIP प्रयोग गरी प्रयोगकर्तालाई ट्राफिक पठाउन स्रोत NAT प्रदर्शन गर्दछ।
रेखाचित्र तल छ।
अभ्यास गर्नुहोस्
मेरो परीक्षण बेन्चमा Apache चलिरहेको 3 सर्भरहरू छन्, जुन HTTPS मा काम गर्न कन्फिगर गरिएको छ। Edge ले HTTPS अनुरोधहरूको राउन्ड रोबिन ब्यालेन्सिङ प्रदर्शन गर्नेछ, प्रत्येक नयाँ अनुरोधलाई नयाँ सर्भरमा प्रोक्सी गर्दै।
सुरु गरौं।
NSX Edge द्वारा प्रयोग गरिने SSL प्रमाणपत्र उत्पन्न गर्दै
तपाईं वैध CA प्रमाणपत्र आयात गर्न सक्नुहुन्छ वा स्व-हस्ताक्षर गरिएको प्रयोग गर्न सक्नुहुन्छ। यो परीक्षणको लागि म स्व-हस्ताक्षरित प्रयोग गर्नेछु।
- vCloud निर्देशक इन्टरफेसमा, किनारा सेवा सेटिङहरूमा जानुहोस्।
- प्रमाणपत्र ट्याबमा जानुहोस्। कार्यहरूको सूचीबाट, नयाँ CSR थप्ने चयन गर्नुहोस्।
- आवश्यक क्षेत्रहरू भर्नुहोस् र Keep मा क्लिक गर्नुहोस्।
- नयाँ सिर्जना गरिएको CSR चयन गर्नुहोस् र सेल्फ-साइन CSR विकल्प चयन गर्नुहोस्।
- प्रमाणपत्रको वैधता अवधि चयन गर्नुहोस् र राख्नुहोस् क्लिक गर्नुहोस्
- स्व-हस्ताक्षरित प्रमाणपत्र उपलब्ध सूचीमा देखिन्छ।
एप्लिकेसन प्रोफाइल सेट अप गर्दै
एप्लिकेसन प्रोफाइलहरूले तपाईंलाई नेटवर्क ट्राफिकमा थप पूर्ण नियन्त्रण दिन्छ र यसलाई सरल र प्रभावकारी व्यवस्थापन गर्दछ। तिनीहरू विशिष्ट प्रकारको ट्राफिकको लागि व्यवहार परिभाषित गर्न प्रयोग गर्न सकिन्छ।
- लोड ब्यालेन्सर ट्याबमा जानुहोस् र ब्यालेन्सर सक्षम गर्नुहोस्। यहाँ एक्सेलेरेशन सक्षम गरिएको विकल्पले ब्यालेन्सरलाई L4 को सट्टा छिटो L7 ब्यालेन्सिङ प्रयोग गर्न अनुमति दिन्छ।
- एप्लिकेसन प्रोफाइल सेट गर्नको लागि एप्लिकेसन प्रोफाइल ट्याबमा जानुहोस्। + क्लिक गर्नुहोस्।
- प्रोफाइलको नाम सेट गर्नुहोस् र ट्राफिकको प्रकार चयन गर्नुहोस् जसको लागि प्रोफाइल लागू हुनेछ। मलाई केही प्यारामिटरहरू व्याख्या गरौं।
दृढता - सत्र डेटा भण्डार र ट्र्याक गर्दछ, उदाहरणका लागि: पूलमा कुन विशिष्ट सर्भरले प्रयोगकर्ता अनुरोधलाई सेवा गरिरहेको छ। यसले सुनिश्चित गर्दछ कि प्रयोगकर्ता अनुरोधहरू सत्रको जीवनकाल वा त्यसपछिका सत्रहरूको लागि एउटै पूल सदस्यमा रुट गरिएको छ।
SSL पासथ्रु सक्षम गर्नुहोस् - जब यो विकल्प चयन गरिन्छ, NSX Edge ले SSL बन्द गर्न रोक्छ। यसको सट्टा, समाप्ति सिधै सर्भरहरूमा हुन्छ जुन सन्तुलित भइरहेको छ।
X-Forwarded-For HTTP हेडर घुसाउनुहोस् - तपाईंलाई लोड ब्यालेन्सर मार्फत वेब सर्भरमा जडान हुने ग्राहकको स्रोत IP ठेगाना निर्धारण गर्न अनुमति दिन्छ।
पूल साइड SSL सक्षम गर्नुहोस् - तपाइँलाई निर्दिष्ट गर्न अनुमति दिन्छ कि चयन गरिएको पूलमा HTTPS सर्भरहरू छन्।
- मैले HTTPS ट्राफिकलाई सन्तुलनमा राख्ने भएकोले, मैले पूल साइड SSL सक्षम गर्न आवश्यक छ र भर्चुअल सर्भर सर्टिफिकेटहरू -> सेवा प्रमाणपत्र ट्याबमा पहिले उत्पन्न प्रमाणपत्र चयन गर्नुहोस्।
- त्यस्तै पूल प्रमाणपत्रहरू -> सेवा प्रमाणपत्रहरूका लागि।
हामी सर्भरहरूको पोखरी सिर्जना गर्छौं, जसमा ट्राफिक सन्तुलित पूलहरू हुनेछन्
- पूल ट्याबमा जानुहोस्। + क्लिक गर्नुहोस्।
- हामीले पूलको नाम सेट गर्छौं, एल्गोरिदम (म राउन्ड रोबिन प्रयोग गर्नेछु) र स्वास्थ्य जाँच ब्याकइन्डको लागि निगरानीको प्रकार चयन गर्छौं। पारदर्शी विकल्पले ग्राहकहरूको प्रारम्भिक स्रोत आईपी आन्तरिक सर्भरहरूमा देखिने छ कि छैन भनेर संकेत गर्छ।
- यदि विकल्प असक्षम छ भने, आन्तरिक सर्भरहरूको लागि ट्राफिक ब्यालेन्सरको स्रोत आईपीबाट आउँछ।
- यदि विकल्प सक्षम छ भने, आन्तरिक सर्भरहरूले ग्राहकहरूको स्रोत आईपी देख्छन्। यस कन्फिगरेसनमा, NSX Edge ले पूर्वनिर्धारित गेटवेको रूपमा कार्य गर्नुपर्दछ कि फिर्ता गरिएका प्याकेटहरू NSX Edge मार्फत जान्छन्।
NSX ले निम्न सन्तुलन एल्गोरिदमहरूलाई समर्थन गर्दछ:
- IP_HASH - प्रत्येक प्याकेटको स्रोत र गन्तव्य आईपीको लागि ह्यास प्रकार्यको परिणामहरूमा आधारित सर्भर चयन।
- LEASTCONN - आगमन जडानहरूको सन्तुलन, एक विशेष सर्भरमा पहिले नै उपलब्ध संख्यामा निर्भर गर्दै। नयाँ जडानहरू थोरै जडानहरूसँग सर्भरमा निर्देशित गरिनेछ।
- ROUND_ROBIN - नयाँ जडानहरू प्रत्येक सर्भरमा बारीमा पठाइन्छ, यसलाई तोकिएको वजन अनुसार।
- यूआरआई - URI को बायाँ भाग (प्रश्न चिन्ह अघि) ह्यास गरिएको छ र पूलमा सर्भरहरूको कुल वजनले विभाजन गरिएको छ। नतिजाले कुन सर्भरले अनुरोध प्राप्त गर्छ भन्ने संकेत गर्छ, सबै सर्भरहरू उपलब्ध रहँदासम्म अनुरोध सधैं एउटै सर्भरमा रुट गरिएको छ भनी सुनिश्चित गर्दै।
- HTTPHEADER - एक विशिष्ट HTTP हेडरमा आधारित सन्तुलन, जुन प्यारामिटरको रूपमा निर्दिष्ट गर्न सकिन्छ। यदि हेडर हराइरहेको छ वा कुनै मान छैन भने, ROUND_ROBIN एल्गोरिदम लागू हुन्छ।
- URL - प्रत्येक HTTP GET अनुरोधले तर्कको रूपमा निर्दिष्ट गरिएको URL प्यारामिटर खोज्छ। यदि प्यारामिटरलाई बराबर चिन्ह र मानले पछ्याएको छ भने, मान ह्यास गरिएको छ र चलिरहेको सर्भरहरूको कुल वजनले विभाजित हुन्छ। नतिजाले कुन सर्भरले अनुरोध प्राप्त गर्छ भन्ने संकेत गर्छ। यो प्रक्रिया अनुरोधहरूमा प्रयोगकर्ता ID हरूको ट्र्याक राख्न र सबै सर्भरहरू उपलब्ध रहेसम्म उही प्रयोगकर्ता आईडी सधैं उही सर्भरमा पठाइन्छ भन्ने सुनिश्चित गर्न प्रयोग गरिन्छ।
- सदस्य ब्लकमा, पूलमा सर्भरहरू थप्न + मा क्लिक गर्नुहोस्।
यहाँ तपाइँ निर्दिष्ट गर्न आवश्यक छ:- सर्भर नाम;
- सर्भर आईपी ठेगाना;
- पोर्ट जसमा सर्भरले ट्राफिक प्राप्त गर्नेछ;
- स्वास्थ्य जाँचको लागि पोर्ट (हेल्थ चेक मनिटर);
- वजन - यो प्यारामिटर प्रयोग गरेर तपाइँ एक विशिष्ट पूल सदस्यको लागि प्राप्त ट्राफिकको समानुपातिक मात्रा समायोजन गर्न सक्नुहुन्छ;
- अधिकतम जडानहरू - सर्भरमा जडानहरूको अधिकतम संख्या;
- न्यूनतम जडानहरू - सर्भरले अर्को पूल सदस्यमा फर्वार्ड गर्नु अघि जडानहरूको न्यूनतम संख्या।
यो तीन सर्भरको अन्तिम पूल जस्तो देखिन्छ।
भर्चुअल सर्भर थप्दै
- भर्चुअल सर्भर ट्याबमा जानुहोस्। + क्लिक गर्नुहोस्।
- हामी भर्चुअल सर्भर सक्षम भर्चुअल सर्भर प्रयोग गरेर सक्रिय गर्छौं।
हामी यसलाई एउटा नाम दिन्छौं, पहिले सिर्जना गरिएको अनुप्रयोग प्रोफाइल, पूल चयन गर्नुहोस् र भर्चुअल सर्भरले बाहिरबाट अनुरोधहरू प्राप्त गर्ने IP ठेगाना संकेत गर्नुहोस्। हामीले HTTPS प्रोटोकल र पोर्ट ४४३ निर्दिष्ट गर्छौं।
यहाँ वैकल्पिक प्यारामिटरहरू:
जडान सीमा - भर्चुअल सर्भरले प्रक्रिया गर्न सक्ने एक साथ जडानहरूको अधिकतम संख्या;
जडान दर सीमा (CPS) - प्रति सेकेन्ड नयाँ आगमन अनुरोधहरूको अधिकतम संख्या।
यसले ब्यालेन्सरको कन्फिगरेसन पूरा गर्दछ; तपाइँ यसको कार्यक्षमता जाँच गर्न सक्नुहुन्छ। सर्भरहरूसँग एउटा साधारण कन्फिगरेसन छ जसले तपाईंलाई पूलबाट कुन सर्भरले अनुरोधलाई प्रशोधन गर्यो भनेर बुझ्न अनुमति दिन्छ। सेटअपको क्रममा, हामीले राउन्ड रोबिन ब्यालेन्सिङ एल्गोरिदम छनोट गर्यौं, र प्रत्येक सर्भरको लागि वजन प्यारामिटर एक बराबर छ, त्यसैले प्रत्येक पछिको अनुरोध पूलबाट अर्को सर्भरद्वारा प्रशोधन गरिनेछ।
हामी ब्राउजरमा ब्यालेन्सरको बाह्य ठेगाना प्रविष्ट गर्छौं र हेर्नुहोस्:
पृष्ठ रिफ्रेस गरेपछि, अनुरोध निम्न सर्भरद्वारा प्रशोधन गरिनेछ:
र फेरि - पूलबाट तेस्रो सर्भर जाँच गर्न:
जाँच गर्दा, तपाईंले देख्न सक्नुहुन्छ कि Edge ले हामीलाई पठाएको प्रमाणपत्र त्यही हो जुन हामीले सुरुमा उत्पन्न गरेका थियौं।
एज गेटवे कन्सोलबाट ब्यालेन्सर स्थिति जाँच गर्दै। यो गर्न, प्रविष्ट गर्नुहोस् सेवा लोडब्यालेन्सर पूल देखाउनुहोस्.
पूलमा सर्भरहरूको स्थिति जाँच गर्न सेवा मनिटर कन्फिगर गर्दै
सेवा मनिटर प्रयोग गरेर हामी ब्याकएन्ड पूलमा सर्भरहरूको स्थिति निगरानी गर्न सक्छौं। यदि अनुरोधको प्रतिक्रिया अपेक्षित भएन भने, सर्भरलाई पूलबाट बाहिर निकाल्न सकिन्छ ताकि यसले कुनै नयाँ अनुरोधहरू प्राप्त गर्दैन।
पूर्वनिर्धारित रूपमा, तीन प्रमाणीकरण विधिहरू कन्फिगर गरिएका छन्:
- TCP मनिटर,
- HTTP मनिटर,
- HTTPS-मोनिटर।
एउटा नयाँ सिर्जना गरौं।
- सेवा निगरानी ट्याबमा जानुहोस्, क्लिक गर्नुहोस् +।
- छान्नुहोस्:
- नयाँ विधिको लागि नाम;
- अनुरोध पठाइने अन्तराल,
- प्रतिक्रिया को प्रतीक्षा समय समाप्त,
- निगरानी प्रकार - GET विधि प्रयोग गरी HTTPS अनुरोध, अपेक्षित स्थिति कोड - 200(OK) र अनुरोध URL।
- यसले नयाँ सेवा मनिटरको सेटअप पूरा गर्दछ; अब हामी यसलाई पूल सिर्जना गर्दा प्रयोग गर्न सक्छौं।
आवेदन नियमहरू सेट अप गर्दै
आवेदन नियमहरू निश्चित ट्रिगरहरूमा आधारित ट्राफिक हेरफेर गर्ने तरिका हो। यस उपकरणको साथ हामी उन्नत लोड सन्तुलन नियमहरू सिर्जना गर्न सक्छौं जुन एज गेटवेमा उपलब्ध अनुप्रयोग प्रोफाइलहरू वा अन्य सेवाहरू मार्फत सम्भव नहुन सक्छ।
- नियम सिर्जना गर्न, ब्यालेन्सरको आवेदन नियम ट्याबमा जानुहोस्।
- नियम प्रयोग गर्ने नाम, स्क्रिप्ट चयन गर्नुहोस् र Keep मा क्लिक गर्नुहोस्।
- नियम सिर्जना भएपछि, हामीले पहिले नै कन्फिगर गरिएको भर्चुअल सर्भरलाई सम्पादन गर्न आवश्यक छ।
- उन्नत ट्याबमा, हामीले बनाएको नियम थप्नुहोस्।
माथिको उदाहरणमा हामीले tlsv1 समर्थन सक्षम गरेका छौं।
केही थप उदाहरणहरू:
ट्राफिकलाई अर्को पोखरीमा रिडिरेक्ट गर्नुहोस्।
यस स्क्रिप्टको साथ हामी ट्राफिकलाई अर्को ब्यालेन्सिङ पूलमा रिडिरेक्ट गर्न सक्छौं यदि मुख्य पोखरी तल छ भने। नियमले काम गर्नको लागि, ब्यालेन्सरमा धेरै पोखरीहरू कन्फिगर गरिनुपर्छ र मुख्य पूलका सबै सदस्यहरू तलको अवस्थामा हुनुपर्छ। तपाईंले पोखरीको नाम निर्दिष्ट गर्न आवश्यक छ, यसको आईडी होइन।
acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME
ट्राफिकलाई बाह्य स्रोतमा रिडिरेक्ट गर्नुहोस्।
यहाँ हामी ट्राफिकलाई बाह्य वेबसाइटमा रिडिरेक्ट गर्छौं यदि मुख्य पूलका सबै सदस्यहरू तल छन्।
acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down
अझ धेरै उदाहरणहरू
यो मेरो लागि ब्यालेन्सरको बारेमा हो। यदि तपाइँसँग कुनै प्रश्नहरू छन् भने, सोध्नुहोस्, म जवाफ दिन तयार छु।
स्रोत: www.habr.com