नेटवर्क एंडपॉइंट ग्रुप तक पहुंचने के लिए, एक्सटर्नल एचटीटीपी या हाइब्रिड लोड बैलेंसर का इस्तेमाल करना

1. परिचय

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

3312e69c63b02f73.png

इस लैब में, आपको नेटवर्क एंडपॉइंट ग्रुप (एनईजी) बनाने का तरीका सिखाया जाएगा. इसके लिए, दो वर्चुअल मशीनें इस्तेमाल की जाएंगी. इन वर्चुअल मशीनों को एक्सटर्नल एचटीटीपी(एस) ग्लोबल लोड बैलेंसर से ऐक्सेस किया जा सकता है. लैब में मौजूद एनईजी, GCP के दायरे में आता है. हालांकि, सार्वजनिक या ऑन-प्रिमाइसेस संसाधनों से कम्यूनिकेट करने के लिए, इसी तरीके का इस्तेमाल किया जाता है.

आपको क्या सीखने को मिलेगा

  • कस्टम वीपीसी बनाना
  • नेटवर्क एंडपॉइंट ग्रुप (एनईजी) के तौर पर इस्तेमाल की जाने वाली दो वर्चुअल मशीन (वीएम) बनाएं
  • हाइब्रिड लोड बैलेंसर, बैकएंड सेवा, और उससे जुड़ी हेल्थ-चेक बनाना
  • ऐसा फ़ायरवॉल नियम बनाएं जिससे लोड बैलेंसर को ऐक्सेस करने की अनुमति मिले
  • इंटरनेट से पैकेज अपडेट करने की अनुमति देने के लिए, Cloud Router और NAT बनाया जाएगा
  • नेटवर्क एंडपॉइंट ग्रुप की पहुंच की पुष्टि करना

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

  • लोड बैलेंसर के बारे में जानकारी

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट के लिए आपका निजी आइडेंटिफ़ायर होता है. नाम रखने के नियमों का पालन करने पर, अपनी पसंद का कोई भी नाम इस्तेमाल किया जा सकता है. साथ ही, इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट में यूनीक होना चाहिए. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. इसे आम तौर पर 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 पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस लैब में मौजूद सभी टास्क को सिर्फ़ ब्राउज़र की मदद से पूरा किया जा सकता है.

2. शुरू करने से पहले

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो

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

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

3. कस्टम मोड वाला नया वीपीसी नेटवर्क बनाना

इस टास्क में, आपको नेटवर्क का आधार वर्चुअल प्राइवेट क्लाउड (VPC) बनाना होगा.

VPC नेटवर्क

Cloud Shell से

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

सबनेट बनाएं

Cloud Shell से

gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1

Cloud NAT इंस्टेंस बनाना

हालांकि, हाइब्रिड नेटवर्किंग के लिए इंटरनेट कनेक्शन ज़रूरी नहीं है, लेकिन ऐप्लिकेशन और अपडेट डाउनलोड करने के लिए कंप्यूट इंस्टेंस को इंटरनेट कनेक्शन की ज़रूरत होती है.

इस टास्क में, आपको एक Cloud Router और NAT इंस्टेंस बनाना होगा. इससे वीएम इंस्टेंस को इंटरनेट से कनेक्ट किया जा सकेगा.

क्लाउड राऊटर बनाना

Cloud Shell से

gcloud compute routers create crnat --network hybrid-network-lb --region us-west1

Cloud NAT बनाना

Cloud Shell से

gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1

4. दो वीएम इंस्टेंस बनाना

इस टास्क में, Apache चलाने वाले दो वीएम इंस्टेंस बनाए जाएंगे. बाद में लैब में, ये वीएम इंस्टेंस नेटवर्क एंडपॉइंट ग्रुप (एनईजी) बन जाएंगे.

Cloud Shell से, पहला ऑन-प्रेम इंस्टेंस बनाएं, on-prem-neg-1

gcloud compute instances create on-prem-neg-1 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

Cloud Shell से, पहला ऑन-प्रेम इंस्टेंस बनाएं, on-prem-neg-2

gcloud compute instances create on-prem-neg-2 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

5. ऐसा NEG बनाएं जिसमें आपका ऑन-प्रिमाइसेस एंडपॉइंट शामिल हो

सबसे पहले, on-prem-neg-1 और on-prem-neg-2 नाम के दो एनईजी बनाएं. आपको यह भी बताना होगा कि एलबी को यह ध्यान रखना चाहिए कि राउटिंग और लोड बैलेंसिंग के लिए, ये एंडपॉइंट us-west1-a GCP ज़ोन में हैं. हमारा सुझाव है कि कॉन्फ़िगर किया गया ज़ोन, इंटरकनेक्ट अटैचमेंट/वीपीएन गेटवे के क्षेत्र से जुड़े किसी भी ज़ोन से मेल खाना चाहिए. इससे लोड बैलेंसिंग के लिए इस्तेमाल की जाने वाली, प्रॉक्सिमिटी के आधार पर लोड-बैलेंसिंग की मेज़रमेंट की जा सकती है.

Cloud Shell से on-prem-neg-1 बनाएं

gcloud compute network-endpoint-groups create on-prem-neg-1 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

Cloud Shell से on-prem-neg-2 बनाएं

gcloud compute network-endpoint-groups create on-prem-neg-2 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

इस कोडलैब में, नेटवर्क एंडपॉइंट ग्रुप एक GCE इंस्टेंस है. यह GCP में Apache चलाता है. इसके अलावा, नेटवर्क एंडपॉइंट के तौर पर, इंटरनेट या ऑन-प्रीमाइसेस एंडपॉइंट को सेट किया जा सकता है

Cloud Shell से, GCE के आईपी पतों की पहचान करें

gcloud compute instances list | grep -i on-prem

नेटवर्क-एंडपॉइंट ग्रुप को GCE इंस्टेंस के उस आईपी पते से जोड़ें जिसकी पहचान पिछले चरण में की गई थी. हर एनईजी के लिए, on-prem-neg-1 & on-prem-neg-2.

Cloud Shell से, on-prem-neg-1 को जोड़ें. इसके बाद, x.x.x.x को अपने आईपी पते से अपडेट करें

gcloud compute network-endpoint-groups update on-prem-neg-1 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

Cloud Shell में, on-prem-neg-2 को जोड़ें. इसके बाद, x.x.x.x को अपने आईपी पते से अपडेट करें

gcloud compute network-endpoint-groups update on-prem-neg-2 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

6. एचटीटीपी हेल्थ-चेक, बैकएंड सेवा, और फ़ायरवॉल बनाना

इस चरण में, on-prem-backend-service नाम की एक ग्लोबल बैकएंड सेवा बनाई जाएगी. यह बैकएंड सेवा तय करती है कि आपका डेटा प्लेन, आपके एनईजी को ट्रैफ़िक कैसे भेजेगा.

सबसे पहले, on-prem-health-check नाम की एक हेल्थ चेक बनाएं. इससे इस एनईजी (यानी कि आपके ऑन-प्रिमाइसेस एंडपॉइंट) से जुड़े किसी भी एंडपॉइंट की परफ़ॉर्मेंस को मॉनिटर किया जा सकेगा.

Cloud Shell से

gcloud compute health-checks create http on-prem-health-check

on-prem-backend-service नाम की बैकएंड सेवा बनाएं और इसे हेल्थ चेक से जोड़ें.

Cloud Shell से

gcloud compute backend-services create on-prem-backend-service \
    --global \
    --load-balancing-scheme=EXTERNAL \
    --health-checks on-prem-health-check

एचटीटीपी या एचटीटीपीएस एक्सटर्नल लोड बैलेंसर और बैकएंड, 35.191.0.0/16 और 130.211.0.0/22 सबनेट से हेल्थ-चेक करते हैं. इसलिए, लोड बैलेंसर को बैकएंड राउटिंग की अनुमति देने के लिए, फ़ायरवॉल के नियम की ज़रूरत होती है.

Cloud Shell से

gcloud compute firewall-rules create fw-allow-health-check \
    --network=hybrid-network-lb \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

7. NEG और बैकएंड सेवा को असोसिएट करना

इस बैकएंड सेवा में on-prem-neg-1 NEG जोड़ें

Cloud Shell से

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-1 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

इस बैकएंड सेवा में on-prem-neg-2 NEG जोड़ें

Cloud Shell से

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-2 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

अपने नेटवर्क एंडपॉइंट को ऐक्सेस करने के लिए इस्तेमाल किए जाने वाले IPv4 स्टैटिक आईपी पते को रिज़र्व करें

Cloud Shell से

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

हमने सीएलआई कॉन्फ़िगरेशन पूरा कर लिया है. चलिए, Cloud Console में कॉन्फ़िगरेशन पूरा करते हैं.

8. एक्सटर्नल एचटीटीपी लोड बैलेंसर बनाएं और बैकएंड सेवा को उससे जोड़ें

Cloud Console में, लोड बैलेंसिंग पर जाएं और लोड बैलेंसर बनाएं को चुनें

एचटीटीपी या एचटीटीपीएस लोड बैलेंसिंग की पहचान करें और ‘कॉन्फ़िगरेशन शुरू करें' पर क्लिक करें

70ccd168957e89d9.png

नीचे दिए गए स्क्रीनशॉट के मुताबिक, "इंटरनेट से मेरे वीएम तक" चुनें. इससे आपके वीएम को सार्वजनिक तौर पर ऐक्सेस किया जा सकेगा

a55cd31dbeadfecc.png

लोड बैलेंसर का नाम "xlb" दें. इसके बाद, पहले से बनाई गई बैकएंड सेवा "on-prem-backend-service" को चुनें. इसके बाद, दिए गए स्क्रीनशॉट के मुताबिक "ok" पर क्लिक करें

f1589df43bf9e3e8.png

फ़्रंटएंड कॉन्फ़िगरेशन चुनें, नाम "xlb-fe" अपडेट करें, और पहले बनाया गया स्टैटिक IPv4 पता चुनें. साथ ही, यह पक्का करें कि स्क्रीनशॉट में दी गई जानकारी b47cd48c7c1ccfc3.png के मुताबिक हो

दिए गए स्क्रीनशॉट से मेल खाने वाले "समीक्षा करें और फ़ाइनल करें" को चुनें. इसके बाद, "बनाएं" को चुनें

bfa39f7dc3ad91e1.png

बैकएंड हेल्थ की पुष्टि करना

Cloud Console में जाकर पक्का करें कि बैकएंड "xlb" ठीक से काम कर रहा हो. साथ ही, दिए गए स्क्रीनशॉट के मुताबिक उसका रंग हरा हो

131bbfc955d6166c.png

9. पुष्टि करें कि इंटरनेट से NEG तक पहुंचा जा सकता है

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

Cloud Shell से

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

आउटपुट (आपका आईपी पता अलग होगा)

Cloud Shell से मिला आउटपुट

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

ग्लोबल लोड बैलेंसर के फ़्रंट एंड आईपी पते का इस्तेमाल करके, नेटवर्क एंडपॉइंट के बैकएंड को ऐक्सेस किया जा सकता है. ध्यान दें कि कोडलैब में, एंडपॉइंट एक GCE इंस्टेंस है. हालांकि, इसका इस्तेमाल ऑन-प्रिमाइसेस एंडपॉइंट के साथ किया जा सकता है.

अपने लोकल वर्कस्टेशन से, टर्मिनल लॉन्च करें और लोड बैलेंसर के आईपी पते पर कर्ल करें

अपने वर्कस्टेशन से, फ़्रंटएंड आईपी पते के ख़िलाफ़ कर्ल करें. 200 OK और पेज की जानकारी देखें. इसमें neg इंस्टेंस का नाम और क्षेत्र शामिल होता है.

myworkstation$ curl -v 34.96.103.132

* Trying 34.96.103.132...

* TCP_NODELAY set

* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)

> GET / HTTP/1.1

> Host: 34.96.103.132

> User-Agent: curl/7.64.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Tue, 10 Aug 2021 01:21:54 GMT

< Server: Apache/2.4.25 (Debian)

< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT

< ETag: "24-5c929ae7384f4"

< Accept-Ranges: bytes

< Content-Length: 36

< Content-Type: text/html

< Via: 1.1 google

<

Page on on-prem-neg-2 in us-west1-a

* Connection #0 to host 34.96.103.132 left intact

* Closing connection 0

बधाई हो, आपने एनईजी के साथ L7 हाइब्रिड लोड बैलेंसर को सफलतापूर्वक डिप्लॉय कर लिया है

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

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

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

10. क्लीनअप करने का तरीका

Cloud Console के यूज़र इंटरफ़ेस (यूआई) में, ‘xlb' लोड बैलेंसर को पहचानें और उस पर सही का निशान लगाएं. इसके बाद, Network Services → Load Balancing पर जाकर, मिटाएं को चुनें. चुने जाने के बाद, ‘ऑन-प्रिमाइसेस-बैकएंड सेवा' और ‘ऑन-प्रिमाइसेस-हेल्थ-चेक' पर सही का निशान लगाएं. इसके बाद, मिटाएं को चुनें

53d7463fe354fe66.png

Cloud Console के यूज़र इंटरफ़ेस (यूआई) में, Compute Engine → Network Endpoint Groups पर जाएं. चुने जाने के बाद, ‘on-prem-neg-1' और ‘on-prem-neg-2' पर सही का निशान लगाएं. इसके बाद, मिटाएं को चुनें

4d8f04264b44d03c.png

Cloud Shell से लैब के कॉम्पोनेंट मिटाना

gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet

gcloud compute routers delete crnat  --region us-west1 --quiet

gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet

gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet

gcloud compute firewall-rules delete fw-allow-health-check --quiet

gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet

gcloud compute networks delete hybrid-network-lb --quiet

gcloud compute addresses delete hybrid-lb-ip --global --quiet