1. परिचय
ऐडवांस ट्रैफ़िक मैनेजमेंट (Envoy) कोडलैब के साथ External HTTPs LB में आपका स्वागत है!
बेहतर ट्रैफ़िक मैनेजमेंट के साथ एचटीटीपी या एक्सटर्नल लोड बैलेंसर के सबसे नए वर्शन में हमारे मौजूदा क्लासिक ग्लोबल एक्सटर्नल एचटीटीपी या लोड बैलेंसर की सभी सुविधाएं शामिल हैं. हालांकि, इसमें ऐडवांस ट्रैफ़िक मैनेजमेंट की सुविधाओं की लगातार बढ़ती हुई सूची भी शामिल है. इनमें से कुछ सुविधाएं हमारे लोड बैलेंसर में नई हैं. साथ ही, कुछ सुविधाएं मौजूदा समय में पहले से बेहतर की गई सुविधाएं देती हैं. इन सुविधाओं की कुछ सूची में ये शामिल हैं:
- ट्रैफ़िक का खास बंटवारा
- डुप्लीकेट वर्शन बनाने का अनुरोध करें
- आउटलायर डिटेक्शन
- फिर से कोशिश करने का अनुरोध करें
- गलत इंजेक्शन
- बैकएंड सेशन अफ़िनिटी ऑडियंस (एक जैसी पसंद वाले दर्शक) के अन्य विकल्प
- हेडर बदलने के अन्य विकल्प
- क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस)
- लोड बैलेंसिंग के नए एल्गोरिदम
आपको इनके बारे में जानकारी मिलेगी
- मैनेज किए जा रहे इंस्टेंस ग्रुप और इससे जुड़े VPC और फ़ायरवॉल के नियम सेट अप करने का तरीका
- नए लोड बैलेंसर की, ट्रैफ़िक मैनेजमेंट की ऐडवांस सुविधाओं को इस्तेमाल करने का तरीका
- इस बात की पुष्टि करने का तरीका कि ट्रैफ़िक मैनेज करने की बेहतर सुविधाएं उम्मीद के मुताबिक काम कर रही हैं.
आपको इन चीज़ों की ज़रूरत होगी
- बुनियादी नेटवर्किंग और एचटीटीपी की जानकारी
- Unix/Linux कमांड लाइन के बारे में बुनियादी जानकारी
कोडलैब टोपोलॉजी और इस्तेमाल का उदाहरण
पहली इमेज - एचटीटीपी लोड बैलेंसर रूटिंग टोपोलॉजी
कोड लैब के दौरान, मैनेज किए जा रहे तीन इंस्टेंस ग्रुप सेट अप किए जाएंगे. पहला, पूर्व, पश्चिमी, और मध्य में. आपको एक ग्लोबल एक्सटर्नल एचटीटीपीएस लोड बैलेंसर बनाना होगा. लोड बैलेंसर, ऐडवांस लेवल की उन क्षमताओं की सूची की कई सुविधाओं का इस्तेमाल करेगा जो एनवॉय आधारित लोड बैलेंसर के साथ काम करती हैं. डिप्लॉयमेंट के बाद, कुछ सिम्युलेटेड लोड जनरेट करें और पुष्टि करें कि आपने जो कॉन्फ़िगरेशन सेट किए हैं वे ठीक से काम कर रहे हैं.
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेटअप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. साथ ही, आप इसे किसी भी समय अपडेट कर सकते हैं.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना पड़ता है और आम तौर पर इसकी पहचान
PROJECT_ID
के रूप में की जाती है. इसलिए, अगर आपको यह पसंद नहीं आता है, तो कोई भी कोड जनरेट करें. इसके अलावा, खुद का भी कोड बनाकर देखा जा सकता है कि वह उपलब्ध है या नहीं. फिर यह "फ़्रोज़न" होता है प्रोजेक्ट बनने के बाद. - तीसरी वैल्यू, प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
- इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.
Cloud Shell शुरू करना
Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:
प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:
इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस लैब में आपका सारा काम बस एक ब्राउज़र से किया जा सकता है.
शुरू करने से पहले
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो
gcloud कॉन्फ़िगरेशन सूची प्रोजेक्ट
gcloud कॉन्फ़िगरेशन सेट प्रोजेक्ट [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
इको $PROJECT_ID
एपीआई चालू करना
सभी ज़रूरी सेवाएं चालू करें
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. VPC नेटवर्क बनाना
VPC नेटवर्क बनाना
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 फ़ायरवॉल के नियम बनाना
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-9 \ --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-9 \ --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-9 \ --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
वेब सर्वर के काम करने के तरीके की पुष्टि करें
हर इंस्टेंस को एक आसान PHP स्क्रिप्ट के साथ Apache वेब-सर्वर चलाने के लिए कॉन्फ़िगर किया गया है, जो रेंडर करता है:
यह पक्का करने के लिए कि आपके वेब सर्वर सही तरीके से काम कर रहे हैं, Compute Engine पर जाएं -> VM इंस्टेंस. पक्का करें कि आपके नए इंस्टेंस (जैसे, us-east1-mig-xxx) उनके इंस्टेंस ग्रुप की परिभाषाओं के मुताबिक बनाए गए हों.
अब अपने ब्राउज़र में वेब अनुरोध करें, ताकि यह पक्का किया जा सके कि वेब सर्वर चल रहा है. इसे शुरू होने में कुछ मिनट लग सकते हैं. Compute Engine में मौजूद VM इंस्टेंस पेज पर, अपने इंस्टेंस ग्रुप से बनाया गया इंस्टेंस चुनें और उसके बाहरी (सार्वजनिक) आईपी पर क्लिक करें.
या अपने ब्राउज़र में, 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 beta 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 beta 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 beta 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 beta compute backend-services add-backend east-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-east1-mig \ --instance-group-zone=us-east1-b \ --global
बैकएंड सेवा में वेस्ट एमआईजी जोड़ें.
Cloud Shell से
gcloud beta 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 beta 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} जो सभी रिस्पॉन्स में मौजूद होगी. आखिर में, हमने यह भी जोड़ा है कि सारा ट्रैफ़िक, सेंट्रल-बैकएंड-सर्विस (सेंट्रल बैकएंड-सर्विस) की मदद से शेयर किया जाना चाहिए. ट्रैफ़िक की डुप्लीकेट कॉपी बनाकर यहां सिर्फ़ जांच के लिए भेजी गई है.
इस उदाहरण को अपनी मशीन पर .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 beta compute url-maps import web-map-http \ --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \ --global
एचटीटीपी फ़्रंटएंड बनाएं
लोड बैलेंसर बनाने का आखिरी चरण, फ़्रंटएंड बनाना है. यह आपके बनाए गए लोड बैलेंसर यूआरएल मैप से, पहले रिज़र्व किए गए आईपी पते को मैप करेगा.
Cloud Shell से
gcloud beta compute target-http-proxies create http-lb-proxy-adv \ --url-map=web-map-http
इसके बाद आपको ग्लोबल फ़ॉरवर्ड करने का नियम बनाना होगा, जो पहले रिज़र्व किए गए आईपी पते को एचटीटीपी प्रॉक्सी से मैप करेगा.
Cloud Shell से
gcloud beta 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
Sej-vm बनाएं
अब आपको seg-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
इसके बाद, अपनी बनाई गई वीएम में एसएसएच की सुविधा इस्तेमाल की जा सकती है. इसके बनने के बाद, टर्मिनल लॉन्च करने और कनेक्ट करने के लिए, एसएसएच पर क्लिक करें.
कनेक्ट होने के बाद, लोड जनरेट करने के लिए नीचे दिया गया कमांड चलाएं. उस आईपी पते का इस्तेमाल करें जिसे आपने एक्सटर्नल एचटीटीपी लोड बैलेंसर के लिए पहले बुक किया था.
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...
लोड डिस्ट्रिब्यूशन की जांच करें
अब सीज कैंपेन चलाकर, यह जांच की जा सकती है कि ट्रैफ़िक को पूर्व और पश्चिम की ओर से मैनेज किए जा रहे इंस्टेंस ग्रुप के बीच बराबर बांटा जा रहा है या नहीं. साथ ही, यह भी देखा जा सकता है कि ट्रैफ़िक मिररिंग काम कर रही है या नहीं और ट्रैफ़िक, मैनेज किए जा रहे सेंट्रल इंस्टेंस ग्रुप को भेजा जा रहा है या नहीं.
Cloud Console में, नेविगेशन मेन्यू में, नेटवर्क सेवाएं > लोड बैलेंसिंग. बैकएंड पर क्लिक करें. नीचे दिए गए स्क्रीनशॉट में दिखाए गए 'बेहतर मेन्यू' पर क्लिक करें.
बैकएंड सेवाएं टैब पर जाएं और east-backend-service चुनें
आपको इस MIG के बीच, रीयल टाइम में ट्रैफ़िक का बंटवारा दिखेगा. दर पर ध्यान दें, आप कुछ ही पल में इसकी तुलना वेस्ट-बैकएंड-सेवा से कर सकते हैं.
इसी तरह west-backend-service पर जाएं. आपको इस सेवा पर आने वाला ट्रैफ़िक भी दिखेगा. इसकी दर वही होनी चाहिए जो आपने east-backend-service में देखी थी, क्योंकि आपने ट्रैफ़िक के 50/50 राउंड रॉबिन स्प्लिट को कॉन्फ़िगर किया था.
यह पता करने के लिए कि ट्रैफ़िक डुप्लीकेट करने की आपकी बनाई गई नीति काम कर रही है या नहीं, आपको यह जांचना होगा कि सेंट्रल-बैकएंड-सेवा से मैनेज किए जा रहे इंस्टेंस ग्रुप के इस्तेमाल की जांच की जा रही है या नहीं. इसके लिए, कंप्यूट, कंप्यूट इंजन, इंस्टेंस ग्रुप पर जाएं, और us-central1-mig चुनें. इसके बाद, मॉनिटरिंग टैब पर जाएं.
आपको चार्ट में जानकारी अपने-आप भर जाएगी. इससे पता चलेगा कि मैनेज किए जा रहे इस इंस्टेंस ग्रुप में ट्रैफ़िक का डुप्लीकेट वर्शन बनाया गया है.
गच्चा देना बंद करें
अब जब आपने यह दिखा दिया है कि ट्रैफ़िक को बांटने का बेहतर तरीका काम कर रहा है, तो अब घेराबंदी को रोकने का समय आ गया है. ऐसा करने के लिए, siege-vm के एसएसएच टर्मिनल पर वापस जाएं और घेराबंदी को रोकने के लिए CTRL+C दबाएं.
जवाब देने का हेडर भेजे जाने की पुष्टि करना
स्टोरेज खाली करने से पहले, इस बात की तुरंत पुष्टि की जा सकती है कि एचटीटीपी लोड बैलेंसर, सही रिस्पॉन्स हेडर भेज रहा है या नहीं. आपने इसे कॉन्टेंट वैल्यू के साथ हेडर टेस्ट भेजने के लिए कॉन्फ़िगर किया था. Cloud Shell से कर्ल कमांड चलाने से आपको उम्मीद के मुताबिक रिस्पॉन्स मिलेगा.
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 gcloud alpha compute forwarding-rules delete http-content-rule --global gcloud alpha compute target-http-proxies delete http-lb-proxy-adv gcloud alpha compute url-maps delete web-map-http gcloud alpha compute backend-services delete east-backend-service --global gcloud alpha compute backend-services delete west-backend-service --global gcloud alpha 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) कोडलैब के साथ External HTTPs LB पूरा कर लिया है!
इसमें हमने इन विषयों के बारे में बताया
- मैनेज किए जा रहे इंस्टेंस ग्रुप और इससे जुड़े VPC और फ़ायरवॉल के नियम सेट अप करने का तरीका
- नए लोड बैलेंसर की, ट्रैफ़िक मैनेजमेंट की ऐडवांस सुविधाओं को इस्तेमाल करने का तरीका
- इस बात की पुष्टि करने का तरीका कि ट्रैफ़िक मैनेज करने की बेहतर सुविधाएं उम्मीद के मुताबिक काम कर रही हैं.
अगले चरण
- यूआरएल रीराइटिंग, सीओआरएस हेडर जोड़ने जैसी कुछ अन्य ऐडवांस रूटिंग सुविधाएं आज़माएं ( लिंक)