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

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. बैकएंड सेवा में इंस्टेंस ग्रुप (पहले बनाए गए) जोड़ें. अगर आपके डिप्लॉयमेंट में बैकअप टारगेट पूल शामिल है, तो बैकएंड सेवा में जोड़ते समय, फ़ेलओवर इंस्टेंस ग्रुप को –failover फ़्लैग के साथ मार्क करें.
  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 Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

cloudshell में लॉग इन करें और अपना projectid सेट करें

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

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

echo $projectid

4. वीपीसी नेटवर्क बनाना

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 से इंस्टेंस 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 से दूसरा इंस्टेंस बनाएं

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 से तीसरा इंस्टेंस बनाएं

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 से चौथा इंस्टेंस बनाएं

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

टारगेट पूल की सुविधा की पुष्टि करना

Load Balancers → Frontends (www-rule) को चुनकर, फ़्रंटएंड आईपी पते का पता लगाएं

अपने वर्कस्टेशन टर्मिनल से 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. बधाई हो!

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

हमने क्या-क्या बताया

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