1. परिचय
पिछला अपडेट: 22-09-2022
डीएनएस राउटिंग की नीति क्या होती है
Cloud DNS की राउटिंग नीतियां, उपयोगकर्ताओं को डीएनएस आधारित ट्रैफ़िक स्टीयरिंग को कॉन्फ़िगर करने की सुविधा देती हैं. यह सुविधा, वज़न, भौगोलिक जगह या हेल्थ चेक जैसे कुछ खास मानदंड पर निर्भर करती है.
Cloud DNS, राउटिंग की इन नीतियों के साथ काम करता है:
- वेटेड राउंड रॉबिन रूटिंग नीति
- जियोलोकेशन के हिसाब से कॉल रूट करने की नीति
- जियोफ़ेंसिंग के आधार पर रूटिंग की नीति
- फ़ेलओवर रूटिंग की नीति
इस लैब में, फ़ेलओवर राउटिंग नीति को कॉन्फ़िगर और टेस्ट किया जाएगा.
फ़ेलओवर रूटिंग की नीति
Cloud DNS, इंटरनल टीसीपी/यूडीपी लोड बैलेंसर के लिए हेल्थ चेक की सुविधा देता है. इसके लिए, ग्लोबल ऐक्सेस चालू होना चाहिए. फ़ेलओवर राउटिंग नीति की मदद से, किसी संसाधन रिकॉर्ड के लिए प्राइमरी और बैकअप आईपी पते कॉन्फ़िगर किए जा सकते हैं. सामान्य तौर पर, Cloud DNS क्वेरी के जवाब में, प्राइमरी सेट में दिए गए आईपी पतों का इस्तेमाल करेगा. जब प्राइमरी सेट में मौजूद सभी आईपी पते काम नहीं करते हैं (सेहत की स्थिति बदलकर खराब हो जाती है), तो Cloud DNS, बैकअप सेट में मौजूद आईपी पतों को इस्तेमाल करना शुरू कर देता है.
सेहत से जुड़े आकलन
डीएनएस राउटिंग की नीति, नेटिव इंटरनल लोड बैलेंसर की यूनीफ़ाइड हेल्थ चेक(यूएचसी) पर निर्भर करेगी. अगर 20% (या इससे ज़्यादा) बैकएंड सही तरीके से काम कर रहे हैं, तो इंटरनल लोड बैलेंसर को सही माना जाता है. इंटरनल टीसीपी/यूडीपी और इंटरनल एचटीटीपीएस या एचटीटीपी लोड बैलेंसर के लिए, हेल्थ चेक अलग-अलग जानकारी देते हैं. इंटरनल एचटीटीपी या एचटीटीपीएस लोड बैलेंसर के लिए, यूएचसी सभी Envoy प्रॉक्सी की सेहत की स्थिति के बारे में जानकारी देता है. हालांकि, इंटरनल टीसीपी/यूडीपी लोड बैलेंसर के लिए, Cloud DNS को अलग-अलग बैकएंड इंस्टेंस से सीधे तौर पर सेहत की स्थिति के बारे में सिग्नल मिलते हैं. सेहत की जांच के बारे में जानकारी यहां देखी जा सकती है .
आपको क्या बनाने को मिलेगा
इस कोडलैब में, आपको दो इलाकों में चलने वाली एक वेबसाइट बनानी है. साथ ही, उससे फ़ेलओवर डीएनएस राउटिंग नीति को जोड़ना है. सेट अप में ये चीज़ें शामिल होंगी:
चालू संसाधन -
- REGION_1 में L4 इंटरनल लोड बैलेंसर
- REGION_1 में Apache वेब सर्वर चलाने वाली वीएम
बैकअप के संसाधन -
- REGION_2 में L4 इंटरनल लोड बैलेंसर
- REGION_2 में Apache वेब सर्वर चलाने वाली वीएम
सेट अप करने का तरीका यहां दिया गया है -

आपको क्या सीखने को मिलेगा
- फ़ेलओवर राउटिंग नीति बनाने का तरीका
- डीएनएस फ़ेलओवर ट्रिगर करना
- बैकअप सेट पर ट्रैफ़िक को धीरे-धीरे कैसे भेजा जाता है
आपको इन चीज़ों की ज़रूरत होगी
- डीएनएस की बुनियादी जानकारी
- Google Compute Engine की बुनियादी जानकारी
- लेयर 4 इंटरनल लोड बैलेंसर की बुनियादी जानकारी
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 पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
3. Google Cloud SDK का वर्शन
यह लेख लिखते समय, 401.0.0, Google Cloud SDK का सबसे नया वर्शन है. इस लैब में मौजूद सभी कमांड को Google Cloud SDK के नए वर्शन का इस्तेमाल करके टेस्ट किया गया है. आगे बढ़ने से पहले, कृपया पक्का करें कि Cloud Shell में एसडीके का नया वर्शन इस्तेमाल किया जा रहा हो.
एसडीके टूल का वर्शन देखना
एसडीके टूल का वर्शन देखने के लिए, gcloud version कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं
Command
gcloud version | grep "Google Cloud SDK"
आउटपुट का उदाहरण
Google Cloud SDK 401.0.0
अगले चरण
- अगर एसडीके टूल का वर्शन
401.0.0या इसके बाद का है, तो अगले सेक्शन पर जाएं. - अगर एसडीके का वर्शन
401.0.0से कम है, तो एसडीके को अपडेट करने के लिए यहां दी गई कमांड चलाएं.
ज़रूरी नहीं है
sudo apt-get update && sudo apt-get install google-cloud-sdk
4. शुरू करने से पहले
ऊपर बताए गए आर्किटेक्चर को डिप्लॉय करने से पहले, आइए यह पक्का कर लें कि Cloud Shell को सही तरीके से कॉन्फ़िगर किया गया हो और सभी ज़रूरी एपीआई चालू हों.
प्रोजेक्ट आईडी सेट अप करना
Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो. अगर आपका Cloud Shell प्रॉम्प्ट, यहां दिए गए आउटपुट की तरह दिखता है और आपको प्रोजेक्ट आईडी नहीं बदलना है, तो अगले चरण (एनवायरमेंट वैरिएबल सेट करना) पर जाएं.
USER@cloudshell:~ (PROJECT_ID)$
अगर आपको अब भी प्रोजेक्ट आईडी बदलना है, तो यहां दिया गया निर्देश इस्तेमाल करें. इससे Cloud Shell प्रॉम्प्ट, (PROJECT_ID) से बदलकर (YOUR-PROJECT-ID) हो जाएगा
ज़रूरी नहीं है
gcloud config set project [YOUR-PROJECT-ID]
आउटपुट का उदाहरण
Updated property [core/project]. USER@cloudshell:~ (YOUR-PROJECT-ID)$
एनवायरमेंट वैरिएबल सेट करना
एनवायरमेंट वैरिएबल सेट करना
हम एनवायरमेंट वैरिएबल सेट करने के लिए, export कमांड का इस्तेमाल करेंगे. Cloud Shell में ये कमांड चलाएं
कमांड
export REGION_1=us-west1
export REGION_1_ZONE=us-west1-a
export REGION_2=us-east4
export REGION_2_ZONE=us-east4-a
पुष्टि करें
अब एनवायरमेंट वैरिएबल सेट हो गए हैं. आइए, echo कमांड का इस्तेमाल करके इसकी पुष्टि करें. हर कमांड का आउटपुट, वह वैल्यू होनी चाहिए जिसे हमने ऊपर export कमांड का इस्तेमाल करके कॉन्फ़िगर किया है. Cloud Shell में ये कमांड चलाएं
कमांड
echo $REGION_1
echo $REGION_1_ZONE
echo $REGION_2
echo $REGION_2_ZONE
सभी ज़रूरी सेवाएं चालू करें
Compute और DNS API चालू करने के लिए, gcloud services enable कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं
Compute API चालू करना
Command
gcloud services enable compute.googleapis.com
डीएनएस एपीआई चालू करना
Command
gcloud services enable dns.googleapis.com
पुष्टि करें
अब जब सेवाएं चालू हो गई हैं, तो आइए gcloud services list कमांड का इस्तेमाल करके पुष्टि करें. इससे चालू किए गए सभी एपीआई की सूची दिखेगी.
Command
gcloud services list | grep -E 'compute|dns'
आउटपुट का उदाहरण
NAME: compute.googleapis.com NAME: dns.googleapis.com
5. VPC नेटवर्क, सबनेट, और फ़ायरवॉल के नियम बनाना
इस सेक्शन में, हम वीपीसी नेटवर्क, दो सबनेट (हर क्षेत्र में एक) और फ़ायरवॉल के ज़रूरी नियम बनाएंगे.
VPC नेटवर्क बनाना
वीपीसी नेटवर्क बनाने के लिए, gcloud compute networks create कमांड का इस्तेमाल करें. हम सबनेट मोड को कस्टम के तौर पर सेट कर रहे हैं, क्योंकि अगले चरण में हम अपने सबनेट बनाएंगे. Cloud Shell में ये कमांड चलाएं.
Command
gcloud compute networks create my-vpc --subnet-mode custom
सबनेट बनाना
REGION_1 और REGION_2 में एक-एक सबनेट बनाने के लिए, gcloud compute networks subnets create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं
REGION_1 सबनेट
Command
gcloud compute networks subnets create ${REGION_1}-subnet \
--network my-vpc \
--range 10.1.0.0/24 \
--region $REGION_1
REGION_2 सबनेट
Command
gcloud compute networks subnets create ${REGION_2}-subnet \
--network my-vpc \
--range 10.2.0.0/24 \
--region $REGION_2
फ़ायरवॉल के नियम बनाना
आपको वीपीसी सबनेट और लोड बैलेंसर के हेल्थ चेक की आईपी रेंज से, पोर्ट 80 पर ट्रैफ़िक की अनुमति देनी होगी.
इसके अलावा, आपको क्लाइंट वीएम पर एसएसएच ट्रैफ़िक की अनुमति देने के लिए, फ़ायरवॉल का नियम भी बनाना होगा.
फ़ायरवॉल के नियम बनाने के लिए, gcloud compute firewall-rules create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं
पोर्ट 80 पर ट्रैफ़िक की अनुमति दें
Command
gcloud compute firewall-rules create allow-http-lb-hc \ --allow tcp:80 --network my-vpc \ --source-ranges 10.1.0.0/24,10.2.0.0/24,35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-http
क्लाइंट वीएम पर एसएसएच ट्रैफ़िक की अनुमति देना
Command
gcloud compute firewall-rules create allow-ssh \ --allow tcp:22 --network my-vpc \ --source-ranges 0.0.0.0/0 \ --target-tags=allow-ssh
6. क्लाउड एनएटी बनाना
निजी वीएम को इंटरनेट से पैकेज डाउनलोड और इंस्टॉल करने के लिए, आपको दोनों क्षेत्रों में Cloud NAT गेटवे की ज़रूरत होगी.
- हमारे वेब सर्वर वीएम को Apache वेब सर्वर डाउनलोड और इंस्टॉल करना होगा.
- क्लाइंट वीएम को dnsutils पैकेज डाउनलोड और इंस्टॉल करना होगा. हम इसका इस्तेमाल टेस्टिंग के लिए करेंगे.
हर Cloud NAT गेटवे, किसी एक वीपीसी नेटवर्क, क्षेत्र, और Cloud Router से जुड़ा होता है. इसलिए, NAT गेटवे बनाने से पहले, हमें हर क्षेत्र में Cloud Router बनाने होंगे.
क्लाउड राऊटर बनाना
us-west1 और us-east4 क्षेत्रों में Cloud Router बनाने के लिए, gcloud compute routers create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं.
Region_1 Cloud Router
कमांड
gcloud compute routers create "${REGION_1}-cloudrouter" \
--region $REGION_1 --network=my-vpc --asn=65501
Region_2 Cloud Router
कमांड
gcloud compute routers create "${REGION_2}-cloudrouter" \
--region $REGION_2 --network=my-vpc --asn=65501
NAT गेटवे बनाना
us-west1 और us-east4 क्षेत्रों में NAT गेटवे बनाने के लिए, gcloud compute routers nat create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं.
Region_1 NAT Gateway
कमांड
gcloud compute routers nats create "${REGION_1}-nat-gw" \
--router="${REGION_1}-cloudrouter" \
--router-region=$REGION_1 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
Region_2 NAT Gateway
कमांड
gcloud compute routers nats create "${REGION_2}-nat-gw" \
--router="${REGION_2}-cloudrouter" \
--router-region=$REGION_2 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
7. Compute Engine VM बनाना
इस सेक्शन में, वेब सर्वर, वेब सर्वर के लिए अनमैनेज्ड इंस्टेंस ग्रुप, और क्लाइंट वीएम बनाए जाएंगे.
वेब सर्वर वीएम बनाना
वेब सर्वर बनाने के लिए, gcloud compute instances create कमांड का इस्तेमाल करें. हमें दो वेब सर्वर बनाने हैं. एक REGION_1 में और दूसरा REGION_2 में. हम वेब सर्वर पर Apache को इंस्टॉल और कॉन्फ़िगर करने के लिए, स्टार्टअप स्क्रिप्ट का इस्तेमाल कर रहे हैं.
REGION_1 Web Server
Cloud Shell में यह कमांड चलाएं
Command
gcloud compute instances create "${REGION_1}-instance" \
--image-family=debian-11 --image-project=debian-cloud \
--zone=$REGION_1_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \
--tags=allow-http \
--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'
REGION_2 Web Server
Cloud Shell में यह कमांड चलाएं
Command
gcloud compute instances create "${REGION_2}-instance" \
--image-family=debian-11 --image-project=debian-cloud \
--zone=$REGION_2_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_2}-subnet,no-address \
--tags=allow-http \
--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'
अनमैनेज्ड इंस्टेंस ग्रुप बनाना
इस सेक्शन में, हम दो अनमैनेज्ड इंस्टेंस ग्रुप बनाते हैं. हम अगले सेक्शन में इन इंस्टेंस ग्रुप का इस्तेमाल करके, आईएलबी बैकएंड सेवाओं को कॉन्फ़िगर करेंगे. इंस्टेंस ग्रुप बनाने के बाद, हम वेब सर्वर वीएम को इन इंस्टेंस ग्रुप में जोड़ देंगे.
अनमैनेज्ड इंस्टेंस ग्रुप बनाना
gcloud compute instance-groups unmanaged create कमांड का इस्तेमाल करके, दो अनमैनेज्ड इंस्टेंस ग्रुप बनाएं. एक us-west1 वेब सर्वर के लिए और दूसरा us-east4 वेब सर्वर के लिए.
Region_1 इंस्टेंस ग्रुप
कमांड
gcloud compute instance-groups unmanaged create \
"${REGION_1}-instance-group" --zone=$REGION_1_ZONE
Region_2 इंस्टेंस ग्रुप
कमांड
gcloud compute instance-groups unmanaged create \
"${REGION_2}-instance-group" --zone=$REGION_2_ZONE
इंस्टेंस ग्रुप में वीएम जोड़ना
अभी बनाए गए इंस्टेंस ग्रुप में इंस्टेंस जोड़ने के लिए, gcloud compute instance-groups unmanaged add-instances कमांड का इस्तेमाल करें. REGION_1 वेब सर्वर को REGION_1 इंस्टेंस ग्रुप में और REGION_2 वेब सर्वर को REGION_2 इंस्टेंस ग्रुप में जोड़ें
Region_1 इंस्टेंस ग्रुप
कमांड
gcloud compute instance-groups unmanaged add-instances \
"${REGION_1}-instance-group" --instances $REGION_1-instance \
--zone=$REGION_1_ZONE
Region_2 इंस्टेंस ग्रुप
कमांड
gcloud compute instance-groups unmanaged add-instances \
"${REGION_2}-instance-group" --instances $REGION_2-instance \
--zone=$REGION_2_ZONE
क्लाइंट वीएम बनाना
हम इस वीएम का इस्तेमाल, जांच करने और अपने डीएनएस कॉन्फ़िगरेशन की पुष्टि करने के लिए करेंगे. हम dnsutils पैकेज को इंस्टॉल करने के लिए, स्टार्टअप स्क्रिप्ट का इस्तेमाल कर रहे हैं. Cloud Shell में ये कमांड चलाएं.
Command
gcloud compute instances create client-instance --image-family=debian-11 \
--image-project=debian-cloud \
--zone=$REGION_1_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \
--tags=allow-ssh \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install dnsutils -y'
8. L4 इंटरनल लोड बैलेंसर बनाना
L4 आईएलबी बनाने के लिए, हमें हेल्थ चेक, बैकएंड सेवा, और फ़ॉरवर्डिंग का नियम बनाना होगा.
हेल्थ चेक बनाना
हेल्थ चेक बनाने के लिए, gcloud compute health-checks create कमांड का इस्तेमाल करें. हम बुनियादी एचटीटीपी हेल्थ चेक बना रहे हैं. साथ ही, टारगेट पोर्ट 80 है. Cloud Shell में ये कमांड चलाएं
Command
gcloud compute health-checks create http http-hc --port 80
बैकएंड सेवाओं को कॉन्फ़िगर करना
बैकएंड सेवा बनाने के लिए, gcloud compute backend-services create कमांड का इस्तेमाल करें. बैकएंड सेवाएं बनाने के बाद, हम gcloud compute backend-services add-backend कमांड का इस्तेमाल करके, मैनेज न किए गए इंस्टेंस ग्रुप को बैकएंड सेवाओं में जोड़ेंगे. Cloud Shell में ये कमांड चलाएं.
बैकएंड सेवा बनाएं
कमांड
gcloud compute backend-services create $REGION_1-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_1
gcloud compute backend-services create $REGION_2-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_2
बैकएंड जोड़ें
Command
gcloud compute backend-services add-backend $REGION_1-backend-service \ --instance-group=$REGION_1-instance-group \ --region=$REGION_1 \ --instance-group-zone=$REGION_1_ZONE
gcloud compute backend-services add-backend $REGION_2-backend-service \ --instance-group=$REGION_2-instance-group \ --region=$REGION_2 \ --instance-group-zone=$REGION_2_ZONE
ईमेल फ़ॉरवर्ड करने के नियम बनाना
दोनों क्षेत्रों में फ़ॉरवर्ड करने के नियम बनाने के लिए, gcloud compute forwarding-rules create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं
REGION_1 के लिए फ़ॉरवर्ड करने का नियम
कमांड
gcloud compute forwarding-rules create $REGION_1-ilb \
--region=$REGION_1 \
--load-balancing-scheme=internal \
--network=my-vpc \
--subnet=$REGION_1-subnet \
--ip-protocol=TCP \
--ports=80 \
--backend-service=$REGION_1-backend-service \
--backend-service-region=$REGION_1 \
--allow-global-access
REGION_2 के लिए फ़ॉरवर्ड करने का नियम
gcloud compute forwarding-rules create $REGION_2-ilb \
--region=$REGION_2 \
--load-balancing-scheme=internal \
--network=my-vpc \
--subnet=$REGION_2-subnet \
--ip-protocol=TCP \
--ports=80 \
--backend-service=$REGION_2-backend-service \
--backend-service-region=$REGION_2 \
--allow-global-access
9. डीएनएस कॉन्फ़िगर करना
इस सेक्शन में, हम फ़ेलओवर राउटिंग नीति के साथ प्राइवेट ज़ोन और डीएनएस रिकॉर्ड सेट बनाएंगे.
निजी डीएनएस ज़ोन बनाना
उदाहरण के लिए, example.com के लिए एक निजी ज़ोन बनाने के लिए, gcloud dns managed-zones create कमांड का इस्तेमाल करें. हम इस ज़ोन का इस्तेमाल, फ़ेलओवर राउटिंग नीति के साथ एक संसाधन रिकॉर्ड सेट बनाने के लिए करेंगे. Cloud Shell में यह कमांड चलाएं
कमांड
gcloud dns managed-zones create example-com \ --dns-name example.com. --description="My private zone" \ --visibility=private --networks my-vpc
फ़ेलओवर राउटिंग की नीति के साथ डीएनएस रिकॉर्ड बनाना
फ़ेलओवर राउटिंग नीति के साथ डीएनएस रिकॉर्ड बनाने के लिए, gcloud dns record-sets create कमांड का इस्तेमाल करें. मुख्य टारगेट, REGION_1 में मौजूद लोड बैलेंसर है. Cloud DNS, सिर्फ़ भौगोलिक जगह के हिसाब से बैकअप टारगेट की सुविधा देता है. बैकअप सेट, REGION_1 और REGION_2, दोनों के लिए टारगेट के तौर पर REGION_2 लोड बैलेंसर वाली जियोलोकेशन नीति है. Cloud Shell में ये कमांड चलाएं
Command
gcloud dns record-sets create failover.example.com --ttl 5 --type A \
--routing-policy-type=FAILOVER \
--routing-policy-primary-data=$REGION_1-ilb \
--routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \
--routing-policy-backup-data-type=GEO \
--zone=example-com \
--enable-health-checking
आउटपुट का उदाहरण
NAME: failover.example.com. TYPE: A TTL: 5 DATA: Primary: "10.1.0.4, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-west1, regionalL4ilb" Backup: us-west1: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb";us-east4: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb"
10. डीएनएस रिज़ॉल्यूशन की जांच करना
फ़ेलओवर सेटअप की जांच करने से पहले, दोनों इंटरनल लोड बैलेंसर के आईपी पतों को नोट कर लें. Cloud Shell में ये कमांड चलाएं.
Command
gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"
आउटपुट का उदाहरण
इस उदाहरण में, us-west1-ilb का आईपी पता 10.1.0.4 है और us-east4-ilb का आईपी पता 10.2.0.3 है
NAME: us-west1-ilb REGION: us-west1 IP_ADDRESS: 10.1.0.4 IP_PROTOCOL: TCP TARGET: us-west1/backendServices/us-west1-backend-service NAME: us-east4-ilb REGION: us-east4 IP_ADDRESS: 10.2.0.3 IP_PROTOCOL: TCP TARGET: us-east4/backendServices/us-east4-backend-service
अब हम क्लाइंट-इंस्टेंस में लॉग इन करेंगे और डीएनएस रिज़ॉल्यूशन की जांच करेंगे. वेब कंसोल में, "Compute Engine | VM इंस्टेंस" पर जाएं

कंसोल से क्लाइंट-इंस्टेंस में लॉग इन करने के लिए, एसएसएच बटन पर क्लिक करें.

अब हम क्लाइंट वीएम में हैं. इसलिए, dig डोमेन नेम को हल करने के लिए, dig कमांड का इस्तेमाल करें.failover.example.com
लूप को इस तरह कॉन्फ़िगर किया गया है कि यह कमांड को छह सेकंड के स्लीप टाइमर के साथ दस बार चलाएगा.
Command
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
डीएनएस रिकॉर्ड पर टीटीएल को पांच सेकंड पर सेट किया गया है. इसलिए, छह सेकंड का स्लीप टाइमर जोड़ा गया है. स्लीप टाइमर यह पक्का करेगा कि आपको हर डीएनएस अनुरोध के लिए, कैश मेमोरी में सेव न किया गया डीएनएस जवाब मिले. इस कमांड को पूरा होने में करीब एक मिनट लगेगा.
आउटपुट में, आपको रिसोर्स रिकॉर्ड के प्राइमरी सेट में लोड बैलेंसर का आईपी पता दिखेगा. हमारे सेटअप में, यह us-west1 इलाके में मौजूद लोड बैलेंसर का आईपी पता होगा.
11. बैकअप एन्कोडर को चलाकर देखें
हम REGION_1 VM से नेटवर्क टैग हटाकर, फ़ेलओवर की प्रोसेस को सिम्युलेट करेंगे. इससे पोर्ट 80 का ऐक्सेस ब्लॉक हो जाएगा. इस वजह से, हेल्थ चेक काम नहीं करेंगे.
नेटवर्क टैग हटाना
वर्चुअल मशीन से नेटवर्क टैग हटाने के लिए, gcloud compute instances remove-tags कमांड का इस्तेमाल करें. Cloud Shell में यह कमांड चलाएं
Command
gcloud compute instances remove-tags $REGION_1-instance \ --zone=$REGION_1_ZONE --tags=allow-http
सेहत की जांच 10 सेकंड में पूरी नहीं हो पाएगी. डीएनएस रिज़ॉल्यूशन टेस्ट को फिर से चलाएं.
डीएनएस रिज़ॉल्यूशन
क्लाइंट-इंस्टेंस से यह कमांड चलाएं
Command
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
आउटपुट में, आपको संसाधन रिकॉर्ड के बैकअप सेट में लोड बैलेंसर का आईपी पता दिखेगा. हमारे सेटअप में, यह us-east4 इलाके में लोड बैलेंसर का आईपी पता होगा.
12. ट्रैफ़िक को धीरे-धीरे बढ़ाने की सुविधा की जांच करना
डिफ़ॉल्ट रूप से, फ़ेलओवर नीति सभी डीएनएस अनुरोधों के लिए प्राइमरी एंडपॉइंट आईपी पता दिखाती है. साथ ही, अगर प्राइमरी एंडपॉइंट की हेल्थ जांच में गड़बड़ी होती है, तो ही बैकअप आईपी पते दिखाती है. Cloud DNS, उपयोगकर्ताओं को ट्रिकल रेशियो कॉन्फ़िगर करने की सुविधा देता है. इससे Cloud DNS, बैकअप टारगेट को ट्रैफ़िक का कुछ हिस्सा भेज पाता है. ऐसा तब भी होता है, जब प्राइमरी टारगेट सही तरीके से काम कर रहे हों. अनुपात की वैल्यू, 0 और 1 के बीच होनी चाहिए. डिफ़ॉल्ट वैल्यू 0 है
इसे आज़माने के लिए, REGION_1 वेब सर्वर में नेटवर्क टैग को फिर से जोड़ते हैं.
नेटवर्क टैग जोड़ना
टैग को वेब सर्वर वीएम में वापस जोड़ें, ताकि प्राइमरी रीजन वीएम को एचटीटीपी ट्रैफ़िक मिल सके. Cloud Shell में यह कमांड चलाएं.
Command
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
जांच के नतीजे 10 सेकंड में मिल जाएंगे
पुष्टि करें कि डीएनएस रिज़ॉल्यूशन, प्राइमरी लोड बैलेंसर की ओर इशारा करता हो. हमारे सेटअप में, यह us-west1 इलाके में लोड बैलेंसर का आईपी पता होगा.
क्लाइंट-इंस्टेंस से यह कमांड चलाएं
Command
dig +short failover.example.com
डीएनएस रिकॉर्ड अपडेट करना
अब हम failover.example.com के डीएनएस रिकॉर्ड में बदलाव करेंगे, ताकि प्राइमरी सर्वर के ठीक से काम करने पर भी, 30% ट्रैफ़िक बैकअप सेट पर भेजा जा सके. Cloud Shell में यह कमांड चलाएं
Command
gcloud dns record-sets update failover.example.com --ttl 30 --type A \
--routing-policy-type=FAILOVER \
--routing-policy-primary-data=$REGION_1-ilb \
--routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \
--routing-policy-backup-data-type=GEO \
--zone=example-com --enable-health-checking \
--backup-data-trickle-ratio=0.3
डीएनएस रिज़ॉल्यूशन
क्लाइंट वीएम से यह कमांड चलाएं. आपको दिखेगा कि डीएनएस रिकॉर्ड failover.example.com, प्राइमरी लोड बैलेंसर के आईपी पते पर करीब 70% समय और बैकअप लोड बैलेंसर के आईपी पते पर करीब 30% समय तक काम करेगा.
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
13. क्लीनअप करने का तरीका
इस लैब में इस्तेमाल किए गए संसाधनों को हटाने के लिए, CloudShell में जाकर ये कमांड चलाएं
gcloud dns record-sets delete failover.example.com --type=A \ --zone=example-com --quiet gcloud dns managed-zones delete example-com --quiet gcloud compute forwarding-rules delete $REGION_1-ilb \ --region=$REGION_1 --quiet gcloud compute forwarding-rules delete $REGION_2-ilb \ --region=$REGION_2 --quiet gcloud compute backend-services delete $REGION_1-backend-service \ --region=$REGION_1 --quiet gcloud compute backend-services delete $REGION_2-backend-service \ --region=$REGION_2 --quiet gcloud compute health-checks delete http-hc --quiet gcloud compute instances delete client-instance --zone=$REGION_1_ZONE --quiet gcloud compute instance-groups unmanaged delete $REGION_1-instance-group \ --zone=$REGION_1_ZONE --quiet gcloud compute instance-groups unmanaged delete $REGION_2-instance-group \ --zone=$REGION_2_ZONE --quiet gcloud compute instances delete $REGION_1-instance \ --zone=$REGION_1_ZONE --quiet gcloud compute instances delete $REGION_2-instance \ --zone=$REGION_2_ZONE --quiet gcloud compute routers nats delete $REGION_1-nat-gw \ --router=$REGION_1-cloudrouter --region=$REGION_1 --quiet gcloud compute routers nats delete $REGION_2-nat-gw \ --router=$REGION_2-cloudrouter --region=$REGION_2 --quiet gcloud compute routers delete $REGION_1-cloudrouter \ --region=$REGION_1 --quiet gcloud compute routers delete $REGION_2-cloudrouter \ --region=$REGION_2 --quiet gcloud compute firewall-rules delete allow-ssh allow-http-lb-hc --quiet gcloud compute networks subnets delete $REGION_1-subnet \ --region=$REGION_1 --quiet gcloud compute networks subnets delete $REGION_2-subnet \ --region=$REGION_2 --quiet gcloud compute networks delete my-vpc --quiet
14. बधाई हो
बधाई हो, आपने Cloud DNS की फ़ेलओवर राउटिंग नीति को डिप्लॉय और टेस्ट कर लिया है
हमने क्या-क्या बताया
- Cloud DNS की फ़ेलओवर राउटिंग नीति को कॉन्फ़िगर करने का तरीका
- डीएनएस फ़ेलओवर की जांच करना
- बैकअप सेट पर ट्रैफ़िक को धीरे-धीरे कैसे डाइवर्ट करें
आगे क्या करना है?
- चालू और बैकअप सेट के लिए, एक से ज़्यादा आईपी पते सेट अप करने की कोशिश करें
- अपने अनमैनेज्ड इंस्टेंस ग्रुप में कई बैकएंड वीएम जोड़कर देखें
- बैकअप सेट में जियोलोकेशन की नीति के लिए, अलग-अलग क्षेत्रों में कई लोड बैलेंसर सेट अप करने की कोशिश करें.
ज़्यादा जानें
https://cloud.google.com/dns/docs/zones/manage-routing-policies