1. परिचय
बेहतर ट्रैफ़िक मैनेजमेंट (Envoy) की सुविधा वाले एक्सटर्नल एचटीटीपीएस एलबी के कोडलैब में आपका स्वागत है!
बेहतर ट्रैफ़िक मैनेजमेंट की सुविधा वाले एचटीटीपीएस या एचटीटीपी एक्सटर्नल लोड बैलेंसर के नए वर्शन में, हमारे मौजूदा क्लासिक ग्लोबल एक्सटर्नल एचटीटीपीएस या एचटीटीपी लोड बैलेंसर की सभी सुविधाएं शामिल हैं. हालांकि, इसमें बेहतर ट्रैफ़िक मैनेजमेंट की सुविधाओं की सूची लगातार बढ़ती जा रही है. इनमें से कुछ सुविधाएं, हमारे लोड बैलेंसर के लिए नई हैं. वहीं, कुछ सुविधाएं मौजूदा सुविधाओं को बेहतर बनाती हैं. इन क्षमताओं की आंशिक सूची में ये शामिल हैं:
- वज़न के हिसाब से ट्रैफ़िक को बांटना
- स्क्रीन शेयर करने की सुविधा का अनुरोध करना
- आउटलायर डिटेक्शन
- बार-बार अनुरोध करने की कोशिशें
- गड़बड़ी डालना
- बैकएंड सेशन अफ़िनिटी के अन्य विकल्प
- हेडर में बदलाव करने के अन्य विकल्प
- क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस)
- लोड बैलेंसिंग के नए एल्गोरिदम
आपको क्या सीखने को मिलेगा
- मैनेज किए गए इंस्टेंस ग्रुप और उससे जुड़े वीपीसी और फ़ायरवॉल के नियमों को सेट अप करने का तरीका
- नए लोड बैलेंसर की ट्रैफ़िक मैनेजमेंट से जुड़ी बेहतर सुविधाओं का इस्तेमाल करने का तरीका
- यह पुष्टि करने का तरीका कि ट्रैफ़िक मैनेजमेंट की बेहतर सुविधाएं, उम्मीद के मुताबिक काम कर रही हैं.
आपको इन चीज़ों की ज़रूरत होगी
- नेटवर्किंग की बुनियादी जानकारी और एचटीटीपी के बारे में जानकारी
- Unix/Linux कमांड लाइन की बुनियादी जानकारी
कोडलैब टोपोलॉजी और इस्तेमाल के उदाहरण
पहली इमेज - एचटीटीपी लोड बैलेंसर की राउटिंग टोपोलॉजी
इस कोड लैब के दौरान, मैनेज किए गए तीन इंस्टेंस ग्रुप सेट अप किए जाएंगे. इनमें से एक ग्रुप ईस्ट, एक वेस्ट, और एक सेंट्रल में होगा. आपको एक ग्लोबल एक्सटर्नल एचटीटीपीएस लोड बैलेंसर बनाना होगा. लोड बैलेंसर, उन ऐडवांस सुविधाओं का इस्तेमाल करेगा जो Envoy पर आधारित लोड बैलेंसर के साथ काम करती हैं. इसे डिप्लॉय करने के बाद, कुछ लोड जनरेट करें और पुष्टि करें कि आपने जो कॉन्फ़िगरेशन सेट किए हैं वे सही तरीके से काम कर रहे हैं.
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर
PROJECT_ID
के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है. - आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ पढ़ें.
- इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:
इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
शुरू करने से पहले
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID
एपीआई चालू करना
सभी ज़रूरी सेवाएं चालू करें
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. वीपीसी नेटवर्क बनाना
वीपीसी नेटवर्क बनाना
Cloud Shell से
gcloud compute networks create httplbs --subnet-mode=auto
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs]. NAME: httplbs SUBNET_MODE: AUTO BGP_ROUTING_MODE: REGIONAL IPV4_RANGE: GATEWAY_IPV4:
वीपीसी फ़ायरवॉल के नियम बनाना
VPC बनाने के बाद, अब फ़ायरवॉल के नियम बनाए जाएंगे. फ़ायरवॉल के इस नियम का इस्तेमाल, सभी आईपी को एचटीटीपी ट्रैफ़िक के लिए पोर्ट 80 पर, टेस्ट ऐप्लिकेशन की वेबसाइट के बाहरी आईपी को ऐक्सेस करने की अनुमति देने के लिए किया जाएगा.
Cloud Shell से
gcloud compute firewall-rules create httplb-allow-http-rule \ --allow tcp:80 \ --network httplbs \ --source-ranges 0.0.0.0/0 \ --priority 700
आउटपुट
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule]. Creating firewall...done. NAME: httplb-allow-http-rule NETWORK: httplbs DIRECTION: INGRESS PRIORITY: 700 ALLOW: tcp:80 DENY: DISABLED: False
4. मैनेज किए गए इंस्टेंस ग्रुप सेट अप करना
आपको मैनेज किए गए इंस्टेंस ग्रुप सेट अप करने होंगे. इनमें एचटीटीपी लोड बैलेंसर के इस्तेमाल किए गए बैकएंड रिसॉर्स के पैटर्न शामिल होते हैं. सबसे पहले, हम इंस्टेंस टेंप्लेट बनाएंगे. ये टेंप्लेट, हर इलाके के लिए बनाए जाने वाले वीएम के कॉन्फ़िगरेशन तय करते हैं. इसके बाद, हम हर इलाके में बैकएंड के लिए एक मैनेज किया गया इंस्टेंस ग्रुप बनाएंगे. यह इंस्टेंस टेंप्लेट को रेफ़रंस करता है.
मैनेज किए गए इंस्टेंस ग्रुप, ज़ोनल या रीजनल हो सकते हैं. इस लैब के लिए, हम तीन रीजनल मैनेज्ड इंस्टेंस ग्रुप बनाएंगे. इनमें से एक us-east1, दूसरा us-west1, और तीसरा us-central1 में होगा.
इस सेक्शन में, आपको पहले से बनाई गई स्टार्टअप स्क्रिप्ट दिखेगी. इंस्टेंस बनाते समय इसका रेफ़रंस दिया जाएगा. यह स्टार्टअप स्क्रिप्ट, वेब सर्वर की उन सुविधाओं को इंस्टॉल और चालू करती है जिनका इस्तेमाल हम वेब ऐप्लिकेशन को सिम्युलेट करने के लिए करेंगे. इस स्क्रिप्ट को बेझिझक एक्सप्लोर करें.
पूर्वी, पश्चिमी, और मध्य क्षेत्र के इंस्टेंस टेंप्लेट बनाना
पहला चरण, us-east-1 इंस्टेंस टेंप्लेट बनाना है.
Cloud Shell से
gcloud compute instance-templates create us-east1-template \ --region=us-east1 \ --network=httplbs \ --tags=http-server, \ --image-family=debian-12 \ --image-project=debian-cloud \ --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)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template]. NAME: us-east1-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00
अगला चरण, us-west-1 इंस्टेंस टेंप्लेट बनाना है.
Cloud Shell से
gcloud compute instance-templates create us-west1-template \ --region=us-west1 \ --network=httplbs \ --tags=http-server, \ --image-family=debian-12 \ --image-project=debian-cloud \ --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)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template]. NAME: us-west1-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00
अगला चरण, us-central-1 इंस्टेंस टेंप्लेट बनाना है.
Cloud Shell से
gcloud compute instance-templates create us-central1-template \ --region=us-central1 \ --network=httplbs \ --tags=http-server, \ --image-family=debian-12 \ --image-project=debian-cloud \ --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)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template]. NAME: us-central1-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00
अब यह पुष्टि की जा सकती है कि हमारे इंस्टेंस टेंप्लेट, gcloud के इस कमांड का इस्तेमाल करके बनाए गए हैं:
Cloud Shell से
gcloud compute instance-templates list
आउटपुट
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP us-central1-template n1-standard-1 2021-11-09T09:25:37.263-08:00 us-east1-template n1-standard-1 2021-11-09T09:24:35.275-08:00 us-west1-template n1-standard-1 2021-11-09T09:25:08.016-08:00
पूर्वी, पश्चिमी, और मध्य क्षेत्र के मैनेज किए गए इंस्टेंस ग्रुप बनाना
अब हमें उन इंस्टेंस टेंप्लेट से मैनेज किया गया इंस्टेंस ग्रुप बनाना होगा जिन्हें हमने पहले बनाया था.
Cloud Shell से
gcloud compute instance-groups managed create us-east1-mig \ --base-instance-name=us-east1-mig \ --size=1 \ --template=us-east1-template \ --zone=us-east1-b
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig]. NAME: us-east1-mig LOCATION: us-east1-b SCOPE: zone BASE_INSTANCE_NAME: us-east1-mig SIZE: 0 TARGET_SIZE: 1 INSTANCE_TEMPLATE: us-east1-template AUTOSCALED: no
Cloud Shell से
gcloud compute instance-groups managed create us-west1-mig \ --base-instance-name=us-west1-mig \ --size=1 \ --template=us-west1-template \ --zone=us-west1-a
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig]. NAME: us-west1-mig LOCATION: us-west1-a SCOPE: zone BASE_INSTANCE_NAME: us-west1-mig SIZE: 0 TARGET_SIZE: 1 INSTANCE_TEMPLATE: us-west1-template AUTOSCALED: no
Cloud Shell से
gcloud compute instance-groups managed create us-central1-mig \ --base-instance-name=us-central1-mig \ --size=1 \ --template=us-central1-template \ --zone=us-central1-a
आउटपुट
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig]. NAME: us-central1-mig LOCATION: us-central1-a SCOPE: zone BASE_INSTANCE_NAME: us-central1-mig SIZE: 0 TARGET_SIZE: 1 INSTANCE_TEMPLATE: us-central1-template AUTOSCALED: no
हम यह पुष्टि कर सकते हैं कि हमारे इंस्टेंस ग्रुप, gcloud के इस निर्देश का इस्तेमाल करके बनाए गए हैं:
Cloud Shell से
gcloud compute instance-groups list
आउटपुट
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES us-central1-mig us-central1 zone httplbs Yes 1 us-west1-mig us-west1 zone httplbs Yes 1 us-east1-mig us-east1 zone httplbs Yes 1
वेब सर्वर के काम करने की पुष्टि करना
हर इंस्टेंस को, Apache वेब-सर्वर चलाने के लिए कॉन्फ़िगर किया जाता है. इसमें एक सामान्य PHP स्क्रिप्ट होती है, जो यह रेंडर करती है:
यह पक्का करने के लिए कि आपके वेब सर्वर ठीक से काम कर रहे हैं, Compute Engine -> वीएम इंस्टेंस पर जाएं. पक्का करें कि आपके नए इंस्टेंस (जैसे, us-east1-mig-xxx) को उनके इंस्टेंस ग्रुप की परिभाषाओं के मुताबिक बनाया गया हो.
अब अपने ब्राउज़र में, वेब सर्वर को वेब अनुरोध भेजें. इससे यह पक्का किया जा सकेगा कि वेब सर्वर काम कर रहा है. इसे शुरू होने में एक मिनट लग सकता है. Compute Engine में जाकर, वीएम इंस्टेंस पेज पर जाएं. इसके बाद, अपने इंस्टेंस ग्रुप से बनाए गए किसी इंस्टेंस को चुनें और उसके बाहरी (सार्वजनिक) आईपी पते पर क्लिक करें.
इसके अलावा, अपने ब्राउज़र में http://<IP_Address> पर जाएं
5. लोड बैलेंसर सेट अप करना
सेहत की जाँच की सुविधा बनाना
सबसे पहले, हमें बुनियादी हेल्थ चेक बनाना होगा, ताकि यह पक्का किया जा सके कि हमारी सेवाएं सही तरीके से काम कर रही हैं. हम बुनियादी स्वास्थ्य जांच की सुविधा बना रहे हैं. हालांकि, इसमें कई और बेहतर सुविधाएं भी उपलब्ध हैं.
Cloud Shell से
gcloud compute health-checks create http http-basic-check \ --port 80
एक्सटर्नल आईपी पता रिज़र्व करना
इस चरण के लिए, आपको दुनिया भर में उपलब्ध एक स्टैटिक आईपी पता रिज़र्व करना होगा. इसे बाद में लोड बैलेंसर से जोड़ा जाएगा.
Cloud Shell से
gcloud compute addresses create lb-ipv4-2 \ --ip-version=IPV4 \ --global
पक्का करें कि आपने रिज़र्व किए गए आईपी पते को नोट कर लिया हो.
gcloud compute addresses describe lb-ipv4-2 \ --format="get(address)" \ --global
बैकएंड सेवाएं बनाना
अब हमें उन सभी मैनेज किए गए इंस्टेंस ग्रुप के लिए बैकएंड सेवा बनानी होगी जिन्हें हमने पहले बनाया था. एक ईस्ट, वेस्ट, और सेंट्रल के लिए.
ईस्ट मैनेज किए गए इंस्टेंस ग्रुप के लिए बैकएंड सेवा बनाई जा रही है.
Cloud Shell से
gcloud compute backend-services create east-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
वेस्ट मैनेज किए गए इंस्टेंस ग्रुप के लिए बैकएंड सेवा बनाई जा रही है.
Cloud Shell से
gcloud compute backend-services create west-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
सेंट्रल मैनेज किए गए इंस्टेंस ग्रुप के लिए, बैकएंड सेवा बनाना.
Cloud Shell से
gcloud compute backend-services create central-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
बैकएंड सेवाओं में एमआईजी जोड़ना
अब हमने हर ऐप्लिकेशन क्लस्टर के लिए, बैकएंड सेवाएं बना ली हैं. इसलिए, अब हमें उन मैनेज किए गए इंस्टेंस ग्रुप को हर बैकएंड सेवा में जोड़ना होगा जिन्हें हमने पहले बनाया था.
बैकएंड सेवा में East MIG जोड़ें.
Cloud Shell से
gcloud compute backend-services add-backend east-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-east1-mig \ --instance-group-zone=us-east1-b \ --global
बैकएंड सेवा में West MIG जोड़ें.
Cloud Shell से
gcloud compute backend-services add-backend west-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-west1-mig \ --instance-group-zone=us-west1-a \ --global
बैकएंड सेवा में सेंट्रल एमआईजी जोड़ें.
Cloud Shell से
gcloud compute backend-services add-backend central-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-central1-mig \ --instance-group-zone=us-central1-a \ --global
यूआरएल मैप बनाना
यूआरएल मैप में, इस लैब के लिए ट्रैफ़िक मैनेज करने की ऐडवांस सुविधाएं उपलब्ध होंगी. हमें एक .yaml फ़ाइल बनानी होगी, जिसमें कॉन्फ़िगरेशन शामिल होगा. हमने .yaml फ़ाइल में /roundrobbin पर प्रीफ़िक्स मैच बनाया है. इसलिए, इन कॉन्फ़िगरेशन का असर सिर्फ़ /roundrobbin से मैच करने वाले ट्रैफ़िक पर पड़ेगा. हमने यह तय किया है कि 50% ट्रैफ़िक, east-backend-service पर और 50% ट्रैफ़िक, west-backend-service पर जाना चाहिए. हमने रिस्पॉन्स हेडर वैल्यू:{test} को भी जोड़ा है. यह सभी रिस्पॉन्स में मौजूद होगी. आखिर में, हमने यह भी जोड़ा है कि सभी ट्रैफ़िक को central-backend-service पर मिरर किया जाना चाहिए. ट्रैफ़िक को डुप्लीकेट किया जाता है और यहां सिर्फ़ टेस्टिंग के लिए भेजा जाता है.
उदाहरण को अपनी मशीन पर .yaml फ़ाइल के तौर पर सेव करें.
defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service kind: compute #urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: matcher1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service name: matcher1 routeRules: - matchRules: - prefixMatch: /roundrobbin priority: 2 headerAction: responseHeadersToAdd: - headerName: test headerValue: value replace: True routeAction: weightedBackendServices: - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service weight: 50 - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service weight: 50 retryPolicy: retryConditions: ['502', '504'] numRetries: 3 perTryTimeout: seconds: 1 nanos: 50 requestMirrorPolicy: backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service
अपने डिवाइस से दस्तावेज़ इंपोर्ट करके, यूआरएल मैप बनाएं. ध्यान दें कि .yaml फ़ाइल को सेव करने की जगह के हिसाब से, सोर्स पाथ अलग-अलग होगा.
Cloud Shell से
gcloud compute url-maps import web-map-http \ --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \ --global
एचटीटीपी फ़्रंटएंड बनाएं
लोड बैलेंसर बनाने का आखिरी चरण, फ़्रंटएंड बनाना है. इससे, पहले से रिज़र्व किए गए आईपी पते को लोड बैलेंसर के उस यूआरएल मैप से मैप किया जाएगा जिसे आपने बनाया है.
Cloud Shell से
gcloud compute target-http-proxies create http-lb-proxy-adv \ --url-map=web-map-http
इसके बाद, आपको एक ग्लोबल फ़ॉरवर्डिंग नियम बनाना होगा. इससे पहले से रिज़र्व किए गए आईपी पते को एचटीटीपी प्रॉक्सी पर मैप किया जा सकेगा.
Cloud Shell से
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme EXTERNAL_MANAGED \ --address=lb-ipv4-2 \ --global \ --target-http-proxy=http-lb-proxy-adv \ --ports=80
6. पुष्टि करना कि ट्रैफ़िक से जुड़ी ऐडवांस सुविधाएं काम कर रही हैं
यह पुष्टि करने के लिए कि ट्रैफ़िक स्प्लिट करने की सुविधा काम कर रही है, आपको कुछ लोड जनरेट करना होगा. इसके लिए, हम लोड को सिम्युलेट करने के लिए एक नई वीएम बनाएंगे.
एसएसएच की अनुमति देने वाला फ़ायरवॉल नियम बनाना
जिस वीएम से हम ट्रैफ़िक जनरेट करेंगे उसमें एसएसएच करने के लिए, आपको सबसे पहले फ़ायरवॉल का एक नियम बनाना होगा. इससे वीएम को एसएसएच ट्रैफ़िक की अनुमति मिलेगी.
Cloud Shell से
gcloud compute firewall-rules create fw-allow-ssh \ --network=httplbs \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
आउटपुट
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED fw-allow-ssh httplbs INGRESS 1000 tcp:22 False
Siege-vm बनाएं
अब आपको siege-vm बनाना होगा. इसका इस्तेमाल लोड जनरेट करने के लिए किया जाएगा
Cloud Shell से
gcloud compute instances create siege-vm \ --network=httplbs \ --zone=us-east4-c \ --machine-type=e2-medium \ --tags=allow-ssh,http-server \ --metadata=startup-script='sudo apt-get -y install siege'
आउटपुट
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS siege-vm us-east4-c e2-medium 10.150.0.3 34.85.218.119 RUNNING
इसके बाद, बनाई गई वीएम में SSH किया जा सकता है. बन जाने के बाद, टर्मिनल लॉन्च करने और कनेक्ट करने के लिए SSH पर क्लिक करें.
कनेक्ट होने के बाद, लोड जनरेट करने के लिए यहां दिया गया निर्देश चलाएं. उस आईपी पते का इस्तेमाल करें जिसे आपने पहले बाहरी एचटीटीपी लोड बैलेंसर के लिए रिज़र्व किया था.
Cloud Shell से
siege -c 250 http://[$lb-ipv4-2]/roundrobbin
आउटपुट
New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file [alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory ** SIEGE 4.0.2 ** Preparing 250 concurrent users for battle. The server is now under siege...
लोड डिस्ट्रिब्यूशन की जांच करना
अब जब Siege चल रहा है, तो यह जांच करने का समय है कि ट्रैफ़िक को मैनेज किए गए ईस्ट और वेस्ट इंस्टेंस ग्रुप के बीच बराबर बांटा जा रहा है या नहीं. इसके अलावा, यह भी जांच की जा सकती है कि ट्रैफ़िक मिररिंग की सुविधा काम कर रही है या नहीं और ट्रैफ़िक को मैनेज किए गए सेंट्रल इंस्टेंस ग्रुप को भेजा जा रहा है या नहीं.
Cloud Console में, नेविगेशन मेन्यू पर जाकर, नेटवर्क सेवाएं > लोड बैलेंसिंग पर क्लिक करें. load balancer web-map-http को चुनें. 'मॉनिटरिंग' टैब पर जाएं. इसके बाद, आपको नीचे दिया गया चार्ट दिखेगा.
आपको इस एमआईजी में रीयल टाइम में ट्रैफ़िक स्प्लिट होता हुआ दिखेगा. आपने राउंड रॉबिन के हिसाब से 50/50 का बंटवारा कॉन्फ़िगर किया है. इसलिए, ट्रैफ़िक को बराबर बांटा गया है.
यह देखने के लिए कि आपने जो ट्रैफ़िक मिररिंग नीति बनाई है वह काम कर रही है, आपको मैनेज किए गए सेंट्रल-बैकएंड-सर्विस इंस्टेंस ग्रुप के इस्तेमाल की जांच करनी होगी. इसके लिए, Compute, Compute Engine, इंस्टेंस ग्रुप पर जाएं. इसके बाद, us-central1-mig चुनें. इसके बाद, मॉनिटरिंग टैब पर जाएं.
आपको चार्ट में यह जानकारी दिखेगी कि ट्रैफ़िक को इस मैनेज किए गए इंस्टेंस ग्रुप में मिरर किया गया है.
Stop the Siege
आपने यह दिखा दिया है कि ऐडवांस ट्रैफ़िक स्प्लिटिंग की सुविधा काम कर रही है. अब इस सुविधा को बंद करने का समय आ गया है. इसके लिए, siege-vm के एसएसएच टर्मिनल पर वापस जाएं और CTRL+C दबाकर, चल रहे सीज को रोकें.
भेजे जा रहे रिस्पॉन्स हेडर की पुष्टि करना
डेटा को हटाने से पहले, यह तुरंत पुष्टि की जा सकती है कि एचटीटीपी लोड बैलेंसर, सही रिस्पॉन्स हेडर भेज रहा है. आपने इसे कॉन्टेंट की वैल्यू के साथ हेडर टेस्ट भेजने के लिए कॉन्फ़िगर किया था. क्लाउड शेल से कर्ल कमांड चलाने पर, आपको उम्मीद के मुताबिक जवाब मिलेगा.
Cloud Shell से
curl -svo /dev/null http://lb-ipv4-2/roundrobbin
आउटपुट
* Trying lb-ipv4-2.. * TCP_NODELAY set * Connected to lb-ipv4-2 ( lb-ipv4-2) port 80 (#0) > GET /roundrobbin HTTP/1.1 > Host: lb-ipv4-2 > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 404 Not Found < date: Wed, 10 Nov 2021 17:05:27 GMT < server: envoy < Content-Length: 273 < content-type: text/html; charset=iso-8859-1 < via: 1.1 google < test: value < { [273 bytes data] * Connection #0 to host 34.149.2.26 left intact * Closing connection 0
7. लैब में मौजूद डेटा हटाना
अब जब हमने लैब एनवायरमेंट का इस्तेमाल कर लिया है, तो इसे बंद करने का समय आ गया है. टेस्ट एनवायरमेंट को मिटाने के लिए, कृपया ये कमांड चलाएं.
Cloud Shell से
gcloud compute instances delete siege-vm --zone=us-east4-c gcloud compute forwarding-rules delete http-content-rule --global gcloud compute target-http-proxies delete http-lb-proxy-adv gcloud compute url-maps delete web-map-http gcloud compute backend-services delete east-backend-service --global gcloud compute backend-services delete west-backend-service --global gcloud compute backend-services delete central-backend-service --global gcloud compute addresses delete lb-ipv4-2 --global gcloud compute health-checks delete http-basic-check gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a gcloud compute instance-templates delete "us-east1-template" gcloud compute instance-templates delete "us-west1-template" gcloud compute instance-templates delete "us-central1-template" gcloud compute firewall-rules delete httplb-allow-http-rule gcloud compute firewall-rules delete fw-allow-ssh gcloud compute networks delete httplbs
8. बधाई हो!
आपने बेहतर ट्रैफ़िक मैनेजमेंट (Envoy) की सुविधा वाले एक्सटर्नल एचटीटीपीएस लोड बैलेंसर का कोडलैब पूरा कर लिया है!
हमने क्या-क्या बताया
- मैनेज किए गए इंस्टेंस ग्रुप और उससे जुड़े वीपीसी और फ़ायरवॉल के नियमों को सेट अप करने का तरीका
- नए लोड बैलेंसर की ट्रैफ़िक मैनेजमेंट से जुड़ी बेहतर सुविधाओं का इस्तेमाल करने का तरीका
- यह पुष्टि करने का तरीका कि ट्रैफ़िक मैनेजमेंट की बेहतर सुविधाएं, उम्मीद के मुताबिक काम कर रही हैं.
अगले चरण
- राउटिंग की कुछ अन्य बेहतर सुविधाओं का इस्तेमाल करें. जैसे, यूआरएल फिर से लिखना, सीओआरएस हेडर जोड़ना वगैरह ( लिंक)