नेटवर्क लोड बैलेंसर को टारगेट पूल से क्षेत्रीय बैकएंड सेवाओं पर माइग्रेट करना

1. परिचय

इस गाइड में मौजूदा नेटवर्क लोड बैलेंसर को, टारगेट पूल बैकएंड से रीजनल बैकएंड सेवा में बदलने के निर्देश दिए गए हैं.

आपको इनके बारे में जानकारी मिलेगी

  • क्षेत्रीय बैकएंड सेवाओं के फ़ायदों को समझना
  • टारगेट पूल के साथ नेटवर्क लोड बैलेंसर बनाना
  • टारगेट पूल की पुष्टि करें
  • मैनेज नहीं किए जा रहे इंस्टेंस ग्रुप का इस्तेमाल करके, रीजनल बैकएंड सेवा बनाएं
  • बैकएंड सेवा माइग्रेशन के लिए टारगेट पूल लागू करें
  • बैकएंड सेवाओं की पुष्टि करें

आपको इन चीज़ों की ज़रूरत होगी

  • लोड बैलेंसर इस्तेमाल करने का अनुभव

2. नेटवर्क लोड बैलेंसिंग के लिए क्षेत्रीय बैकएंड सेवाओं की खास जानकारी

नेटवर्क लोड बैलेंसिंग की मदद से, Google Cloud के ग्राहकों के पास एक बेहतरीन टूल है. इसकी मदद से, वे Google Cloud क्षेत्र में वर्चुअल मशीनों के बीच बाहरी ट्रैफ़िक को डिस्ट्रिब्यूट कर सकते हैं. हमारे ग्राहकों के लिए इनकमिंग ट्रैफ़िक को मैनेज करना और लोड बैलेंसर के काम करने के तरीके को कंट्रोल करना आसान बनाने के लिए, हमने हाल ही में नेटवर्क लोड बैलेंसिंग में बैकएंड सेवाओं की सुविधा शामिल की है. इससे हमारे ग्राहकों को उनके डिप्लॉयमेंट के दौरान आसानी से मैनेज करने की सुविधा मिलती है. इससे, उन्हें तेज़ी से आगे बढ़ने का मौका मिलता है. साथ ही, उनकी परफ़ॉर्मेंस भी बेहतर होती है और वे किसी भी बदलाव के लिए तैयार रहते हैं.

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

3. क्षेत्रीय बैकएंड सेवाओं के फ़ायदे

लोड बैलेंसर के तौर पर, रीजनल बैकएंड सेवा चुनने से आपके एनवायरमेंट के कई फ़ायदे मिलते हैं.

267db35a58145be.png

खास तौर पर, क्षेत्रीय बैकएंड सेवाओं में ये सुविधाएं मिलती हैं:

  • यूनिफ़ाइड हेल्थ चेकिंग के साथ हाई फ़िडेलिटी हेल्थ चेकिंग - रीजनल बैकएंड सेवाओं की मदद से, अब लोड बैलेंसिंग स्वास्थ्य जांच सुविधाओं का पूरा फ़ायदा लिया जा सकता है. इससे, आपको लेगसी एचटीटीपी हेल्थ जांच की समस्याओं से छुटकारा मिल जाता है. नीतियों का पालन करने से जुड़ी वजहों से, नेटवर्क लोड बैलेंसिंग का इस्तेमाल करने वाले ग्राहकों के लिए, आम तौर पर यह जांच, टीसीपी की परफ़ॉर्मेंस की जांच के लिए की जाती है. इसमें कस्टम रिक्वेस्ट और रिस्पॉन्स स्ट्रिंग या एचटीटीपीएस का इस्तेमाल करना ज़रूरी है.
  • फ़ेलओवर ग्रुप में बेहतर तरीके से रहने की काबिलीयत - फ़ेलओवर ग्रुप में, एक इंस्टेंस ग्रुप को प्राइमरी के तौर पर और दूसरे को सेकंडरी के तौर पर तय किया जा सकता है. साथ ही, जब ऐक्टिव ग्रुप में इंस्टेंस की परफ़ॉर्मेंस एक तय थ्रेशोल्ड से कम हो जाती है, तब ट्रैफ़िक पर फ़ेलओवर किया जा सकता है. फ़ेलओवर मैकेनिज़्म पर ज़्यादा कंट्रोल पाने के लिए, कीपलिव्ड या पेसमेकर जैसे एजेंट का इस्तेमाल किया जा सकता है. साथ ही, बैकएंड इंस्टेंस की स्थिति में हुए बदलावों के आधार पर, हेल्थ जांच की जा सकती है या यह जांच की जा सकती है कि सिस्टम सही से काम नहीं कर रहा है.
  • मैनेज किए जा रहे इंस्टेंस ग्रुप की मदद से बढ़ाए जा सकने की सुविधा और ज़्यादा उपलब्धता - क्षेत्रीय बैकएंड सेवाएं, मैनेज किए जा रहे इंस्टेंस ग्रुप का इस्तेमाल बैकएंड के तौर पर करती हैं. अब अपने बैकएंड वर्चुअल मशीन इंस्टेंस के लिए कोई टेंप्लेट तय किया जा सकता है. साथ ही, सीपीयू के इस्तेमाल या मॉनिटर करने वाली अन्य मेट्रिक के आधार पर ऑटो स्केलिंग का फ़ायदा लिया जा सकता है.

ऊपर बताई गई बातों के अलावा, आपको कनेक्शन ओरिएंटेड प्रोटोकॉल (टीसीपी) के लिए कनेक्शन ड्रेनिंग की सुविधा मिलेगी. साथ ही, बड़े डिप्लॉयमेंट के लिए, प्रोग्रामिंग में लगने वाले समय को कम करने की सुविधा भी मिलेगी.

कोडलैब नेटवर्क टोपोलॉजी

इस गाइड में मौजूदा नेटवर्क लोड बैलेंसर को, टारगेट पूल बैकएंड से रीजनल बैकएंड सेवा में बदलने के निर्देश दिए गए हैं.

किसी रीजनल बैकएंड सेवा का इस्तेमाल करने पर, आपको बिना लेगसी हेल्थ जांच (टीसीपी, एसएसएल, एचटीटीपी, एचटीटीपीएस, और एचटीटीपी/2 के लिए), मैनेज किए जा रहे इंस्टेंस ग्रुप, कनेक्शन ड्रेनिंग, और फ़ेलओवर नीति जैसी सुविधाओं का फ़ायदा मिलता है.

इस गाइड में, यहां दिए गए सैंपल टारगेट पूल पर आधारित नेटवर्क लोड बैलेंसर को ट्रांसफ़र करने का तरीका बताया गया है. इससे, आपको इलाके के हिसाब से बैकएंड सेवा का इस्तेमाल करने में मदद मिलेगी

b2ac8a09e53e27f8.png

पहले: टारगेट पूल के साथ नेटवर्क लोड बैलेंसिंग

इसलिए, बैकएंड सेवा के आधार पर नेटवर्क लोड बैलेंसर का डिप्लॉयमेंट कुछ ऐसा दिखेगा.

f628fdad64c83af3.png

बाद में: क्षेत्रीय बैकएंड सेवा के साथ नेटवर्क लोड बैलेंसिंग

इस उदाहरण में हम मान लेते हैं कि आपके पास ट्रेडिशनल टारगेट पूल पर आधारित नेटवर्क लोड बैलेंसर है. इस ज़ोन में दो इंस्टेंस us-central-1a में और दो इंस्टेंस us-central-1c ज़ोन में हैं.

इस तरह के ट्रांज़िशन के लिए, इन चरणों को पूरा करना ज़रूरी है:

  1. अपने टारगेट पूल इंस्टेंस को इंस्टेंस ग्रुप में ग्रुप करें. बैकएंड सेवाएं, सिर्फ़ मैनेज किए जा रहे या मैनेज नहीं किए गए इंस्टेंस ग्रुप के साथ काम करती हैं. ध्यान दें कि किसी टारगेट पूल में रखे जा सकने वाले इंस्टेंस की संख्या की कोई सीमा नहीं होती. हालांकि, इंस्टेंस ग्रुप का एक ज़्यादा से ज़्यादा साइज़ होता है. अगर आपके टारगेट पूल में, इससे ज़्यादा इंस्टेंस की संख्या इससे ज़्यादा है, तो आपको इसके बैकएंड को एक से ज़्यादा इंस्टेंस ग्रुप में बांटना होगा. अगर आपके मौजूदा डिप्लॉयमेंट में बैकअप टारगेट पूल शामिल है, तो उन इंस्टेंस के लिए अलग इंस्टेंस ग्रुप बनाएं. इस इंस्टेंस ग्रुप को फ़ेलओवर ग्रुप के तौर पर कॉन्फ़िगर किया जाएगा.
  2. क्षेत्रीय बैकएंड सेवा बनाएं. अगर आपके डिप्लॉयमेंट में बैकअप टारगेट पूल शामिल है, तो बैकएंड सेवा बनाते समय आपको फ़ेलओवर अनुपात बताना होगा. यह टारगेट पूल के डिप्लॉयमेंट के लिए पहले से कॉन्फ़िगर किए गए फ़ेलओवर अनुपात से मेल खाना चाहिए.
  3. बैकएंड सेवा में इंस्टेंस ग्रुप (पहले बनाए गए) जोड़ें. अगर आपके डिप्लॉयमेंट में कोई बैकअप टारगेट पूल शामिल है, तो उसे बैकएंड सेवा में जोड़ते समय, उससे जुड़े फ़ेलओवर इंस्टेंस ग्रुप को –फ़ेलओवर फ़्लैग के साथ मार्क करें.
  4. फ़ॉरवर्ड करने का वह नियम कॉन्फ़िगर करें जो नई बैकएंड सेवा पर ले जाता हो. आपके पास दो विकल्प हैं:
  • (सुझाया गया) बैकएंड सेवा पर ले जाने के लिए, फ़ॉरवर्ड करने के मौजूदा नियम को अपडेट करें. या
  • बैकएंड सेवा पर ले जाने वाला एक नया फ़ॉरवर्डिंग बनाएं. इसके लिए, आपको लोड बैलेंसर के फ़्रंटएंड के लिए नया आईपी पता बनाना होगा. इसके बाद, डीएनएस सेटिंग में बदलाव करें, ताकि पुराने टारगेट पूल-आधारित लोड बैलेंसर के आईपी पते से नए आईपी पते पर आसानी से स्विच किया जा सके.

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है (ऊपर दिया गया नाम पहले ही ले लिया गया है और यह आपके लिए काम नहीं करेगा!). बाद में, इस कोडलैब को इस कोडलैब में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.

इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

f6ef2b5f13479f3a.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस लैब में आपका सारा काम बस एक ब्राउज़र से किया जा सकता है.

Cloud Shell में लॉग इन करें और अपना प्रोजेक्ट आईडी सेट करें

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

4. VPC नेटवर्क बनाएं

VPC नेटवर्क

Cloud Shell से

gcloud compute networks create network-lb --subnet-mode custom

सबनेट बनाना

Cloud Shell से

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

फ़ायरवॉल के नियम बनाएं

Cloud Shell से

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

मैनेज नहीं किए जा रहे इंस्टेंस बनाना

हर ज़ोन के लिए 2 इंस्टेंस बनाएं, us-central1-a और यूएस-सेंट्रल1-सी

Cloud Shell से इंस्टेंस 1 बनाएं

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

Cloud Shell से इंस्टेंस 2 बनाएं

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

Cloud Shell से इंस्टेंस 3 बनाएं

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

Cloud Shell से इंस्टेंस 4 बनाएं

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

वीएम इंस्टेंस पर बाहरी ट्रैफ़िक को अनुमति देने के लिए, फ़ायरवॉल नियम बनाएं

Cloud Shell से

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

अपने लोड बैलेंसर के लिए स्टैटिक एक्सटर्नल आईपी पता बनाना

Cloud Shell से

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

लेगसी एचटीटीपी हेल्थ जांच वाला संसाधन जोड़ें

Cloud Shell से

gcloud compute http-health-checks create basic-check

5. आगे बढ़ाने के नियम और टारगेट पूल बनाएं

टारगेट पूल बनाना

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

टारगेट पूल में अपने इंस्टेंस जोड़ें, us-central1-a

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

टारगेट पूल में अपने इंस्टेंस जोड़ें, us-central1-c

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

फ़ॉरवर्ड करने का नियम जोड़ना

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

टारगेट पूल के फ़ंक्शन की पुष्टि करें

लोड बैलेंसर → फ़्रंटएंड (www-नियम) चुनकर फ़्रंटएंड आईपी पते की पहचान करें

एक्सटर्नल आईपी पते को ऐक्सेस करने के लिए, अपने वर्कस्टेशन टर्मिनल से कर्ल कमांड का इस्तेमाल करें. साथ ही, टारगेट किए गए चारों इंस्टेंस के हिसाब से, लोड बैलेंसिंग की जांच करें. पुष्टि होने के बाद टर्मिनल को बंद करें.

while true; do curl -m1 IP_ADDRESS; done

6. नेटवर्क लोड बैलेंसर को टारगेट पूल से बैकएंड सेवा पर ले जाना

बैकएंड सेवा की परफ़ॉर्मेंस की एक ही जांच बनाएं

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

टारगेट पूल से मौजूदा इंस्टेंस से इंस्टेंस ग्रुप बनाना

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

टारगेट पूल से मौजूदा इंस्टेंस से इंस्टेंस ग्रुप बनाना

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

बैकएंड सेवा बनाना और उसे स्वास्थ्य की नई जांच से जोड़ना

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

बैकएंड सेवा को कॉन्फ़िगर करना और इंस्टेंस ग्रुप जोड़ना

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

बैकएंड सेवाओं के साथ काम करने के लिए, फ़ॉरवर्ड करने के मौजूदा नियम को अपडेट करें

फ़ॉरवर्ड करने के नियम का नाम 'www-नियम' नोट करें और संबंधित IP पते को नीचे दिए गए तरीके से लागू करें:

लोड बैलेंसर → फ़्रंटएंड चुनें

साथ ही, चार टारगेट पूल पर ध्यान दिया

लोड बैलेंसर को चुनें → ‘www-पूल' को चुनें

फ़ॉरवर्ड करने के मौजूदा नियम को अपडेट करके, ट्रैफ़िक को बैकएंड सेवाओं पर रूट करना

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

लोड बैलेंसर ‘www-पूल' की पुष्टि करें अब फ़्रंटएंड ‘www-Rule' के साथ कॉन्फ़िगर नहीं किया जाता (नीचे दिया गया स्क्रीनशॉट देखें)

लोड बैलेंसर चुनें → www-pool

9a393b3ca4e0942c.png

पुष्टि करें कि फ़्रंटएंड फ़ॉरवर्ड करने का नियम अब लोड बैलेंसर ‘my-backend-service' से जुड़ा है

लोड बैलेंसर → फ़्रंटएंड चुनें

नियम का नाम 'www-नियम' नोट करें आईपी पता बनाए रखा जाता है और लोड बैलेंसर ‘my-backend-service' अब इस्तेमाल में है

बाहरी आईपी पते को ऐक्सेस करने के लिए, अपने वर्कस्टेशन टर्मिनल से कर्ल कमांड का इस्तेमाल करें. साथ ही, जोड़ी गई नई बैकएंड सेवा के लिए, लोड बैलेंसिंग की जांच करें. पुष्टि होने के बाद टर्मिनल को बंद करें.

while true; do curl -m1 IP_ADDRESS; done

7. स्टोरेज खाली करने के तरीके

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. बधाई हो!

कोडलैब पूरा करने के लिए बधाई.

इसमें हमने इन विषयों के बारे में बताया

  • क्षेत्रीय बैकएंड सेवाओं के फ़ायदों को समझना
  • टारगेट पूल के साथ नेटवर्क लोड बैलेंसर बनाना
  • टारगेट पूल की पुष्टि करें
  • मैनेज नहीं किए जा रहे इंस्टेंस ग्रुप का इस्तेमाल करके, रीजनल बैकएंड सेवा बनाएं
  • बैकएंड सेवा माइग्रेशन के लिए टारगेट पूल लागू करें
  • बैकएंड सेवाओं की पुष्टि करें