इंटरनल टीसीपी/यूडीपी लोड बैलेंसर के लिए, Cloud DNS रूटिंग नीतियों और हेल्थ चेक का इस्तेमाल करके एक से ज़्यादा इलाकों का फ़ेलओवर

1. परिचय

पिछली बार अपडेट किए जाने की तारीख: 22-09-2022

डीएनएस रूटिंग नीति क्या है

क्लाउड डीएनएस रूटिंग की नीतियों की मदद से लोग, ट्रैफ़िक की डीएनएस सेटिंग को कॉन्फ़िगर कर सकते हैं. यह सुविधा, वेट, भौगोलिक जगह या स्वास्थ्य की जांच जैसी खास शर्तों के आधार पर तय की जाती है.

Cloud DNS, रूटिंग की इन नीतियों के साथ काम करता है:

  • वेटेड राउंड रॉबिन रूट करने की नीति
  • भौगोलिक-स्थान रूटिंग नीति
  • जियोफ़ेंस्ड रूटिंग की नीति
  • फ़ेलओवर रूटिंग की नीति

इस लैब में, फ़ेलओवर रूटिंग की नीति को कॉन्फ़िगर किया जाएगा और उसकी जांच की जाएगी.

फ़ेलओवर रूटिंग की नीति

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

सेहत की जांच

डीएनएस रूटिंग की नीति, इंटरनल लोड बैलेंसर की यूनिफ़ाइड हेल्थ जांच(यूएचसी) पर निर्भर करती है. अगर बैकएंड का 20% (या इससे ज़्यादा) हिस्सा अच्छा है, तो इंटरनल लोड बैलेंसर को बेहतर माना जाता है. इंटरनल टीसीपी/यूडीपी और इंटरनल एचटीटीपी या एचटीटीपीएस लोड बैलेंसर की परफ़ॉर्मेंस की जांच से अलग-अलग जानकारी मिलती है. इंटरनल एचटीटीपी(एस) लोड बैलेंसर के लिए, यूएचसी, Envoy प्रॉक्सी की परफ़ॉर्मेंस की स्थिति की जानकारी देता है. हालांकि, इंटरनल टीसीपी/यूडीपी लोड बैलेंसर के लिए, क्लाउड डीएनएस को अलग-अलग बैकएंड इंस्टेंस से डायरेक्ट हेल्थ सिग्नल मिलता है. स्वास्थ्य की जांच से जुड़ी जानकारी, यहां देखी जा सकती है .

आपको क्या बनाना होगा

इस कोडलैब में, दो इलाकों में चल रही वेबसाइट बनाई जा सकती है और उससे फ़ेलओवर डीएनएस रूटिंग नीति को जोड़ा जा सकता है. सेट अप में ये चीज़ें शामिल होंगी:

ऐक्टिव संसाधन -

  • PERIOD_1 में L4 इंटरनल लोड बैलेंसर
  • region_1 में Apache वेब सर्वर चलाने वाली वर्चुअल मशीन (वीएम)

बैकअप संसाधन -

  • PERIOD_2 में L4 इंटरनल लोड बैलेंसर
  • region_2 में Apache वेब सर्वर चलाने वाली वर्चुअल मशीन (वीएम)

इसका सेट अप नीचे दिखाया गया है -

d0a91d3d3698f544.png

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

  • फ़ेलओवर रूटिंग की नीति बनाने का तरीका
  • डीएनएस फ़ेलओवर ट्रिगर करें
  • ट्रैफ़िक को बैकअप सेट पर ले जाने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • डीएनएस के बारे में बुनियादी जानकारी
  • Google Compute Engine की बुनियादी जानकारी
  • L4 इंटरनल लोड बैलेंसर के बारे में बुनियादी जानकारी

2. सेटअप और ज़रूरी शर्तें

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे PROJECT_ID के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. इसके अलावा, खुद भी आज़माया जा सकता है और देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद इसे बदला नहीं जा सकता और प्रोजेक्ट के कुल समय तक बना रहेगा.
  • आपकी जानकारी के लिए, एक तीसरी वैल्यू यानी प्रोजेक्ट नंबर है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, संसाधनों को बंद करने के लिए कि आपको बिलिंग न करनी पड़े. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या पूरा प्रोजेक्ट मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

क्लाउड शेल शुरू करें

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में जाकर, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस कोडलैब (कोड बनाना सीखना) में आपका सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

3. Google Cloud SDK का वर्शन

जवाब लिखते समय, 401.0.0 Google Cloud SDK का नया वर्शन है. इस लैब में मौजूद सभी निर्देशों की जांच, Google Cloud SDK के सबसे नए वर्शन पर की गई है. आगे बढ़ने से पहले, कृपया पक्का करें कि Cloud Shell में, SDK टूल के सबसे नए वर्शन का इस्तेमाल किया जा रहा हो.

SDK टूल के वर्शन की जांच करना

SDK टूल का वर्शन देखने के लिए, gcloud version कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं

निर्देश

gcloud version | grep "Google Cloud SDK"

आउटपुट का उदाहरण

Google Cloud SDK 401.0.0

अगले चरण

  1. अगर SDK टूल का वर्शन 401.0.0 या इसके बाद का है, तो सीधे अगले सेक्शन पर जाएं.
  2. अगर SDK टूल का वर्शन 401.0.0 से पहले का है, तो SDK टूल को अपडेट करने के लिए, नीचे दिया गया कमांड चलाएं.

वैकल्पिक निर्देश

sudo apt-get update && sudo apt-get install google-cloud-sdk

4. शुरू करने से पहले

ऊपर बताए गए आर्किटेक्चर को डिप्लॉय करने से पहले, यह पक्का करें कि Cloud Shell को सही तरीके से कॉन्फ़िगर किया गया है और सभी ज़रूरी एपीआई चालू किए गए हैं.

प्रोजेक्ट आईडी सेट अप करें

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप किया गया हो. अगर आपका क्लाउड शेल प्रॉम्प्ट नीचे दिए गए आउटपुट की तरह दिखता है और आपको प्रोजेक्ट आईडी नहीं बदलना है, तो सीधे अगले चरण (एनवायरमेंट वैरिएबल सेट करें) पर जाएं.

USER@cloudshell:~ (PROJECT_ID)$

अगर आपको अब भी प्रोजेक्ट आईडी बदलना है, तो नीचे दिए गए निर्देश का इस्तेमाल करें. ऐसा करने पर, क्लाउड शेल प्रॉम्प्ट (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 और डीएनएस एपीआई चालू करने के लिए, gcloud services enable कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं

Compute API को चालू करना

निर्देश

gcloud services enable compute.googleapis.com

डीएनएस एपीआई चालू करना

निर्देश

gcloud services enable dns.googleapis.com

पुष्टि करना

अब सेवाएं चालू हो गई हैं. इसलिए, सभी चालू एपीआई की सूची बनाने के लिए, gcloud services list निर्देश का इस्तेमाल करके पुष्टि करें.

निर्देश

gcloud services list | grep -E 'compute|dns'

आउटपुट का उदाहरण

NAME: compute.googleapis.com
NAME: dns.googleapis.com

5. VPC नेटवर्क, सबनेट, और फ़ायरवॉल के नियम बनाएं

इस सेक्शन में, हम VPC नेटवर्क, दो सबनेट (हर क्षेत्र में एक) और फ़ायरवॉल के लिए ज़रूरी नियम बनाएंगे.

VPC नेटवर्क बनाना

VPC नेटवर्क बनाने के लिए, gcloud compute networks create कमांड का इस्तेमाल करें. हम सबनेट मोड को पसंद के मुताबिक सेट कर रहे हैं, क्योंकि अगले चरण में हम अपने खुद के सबनेट बनाएंगे. Cloud Shell में ये कमांड चलाएं.

निर्देश

gcloud compute networks create my-vpc --subnet-mode custom

सबनेट बनाना

दो सबनेट बनाने के लिए, gcloud compute networks subnets create कमांड का इस्तेमाल करें. एक सबनेट क्षेत्र_1 में और दूसरा क्षेत्र_2 में है. Cloud Shell में ये कमांड चलाएं

क्षेत्र_1 सबनेट

निर्देश

gcloud compute networks subnets create ${REGION_1}-subnet \
--network my-vpc \
--range 10.1.0.0/24 \
--region $REGION_1

क्षेत्र_2 सबनेट

निर्देश

gcloud compute networks subnets create ${REGION_2}-subnet \
--network my-vpc \
--range 10.2.0.0/24 \
--region $REGION_2

फ़ायरवॉल के नियम बनाना

आपको VPC सबनेट से और लोड बैलेंसर की परफ़ॉर्मेंस की जांच करने वाले आईपी रेंज से पोर्ट 80 पर ट्रैफ़िक को अनुमति देनी होगी.

इसके अलावा, क्लाइंट वीएम पर एसएसएच ट्रैफ़िक को अनुमति देने के लिए, आपको फ़ायरवॉल नियम भी बनाना होगा.

फ़ायरवॉल के नियम बनाने के लिए, gcloud compute firewall-rules create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं

पोर्ट 80 पर ट्रैफ़िक की अनुमति दें

निर्देश

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

क्लाइंट वीएम पर एसएसएच ट्रैफ़िक की अनुमति देना

निर्देश

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 बनाएं

आपको दोनों क्षेत्रों में Cloud NAT गेटवे की ज़रूरत होगी, ताकि निजी वीएम इंटरनेट से पैकेज डाउनलोड और इंस्टॉल कर सकें.

  • हमारे वेब सर्वर वीएम को Apache वेब सर्वर डाउनलोड और इंस्टॉल करना होगा.
  • क्लाइंट VM को dnsutils पैकेज को डाउनलोड और इंस्टॉल करना होगा, जिसका इस्तेमाल हम अपनी जांच के लिए करेंगे.

हर Cloud NAT गेटवे, एक ही VPC नेटवर्क, इलाके, और क्लाउड राऊटर से जुड़ा होता है. इसलिए, NAT गेटवे बनाने से पहले, हमें हर क्षेत्र के लिए क्लाउड राऊटर बनाने होंगे.

क्लाउड राऊटर बनाना

us-west1 और us-east4 क्षेत्रों में क्लाउड राऊटर बनाने के लिए gcloud compute routers create कमांड का इस्तेमाल करें. Cloud Shell में ये कमांड चलाएं.

Region_1 क्लाउड राऊटर

निर्देश

gcloud compute routers create "${REGION_1}-cloudrouter" \
--region $REGION_1 --network=my-vpc --asn=65501

Region_2 क्लाउड राऊटर

निर्देश

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 गेटवे

निर्देश

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 गेटवे

निर्देश

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 कमांड का इस्तेमाल करें. हमें दो वेब सर्वर बनाने होंगे, एक क्षेत्र_1 में और दूसरा क्षेत्र_2 में. हम वेब सर्वर पर Apache को इंस्टॉल और कॉन्फ़िगर करने के लिए, स्टार्टअप स्क्रिप्ट का इस्तेमाल कर रहे हैं.

क्षेत्र_1 वेब सर्वर

Cloud Shell में यह कमांड चलाएं

निर्देश

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'

क्षेत्र_2 वेब सर्वर

Cloud Shell में यह कमांड चलाएं

निर्देश

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'

मैनेज नहीं किए जा रहे इंस्टेंस ग्रुप बनाना

इस सेक्शन में, हम मैनेज नहीं किए जा रहे दो इंस्टेंस ग्रुप बनाते हैं. हम अगले सेक्शन में, ILB बैकएंड सेवाओं को कॉन्फ़िगर करने के लिए इन इंस्टेंस ग्रुप का इस्तेमाल करेंगे. इंस्टेंस ग्रुप बन जाने के बाद, हम वेब सर्वर के वीएम को इन इंस्टेंस ग्रुप में जोड़ देंगे.

मैनेज नहीं किए जा रहे इंस्टेंस ग्रुप बनाना

मैनेज नहीं किए जा रहे दो इंस्टेंस ग्रुप बनाने के लिए, 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

क्षेत्र_2 इंस्टेंस ग्रुप

निर्देश

gcloud compute instance-groups unmanaged create \
"${REGION_2}-instance-group" --zone=$REGION_2_ZONE

इंस्टेंस ग्रुप में वीएम जोड़ना

हमने अभी-अभी जो इंस्टेंस ग्रुप बनाए हैं उनमें इंस्टेंस जोड़ने के लिए, gcloud compute instance-groups unmanaged add-instances कमांड का इस्तेमाल करें. AREA_1 वेब सर्वर को गति_1 इंस्टेंस ग्रुप में जोड़ें और PERIOD_2 वेब सर्वर को गति_2 इंस्टेंस ग्रुप में जोड़ें

Region_1 इंस्टेंस समूह

निर्देश

gcloud compute instance-groups unmanaged add-instances \
"${REGION_1}-instance-group" --instances $REGION_1-instance \
--zone=$REGION_1_ZONE

क्षेत्र_2 इंस्टेंस ग्रुप

निर्देश

gcloud compute instance-groups unmanaged add-instances \
"${REGION_2}-instance-group" --instances $REGION_2-instance \
--zone=$REGION_2_ZONE

क्लाइंट वीएम बनाना

हम इस वीएम का इस्तेमाल, जांच करने और अपने डीएनएस कॉन्फ़िगरेशन की पुष्टि करने के लिए करेंगे. हम dnsutils पैकेज को इंस्टॉल करने के लिए, स्टार्टअप स्क्रिप्ट का इस्तेमाल कर रहे हैं. Cloud Shell में ये कमांड चलाएं.

निर्देश

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 ILB बनाने के लिए, हमें परफ़ॉर्मेंस की जांच, बैकएंड सेवा, और फ़ॉरवर्ड करने के नियम की ज़रूरत होगी.

स्वास्थ्य जांच बनाएं

हेल्थ चेक बनाने के लिए, gcloud compute health-checks create कमांड का इस्तेमाल करें. हम एचटीटीपी की परफ़ॉर्मेंस की बुनियादी जांच कर रहे हैं और टारगेट पोर्ट 80 है. Cloud Shell में ये कमांड चलाएं

निर्देश

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

बैकएंड जोड़ें

निर्देश

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 में ये कमांड चलाएं

METRIC_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

METRIC_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, सिर्फ़ जगह के हिसाब से बैकअप किए जाने वाले टारगेट के साथ काम करता है. बैकअप सेट, भौगोलिक स्थान की ऐसी नीति है जिसमें सदस्य_2 का लोड बैलेंसर है. यह टारगेट के तौर पर, PERIOD_1 और PERIOD_2 में होता है. Cloud Shell में ये कमांड चलाएं

निर्देश

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 में ये कमांड चलाएं.

निर्देश

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 | पर जाएं" वीएम इंस्टेंस"

5c824940bf414501.png

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

b916eb32c60a4156.png

अब हम क्लाइंट वीएम का इस्तेमाल कर रहे हैं, इसलिए failover.example.com के डोमेन नेम को रिज़ॉल्व करने के लिए, dig कमांड का इस्तेमाल करें.

लूप को 6 सेकंड के स्लीप टाइमर के साथ, आदेश को दस बार चलाने के लिए कॉन्फ़िगर किया गया है.

निर्देश

for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done

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

आउटपुट में आपको संसाधन रिकॉर्ड के प्राइमरी सेट में लोड बैलेंसर का आईपी पता दिखेगा. हमारे सेटअप में, यह us-west1 वाले क्षेत्र में लोड बैलेंसर का आईपी होगा.

11. फ़ेलओवर टेस्ट करें

हम region_1 वीएम से नेटवर्क टैग को हटाकर, फ़ेलओवर को सिम्युलेट करेंगे. इससे पोर्ट 80 का ऐक्सेस ब्लॉक हो जाएगा और इस वजह से, परफ़ॉर्मेंस की जांच में गड़बड़ी होने लगेगी.

नेटवर्क टैग हटाना

वीएम से नेटवर्क टैग हटाने के लिए, gcloud compute instances remove-tags कमांड का इस्तेमाल करें. Cloud Shell में यह कमांड चलाएं

निर्देश

gcloud compute instances remove-tags $REGION_1-instance \
--zone=$REGION_1_ZONE --tags=allow-http

स्वास्थ्य जांच 10 सेकंड में विफल हो जाएगी. डीएनएस रिज़ॉल्यूशन की जांच फिर से करें.

डीएनएस रिज़ॉल्यूशन

क्लाइंट-इंस्टेंस से यह कमांड चलाएं

निर्देश

for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done

आउटपुट में आपको संसाधन रिकॉर्ड के बैकअप सेट में लोड बैलेंसर का आईपी पता दिखेगा. हमारे सेटअप में, यह us-east4 क्षेत्र में लोड बैलेंसर का आईपी होगा.

12. ट्रैफ़िक में होने वाली उतार-चढ़ाव की जांच करें

डिफ़ॉल्ट रूप से, फ़ेलओवर नीति सभी डीएनएस अनुरोधों के लिए प्राइमरी एंडपॉइंट आईपी दिखाती है. साथ ही, बैकअप आईपी पते सिर्फ़ तब देती है, जब प्राइमरी आईपी पता काम नहीं कर रहा हो. Cloud DNS, उपयोगकर्ताओं को Trickle Ratio कॉन्फ़िगर करने की अनुमति देता है. इससे Cloud DNS, मुख्य टारगेट के सही होने पर भी ट्रैफ़िक का कुछ हिस्सा बैकअप टारगेट पर भेज पाता है. रेशन की वैल्यू, 0 और 1 के बीच की होनी चाहिए. डिफ़ॉल्ट वैल्यू 0 है

इसकी जांच करने के लिए, हम नेटवर्क टैग को क्षेत्र_1 वेब सर्वर में वापस जोड़ देते हैं.

नेटवर्क टैग जोड़ें

टैग को वेब सर्वर वीएम में वापस जोड़ें, ताकि एचटीटीपी ट्रैफ़िक को मुख्य इलाके वाली वीएम पर अनुमति दी जा सके. Cloud Shell में यह कमांड चलाएं.

निर्देश

gcloud compute instances add-tags $REGION_1-instance \
--zone $REGION_1_ZONE --tags allow-http

स्वास्थ्य जांच 10 सेकंड में पूरी हो जाएगी

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

क्लाइंट-इंस्टेंस से यह कमांड चलाएं

निर्देश

dig +short failover.example.com

डीएनएस रिकॉर्ड अपडेट करना

अब हम failover.example.com के डीएनएस रिकॉर्ड में बदलाव करेंगे, ताकि प्राइमरी सेट के सही होने के बावजूद 30% ट्रैफ़िक को बैकअप सेट पर भेजा जा सके. Cloud Shell में यह कमांड चलाएं

निर्देश

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