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

1. परिचय

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

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

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

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

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

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

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

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

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

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

267db35a58145be.png

क्षेत्र के हिसाब से बैकएंड सेवाएं, ये सुविधाएं देती हैं:

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

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

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

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

रीजनल बैकएंड सेवा पर स्विच करने से, आपको कई सुविधाओं का फ़ायदा मिलता है. जैसे, टीसीपी, एसएसएल, एचटीटीपी, एचटीटीपीएस, और एचटीटीपी/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 का इस्तेमाल करना होगा. यह Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.

GCP कंसोल में, सबसे ऊपर दाएं टूलबार में मौजूद Cloud Shell आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

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

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

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

हर ज़ोन, us-central1-a, और us-central1-c में दो इंस्टेंस बनाएं

Cloud Shell से पहला इंस्टेंस बनाना

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-नियम) चुनकर फ़्रंटएंड आईपी पते की पहचान करें

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

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-rule' और उससे जुड़ा आईपी पता नोट करने के लिए, यह तरीका अपनाएं:

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

साथ ही, चार टारगेट पूल भी नोट किए गए

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

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

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

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

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

9a393b3ca4e0942c.png

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

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

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

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

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. बधाई हो!

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

हमने क्या-क्या शामिल किया है

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