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

1. परिचय

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

3312e69c63b02f73.png

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

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

  • पसंद के मुताबिक VPC बनाना
  • नेटवर्क एंडपॉइंट ग्रुप (एनईजी) के तौर पर इस्तेमाल की जाने वाली दो वर्चुअल मशीन (वीएम) बनाएं
  • हाइब्रिड लोड बैलेंसर और बैकएंड सेवा का इस्तेमाल करके, ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करें
  • फ़ायरवॉल नियम बनाएं, जो लोड बैलेंसर को ऐक्सेस करने की अनुमति देता हो
  • इंटरनेट से पैकेज को अपडेट करने के लिए, क्लाउड राऊटर और एनएटी (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 कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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) बनाना होगा, जो कि नेटवर्क की बुनियाद होगी.

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 राऊटर और 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 नाम वाला NEG बनाएं. आपको यह भी बताना होगा कि एलबी को इस बात पर ध्यान देना चाहिए कि रूटिंग और लोड बैलेंसिंग के लिए, ये एंडपॉइंट 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. http स्वास्थ्य जाँच, बैकएंड सेवा और फ़ायरवॉल

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

सबसे पहले, इस एनईजी से जुड़े हर एंडपॉइंट (यानी, आपकी कंपनी की इमारत में मौजूद एंडपॉइंट) की स्थिति को मॉनिटर करने के लिए, कंपनी की स्वास्थ्य जांच के नाम से एक हेल्थ जांच बनाएं.

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 और बैकएंड सेवा जोड़ें

इस बैकएंड सेवा में, कंपनी की इमारत में नेगेटिव-1 एनईजी की जानकारी जोड़ें

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

इस बैकएंड सेवा में, कंपनी की इमारत के तौर पर नेगेटिव-2-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

आपके नेटवर्क एंडपॉइंट को ऐक्सेस करने के लिए इस्तेमाल किया जाने वाला आईपीवी4 स्टैटिक आईपी पता बुक करें

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" चुनें फिर "ठीक है" दिए गए स्क्रीनशॉट के मुताबिक

f1589df43bf9e3e8.png

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

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

bfa39f7dc3ad91e1.png

बैकएंड से जुड़ी स्वास्थ्य की पुष्टि

Cloud Console से पक्का करें कि बैकएंड "xlb" हो सेहत के लिहाज़ से अच्छा है, यह दिए गए स्क्रीनशॉट के मुताबिक है

131bbfc955d6166c.png

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

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

Cloud Shell से

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

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

Cloudshell से आउटपुट

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

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

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

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

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 हाइब्रिड लोड बैलेंसर डिप्लॉय कर लिया है

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

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

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

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

Cloud Console के यूज़र इंटरफ़ेस (यूआई) से ‘xlb' की पहचान करें और उस पर सही का निशान लगाएं लोड बैलेंसर पर जाकर, Network Services से मिटाएं → लोड बैलेंसिंग को चुनें. चुने जाने के बाद, ‘ऑन-प्रिमाइस-बैकएंड सेवा’ पर सही का निशान लगाएं &amp; ‘on-premise-health-check&#39; इसके बाद, 'मिटाएं' चुनें

53d7463fe354fe66.png

Cloud Console के यूज़र इंटरफ़ेस (यूआई) से Compute Engine → नेटवर्क एंडपॉइंट ग्रुप पर जाएं. चुने जाने के बाद, ‘on-prem-neg-1’ पर सही का निशान लगाएं &amp; ‘on-prem-neg-2&#39; इसके बाद, 'मिटाएं' चुनें

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