1. परिचय
Cloud DNS सेवा, बेहतर परफ़ॉर्मेंस वाला, भरोसेमंद, और ग्लोबल डोमेन नेम सिस्टम (डीएनएस) सलूशन उपलब्ध कराती है. इससे आपको खुद से मैनेज किए जाने वाले डीएनएस इन्फ़्रास्ट्रक्चर की ज़रूरत नहीं पड़ती. साथ ही, ज़ोन और रिकॉर्ड पब्लिश करने की सुविधा मिलती है.
सबसे अहम बात यह है कि Cloud DNS, बाहरी एंडपॉइंट के लिए राउटिंग की नीतियों में, हेल्थ चेक करने और अपने-आप फ़ेलओवर होने की सुविधाओं के लिए सहायता शामिल करता है. हालांकि, कृपया ध्यान दें कि इन बाहरी एंडपॉइंट की सेहत की जांच सिर्फ़ सार्वजनिक ज़ोन में की जा सकती है. साथ ही, एंडपॉइंट को इंटरनेट के ज़रिए सार्वजनिक तौर पर ऐक्सेस किया जाना चाहिए.
आपको क्या सीखने को मिलेगा
- अनमैनेज्ड इंस्टेंस ग्रुप के साथ क्षेत्रीय बाहरी ऐप्लिकेशन लोड बैलेंसर बनाने का तरीका.
- बाहरी डीएनएस राउटिंग के लिए, Cloud DNS की हेल्थ चेक की सुविधा को कॉन्फ़िगर करने का तरीका.
- फ़ेलओवर राउटिंग नीति बनाने का तरीका.
आपको इन चीज़ों की ज़रूरत होगी
- डीएनएस की बुनियादी जानकारी.
- Google Compute Engine की बुनियादी जानकारी.
- ऐप्लिकेशन लोड बैलेंसर की बुनियादी जानकारी.
- मालिक की अनुमतियों वाला Google Cloud प्रोजेक्ट
- आपके पास एक सार्वजनिक डोमेन होना चाहिए, जिसके लिए Cloud DNS सार्वजनिक ज़ोन बनाया जा सकता है.
- फ़िलहाल, Google Cloud Platform के प्रोजेक्ट में ये संगठन नीतियां लागू नहीं हैं: शील्ड किए गए वीएम और इंटरनेट नेटवर्क एंडपॉइंट ग्रुप.
2. कोडलैब टोपोलॉजी

इस कोडलैब में, बाहरी एंडपॉइंट के लिए Cloud DNS हेल्थ चेक का इस्तेमाल किया जाएगा. इससे, प्राइमरी लोड बैलेंसर का बैकएंड काम न करने पर, ट्रैफ़िक को बैकअप के तौर पर मौजूद रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर पर फिर से भेजा जा सकेगा.
आपको दो क्षेत्रों में एक वेबसाइट बनानी होगी. हर वेबसाइट के सामने एक External Application Load Balancer होगा. इसके बाद, फ़ेलओवर राउटिंग नीति का इस्तेमाल करके, Cloud DNS की परफ़ॉर्मेंस की जांच को कॉन्फ़िगर करें.
3. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- 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 पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
4. शुरू करने से पहले
एपीआई चालू करें
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट सेट अप हो गया हो और वैरिएबल कॉन्फ़िगर किए गए हों.
gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
# Define variables for regions and the domain
export REGION_A=us-central1
export REGION_B=us-west1
export DNS_ZONE=dnscodelab-zone
Export DNS_DOMAIN=gcp.<yourpublicdomain>.com
echo $projectid
echo $REGION_A
echo $REGION_B
echo $DNS_ZONE
echo $DNS_DOMAIN
सभी ज़रूरी सेवाएं चालू करें
gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com
5. Cloud Load Balancing इन्फ़्रास्ट्रक्चर बनाना
इस सेक्शन में, आपको दो अलग-अलग क्षेत्रों में ज़रूरी वीपीसी, सबनेट, फ़ायरवॉल के नियम, वीएम, और अनमैनेज्ड इंस्टेंस ग्रुप बनाने होंगे. इससे प्राइमरी और बैकअप लोड बैलेंसर काम कर पाएंगे.
VPC नेटवर्क
Cloud Shell से
gcloud compute networks create external-lb-vpc --subnet-mode=custom
बैकएंड वेब सर्वर होस्ट करने के लिए, REGION_A (प्राइमरी) और REGION_B (बैकअप) में दो सबनेट बनाएं
सबनेट बनाना
Cloud Shell से
gcloud compute networks subnets create subnet-a --network=external-lb-vpc --region=$REGION_A --range=10.10.1.0/24
gcloud compute networks subnets create subnet-b --network=external-lb-vpc --region=$REGION_B --range=10.20.1.0/24
हर क्षेत्र में, सिर्फ़ प्रॉक्सी वाले सबनेट बनाएं. ये सबनेट, उस रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर के लिए होंगे जिसे बाद में बनाया जाएगा.
यह सिर्फ़ प्रॉक्सी के लिए इस्तेमाल किया जाने वाला सबनेट, Envoy पर आधारित रीजनल लोड बैलेंसर के लिए ज़रूरी है. ये लोड बैलेंसर, external-lb-vpc नेटवर्क के एक ही रीजन में डिप्लॉय किए जाते हैं. ये प्रॉक्सी, क्लाइंट के कनेक्शन को खत्म कर देती हैं. इसके बाद, बैकएंड सेवाओं से नए कनेक्शन बनाती हैं.
Cloud Shell से
gcloud compute networks subnets create proxy-only-subnet-a \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$REGION_A \
--network=external-lb-vpc \
--range=10.129.0.0/23
gcloud compute networks subnets create proxy-only-subnet-b \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$REGION_B \
--network=external-lb-vpc \
--range=10.130.0.0/23
नेटवर्क फ़ायरवॉल के नियम बनाना
fw-allow-health-check. यह लोड बैलेंस किए जा रहे इंस्टेंस पर लागू होने वाला इन्ग्रेस नियम है. इससे Google Cloud के हेल्थ चेकिंग सिस्टम (130.211.0.0/22 और 35.191.0.0/16 में) से आने वाले सभी टीसीपी ट्रैफ़िक को अनुमति मिलती है. इस उदाहरण में, टारगेट टैग load-balanced-backend का इस्तेमाल किया गया है. इससे उन वीएम की पहचान की जाती है जिन पर फ़ायरवॉल का नियम लागू होता है.
fw-allow-proxies. यह लोड बैलेंस किए जा रहे इंस्टेंस पर लागू होने वाला इन्ग्रेस नियम है. इससे रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर की मैनेज की गई प्रॉक्सी से, पोर्ट 80 पर टीसीपी ट्रैफ़िक की अनुमति मिलती है. इस उदाहरण में, टारगेट टैग load-balanced-backend का इस्तेमाल किया गया है. इससे उन वीएम की पहचान की जाती है जिन पर फ़ायरवॉल का नियम लागू होता है.
Cloud Shell से
gcloud compute firewall-rules create fw-allow-health-check \
--network=external-lb-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=load-balanced-backend \
--rules=tcp
gcloud compute firewall-rules create fw-allow-proxies \
--network=external-lb-vpc \
--action=allow \
--direction=ingress \
--source-ranges=10.129.0.0/23,10.130.0.0/23 \
--target-tags=load-balanced-backend \
--rules=tcp:80
आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, फ़ायरवॉल का ऐसा नियम बनाएं जो:
- यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
- इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.
Cloud Shell से
gcloud compute firewall-rules create allow-ssh \
--allow tcp:22 --network external-lb-vpc \
--source-ranges 35.235.240.0/20 \
--description "SSH with IAP" \
--target-tags=allow-ssh
6. Cloud NAT और Cloud Router बनाना
निजी वीएम को इंटरनेट से पैकेज डाउनलोड और इंस्टॉल करने के लिए, आपको दोनों क्षेत्रों में Cloud NAT गेटवे की ज़रूरत होगी.
- हमारे वेब सर्वर वीएम को Apache वेब सर्वर डाउनलोड और इंस्टॉल करना होगा.
- क्लाइंट वीएम को dnsutils पैकेज डाउनलोड और इंस्टॉल करना होगा. हम इसका इस्तेमाल टेस्टिंग के लिए करेंगे.
हर Cloud NAT गेटवे, किसी एक वीपीसी नेटवर्क, क्षेत्र, और Cloud Router से जुड़ा होता है. इसलिए, NAT गेटवे बनाने से पहले, हमें हर क्षेत्र में Cloud Router बनाने होंगे.
क्लाउड राऊटर बनाना
Cloud Shell से
gcloud compute routers create "$REGION_A-cloudrouter" \
--region $REGION_A --network=external-lb-vpc --asn=65501
gcloud compute routers create "$REGION_B-cloudrouter" \
--region $REGION_B --network=external-lb-vpc --asn=65501
NAT गेटवे बनाना
Cloud Shell से
gcloud compute routers nats create "$REGION_A-nat-gw" \
--router="$REGION_A-cloudrouter" \
--router-region=$REGION_A \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
gcloud compute routers nats create "$REGION_B-nat-gw" \
--router="$REGION_B-cloudrouter" \
--router-region=$REGION_B \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
बैकएंड वीएम और अनमैनेज्ड इंस्टेंस ग्रुप बनाना
हर क्षेत्र में वीएम बनाएं और वेब सर्वर इंस्टॉल करें (जैसे, Apache):
Cloud Shell से
# Primary (Region A)
gcloud compute instances create vm-a \
--zone=$REGION_A-a \
--image-family=debian-12 --image-project=debian-cloud \
--subnet=subnet-a \
--no-address \
--tags=load-balanced-backend,allow-ssh \
--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://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" - $REGION_A Primary Backend |\
tee /var/www/html/index.html
systemctl restart apache2'
# Backup (Region B)
gcloud compute instances create vm-b \
--zone=$REGION_B-a \
--image-family=debian-12 --image-project=debian-cloud \
--subnet=subnet-b \
--no-address \
--tags=load-balanced-backend,allow-ssh \
--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://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" - $REGION_B Backup Backend |\
tee /var/www/html/index.html
systemctl restart apache2'
हर क्षेत्र के लिए, एक अनमैनेज्ड इंस्टेंस ग्रुप बनाएं और उसमें वीएम इंस्टेंस जोड़ें:
Cloud Shell से
# Primary (Region A)
gcloud compute instance-groups unmanaged create ig-a --zone=$REGION_A-a
gcloud compute instance-groups unmanaged add-instances ig-a --zone=$REGION_A-a --instances=vm-a
# Backup (Region B)
gcloud compute instance-groups unmanaged create ig-b --zone=$REGION_B-a
gcloud compute instance-groups unmanaged add-instances ig-b --zone=$REGION_B-a --instances=vm-b
7. रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर कॉन्फ़िगर करना
आपको REGION_A (प्राइमरी) और REGION_B (बैकअप), दोनों में पूरा रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर कॉन्फ़िगर करना होगा.
हेल्थ चेक और बैकएंड सेवाएं बनाना
रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर, Envoy पर आधारित होते हैं. साथ ही, इनके लिए रीजनल हेल्थ चेक कॉन्फ़िगर करना ज़रूरी होता है.
एचटीटीपी हेल्थ चेक बनाएं. इसका इस्तेमाल लोड बैलेंसर, इंस्टेंस की स्थिति की जांच करने के लिए करते हैं:
Cloud Shell में
gcloud compute health-checks create http http-lb-hc-primary-region \
--port 80 \
--region=$REGION_A
gcloud compute health-checks create http http-lb-hc-backup-region \
--port 80 \
--region=$REGION_B
हर क्षेत्र के लिए एक बैकएंड सेवा बनाएं और हर क्षेत्र में इंस्टेंस ग्रुप अटैच करें**.**
Cloud Shell में
# Primary (Region A)
gcloud compute backend-services create be-svc-a \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-lb-hc-primary-region \
--health-checks-region=$REGION_A \
--region=$REGION_A
gcloud compute backend-services add-backend be-svc-a \
--instance-group=ig-a \
--instance-group-zone=$REGION_A-a \
--region=$REGION_A
# Backup (Region B)
gcloud compute backend-services create be-svc-b \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-lb-hc-backup-region \
--health-checks-region=$REGION_B \
--region=$REGION_B
gcloud compute backend-services add-backend be-svc-b --instance-group=ig-b --instance-group-zone=$REGION_B-a --region=$REGION_B
फ़्रंटएंड कॉम्पोनेंट बनाना
दोनों क्षेत्रों में यूआरएल मैप और टारगेट एचटीटीपी प्रॉक्सी बनाएं:
Cloud Shell में
#Primary (Region A)
gcloud compute url-maps create url-map-a \
--default-service=be-svc-a \
--region=$REGION_A
gcloud compute target-http-proxies create http-proxy-a \
--url-map=url-map-a \
--url-map-region=$REGION_A \
--region=$REGION_A
#Backup (Region B)
gcloud compute url-maps create url-map-b \
--default-service=be-svc-b \
--region=$REGION_B
gcloud compute target-http-proxies create http-proxy-b \
--url-map=url-map-b \
--url-map-region=$REGION_B \
--region=$REGION_B
फ़ॉरवर्डिंग के नियमों के लिए, स्टैटिक आईपी पते (बाहरी) रिज़र्व करें:
Cloud Shell में
# Primary IP (Region A)
gcloud compute addresses create rxlb-ip-a --region=$REGION_A
# Backup IP (Region B)
gcloud compute addresses create rxlb-ip-b --region=$REGION_B
दोनों लोड बैलेंसर के लिए, फ़ॉरवर्डिंग के नियम बनाएं:
Cloud Shell में
# Primary (Region A)
gcloud compute forwarding-rules create http-fwd-rule-a \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network=external-lb-vpc \
--region=$REGION_A \
--target-http-proxy-region=$REGION_A \
--address=rxlb-ip-a \
--target-http-proxy=http-proxy-a \
--ports=80
# Backup (Region B)
gcloud compute forwarding-rules create http-fwd-rule-b \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network=external-lb-vpc \
--region=$REGION_B \
--target-http-proxy-region=$REGION_B \
--address=rxlb-ip-b \
--target-http-proxy=http-proxy-b \
--ports=80
फ़ेलओवर के लिए Cloud DNS को कॉन्फ़िगर करना
बाहरी एंडपॉइंट के लिए, Cloud DNS हेल्थ चेक बनाना
आपको लोड बैलेंसर के सार्वजनिक आईपी पतों के लिए, ग्लोबल हेल्थ चेक बनाना होगा. यह लोड बैलेंसर के इंटरनल हेल्थ चेक से अलग है.
सबसे पहले, फ़ेलओवर नीति को कॉन्फ़िगर करने के लिए, लोड बैलेंसर के बाहरी आईपी पतों का पता लगाएं और उन्हें वैरिएबल के तौर पर एक्सपोर्ट करें
Cloud Shell में
PRIMARY_IP=$(gcloud compute addresses describe rxlb-ip-a --region=$REGION_A --format='get(address)')
BACKUP_IP=$(gcloud compute addresses describe rxlb-ip-b --region=$REGION_B --format='get(address)')
ग्लोबल डीएनएस हेल्थ चेक बनाएं. इसके लिए, तीन सोर्स रीजन की ज़रूरत होती है:
Cloud Shell में
gcloud beta compute health-checks create http dns-failover-health-check \
--global \
--source-regions=$REGION_A,$REGION_B,europe-west1 \
--request-path=/ \
--check-interval=30s \
--port=80 \
--enable-logging
सार्वजनिक तौर पर मैनेज किया गया ज़ोन और फ़ेलओवर राउटिंग की नीति बनाएं.
डीएनएस से मैनेज किया गया सार्वजनिक ज़ोन बनाएं (अपने डीएनएस डोमेन का इस्तेमाल करें):
Cloud Shell में
gcloud dns managed-zones create codelab-publiczone --dns-name=$DNS_DOMAIN --description="Codelab DNS Failover Zone"
फ़ेलओवर राउटिंग नीति के साथ A रिकॉर्ड बनाएं. यह नीति प्राइमरी आईपी की ओर इशारा करती है. साथ ही, यह हेल्थ चेक का इस्तेमाल करके यह तय करती है कि बैकअप आईपी पर कब फ़ेलओवर करना है.
नीचे दिए गए कमांड में, लोड बैलेंसर के फ़ॉरवर्डिंग नियम के नामों का इस्तेमाल किया गया है. इससे रूटिंग की नीति के लिए आईपी पतों का रेफ़रंस दिया जा सकता है.
gcloud beta dns record-sets create codelab.gcp.axiszulu.com. \
--type=A \
--ttl=5 \
--zone=codelab-publiczone \
--routing_policy_type=FAILOVER \
--routing-policy-primary-data=$PRIMARY_IP \
--routing-policy-backup-data-type=GEO \
--routing-policy-backup-item=location=$REGION_B,external_endpoints=$BACKUP_IP \
--health-check=dns-failover-health-check
8. क्षेत्र के हिसाब से फ़ेलओवर की जांच करना
- शुरुआती पुष्टि: अपने डोमेन के बारे में क्वेरी करने के लिए, किसी टूल (जैसे कि
digया वेब ब्राउज़र) का इस्तेमाल करें. इसे प्राइमरी आईपी ($PRIMARY_IP) पर ले जाना चाहिए और "रीजन A - प्राइमरी बैकएंड" पेज दिखाना चाहिए.
dig codelab.gcp.axiszulu.com
OUTPUT
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> codelab.gcp.axiszulu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16096
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;codelab.gcp.axiszulu.com. IN A
;; ANSWER SECTION:
codelab.gcp.axiszulu.com. 5 IN A <PRIMARY_IP>
ब्राउज़र से मिला आउटपुट

- फ़ेलओवर की जांच करना: प्राइमरी वीएम (
vm-a) में लॉग इन करें और Apache को बंद करें, ताकि आउटेज की जांच की जा सके:
Cloud Shell में
gcloud compute ssh vm-a --zone=$REGION_A-a --command="sudo systemctl stop apache2"
- अनहेल्दी स्टेटस की पुष्टि करें: डीएनएस की स्थिति की जांच करने के लिए, दो से तीन मिनट इंतज़ार करें. इससे प्राइमरी एंडपॉइंट को अनहेल्दी के तौर पर मार्क किया जा सकेगा.
# check health status
gcloud compute backend-services get-health be-svc-a --region=${REGION_A}
Output:
backend: https://www.googleapis.com/compute/v1/projects/precise-airship-466617-c3/zones/us-central1-a/instanceGroups/ig-a
status:
healthStatus:
- healthState: UNHEALTHY
instance: https://www.googleapis.com/compute/v1/projects/precise-airship-466617-c3/zones/us-central1-a/instances/vm-a
ipAddress: 10.10.1.2
port: 80
kind: compute#backendServiceGroupHealth
- फ़ेलओवर की पुष्टि करें: अपने डोमेन के लिए फिर से क्वेरी करें. अब इसे बैकअप आईपी (
$BACKUP_IP) पर रीडायरेक्ट होना चाहिए. साथ ही, "रीजन B - बैकअप बैकएंड" पेज दिखना चाहिए.
dig codelab.gcp.axiszulu.com
OUTPUT
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> codelab.gcp.axiszulu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16096
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;codelab.gcp.axiszulu.com. IN A
;; ANSWER SECTION:
codelab.gcp.axiszulu.com. 5 IN A <BACKUP_IP>
ब्राउज़र से मिला आउटपुट

- फ़ेलबैक की जांच करें (ज़रूरी नहीं): प्राइमरी वीएम पर SSH करें और Apache शुरू करें. इसके बाद, डीएनएस हेल्थ चेक के प्राइमरी एंडपॉइंट को सही के तौर पर मार्क करने का इंतज़ार करें. ट्रैफ़िक को प्राइमरी आईपी पर अपने-आप वापस रूट होना चाहिए.
- ज़रूरी नहीं: क्लाउड शेल में नीचे दी गई कमांड चलाकर, Cloud DNS की हेल्थ चेक लॉगिंग का विश्लेषण किया जा सकता है
gcloud logging read "logName=projects/${projectid}/logs/compute.googleapis.com%2Fhealthchecks" \
--limit=10 \
--project=${projectid} \
--freshness=1d \
--format="table(timestamp:label=TIME, \
jsonPayload.healthCheckProbeResult.ipAddress:label=BACKEND_IP, \
jsonPayload.healthCheckProbeResult.previousDetailedHealthState:label=PREVIOUS_STATE, \
jsonPayload.healthCheckProbeResult.detailedHealthState:label=CURRENT_STATE, \
jsonPayload.healthCheckProbeResult.probeResultText:label=RESULT_TEXT)"
9. क्लीनअप करने का तरीका
आने वाले समय में शुल्क से बचने के लिए, सभी कॉम्पोनेंट मिटाएं.
Cloud Shell से
# Delete VMs
gcloud compute instances delete vm-a --zone=$REGION_A-a --quiet
gcloud compute instances delete vm-b --zone=$REGION_B-a --quiet
# Delete Load Balancer Components (Primary)
gcloud compute forwarding-rules delete http-fwd-rule-a --region=$REGION_A --quiet
gcloud compute target-http-proxies delete http-proxy-a --region=$REGION_A --quiet
gcloud compute url-maps delete url-map-a --region=$REGION_A --quiet
gcloud compute backend-services delete be-svc-a --region=$REGION_A --quiet
gcloud compute addresses delete rxlb-ip-a --region=$REGION_A --quiet
# Delete Load Balancer Components (Backup)
gcloud compute forwarding-rules delete http-fwd-rule-b --region=$REGION_B --quiet
gcloud compute target-http-proxies delete http-proxy-b --region=$REGION_B --quiet
gcloud compute url-maps delete url-map-b --region=$REGION_B --quiet
gcloud compute backend-services delete be-svc-b --region=$REGION_B --quiet
gcloud compute addresses delete rxlb-ip-b --region=$REGION_B --quiet
# Delete Instance Groups and LB Health Checks
gcloud compute instance-groups unmanaged delete ig-a --zone=$REGION_A-a --quiet
gcloud compute instance-groups unmanaged delete ig-b --zone=$REGION_B-a --quiet
gcloud compute health-checks delete http-lb-hc-primary-region --region=$REGION_A --quiet
gcloud compute health-checks delete http-lb-hc-backup-region --region=$REGION_B --quiet
# Delete Cloud DNS Records Zone and DNS Heath Checks
gcloud dns record-sets delete $DNS_DOMAIN --type=A --zone=codelab-publiczone --quiet
gcloud dns managed-zones delete codelab-publiczone --quiet
gcloud compute health-checks delete dns-failover-health-check --global --quiet
# Delete Cloud NAT and Cloud Routers
gcloud compute routers nats delete $REGION_A-nat-gw \
--router=$REGION_A-cloudrouter --region=$REGION_A --quiet
gcloud compute routers nats delete $REGION_B-nat-gw \
--router=$REGION_B-cloudrouter --region=$REGION_B --quiet
gcloud compute routers delete $REGION_A-cloudrouter \
--region=$REGION_A --quiet
gcloud compute routers delete $REGION_B-cloudrouter \
--region=$REGION_B --quiet
# Delete Subnets and Firewall Rules
gcloud compute firewall-rules delete fw-allow-health-check --quiet
gcloud compute firewall-rules delete fw-allow-proxies --quiet
gcloud compute firewall-rules delete allow-ssh --quiet
gcloud compute networks subnets delete subnet-a \
--region=$REGION_A --quiet
gcloud compute networks subnets delete subnet-b \
--region=$REGION_B --quiet
gcloud compute networks subnets delete proxy-only-subnet-a \
--region=$REGION_A --quiet
gcloud compute networks subnets delete proxy-only-subnet-b \
--region=$REGION_B --quiet
gcloud compute networks delete external-lb-vpc --quiet
10. बधाई हो!
कोडलैब पूरा करने के लिए बधाई.
- आपने Cloud DNS हेल्थ चेक और रीजनल एक्सटर्नल ऐप्लिकेशन लोड बैलेंसर का इस्तेमाल करके, एक से ज़्यादा क्षेत्रों में ऐक्टिव-पैसिव फ़ेलओवर को कॉन्फ़िगर और पुष्टि कर लिया है