Private Service Connect के लिए कंपोज़िट हेल्थ

1. परिचय

इस कोडलैब में, Private Service Connect (PSC) के लिए कंपोज़िट हेल्थ के बारे में बताया गया है. इससे, क्षेत्र के हिसाब से अपने-आप फ़ेलओवर हो जाता है. पीएसएसी के लिए कंपोज़िट हेल्थ, नेटवर्किंग की एक सुविधा है. इससे सेवा की उपलब्धता और बेहतर तरीके से काम करने की क्षमता बढ़ती है.

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

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

आपको ये सब सीखने को मिलेगा

  • कंपोज़िट हेल्थ के कॉम्पोनेंट और वे किसी प्रोड्यूसर सेवा की परफ़ॉर्मेंस की जांच करने के लिए एक साथ कैसे काम करते हैं
  • gcloud कमांड का इस्तेमाल करके, प्रोड्यूसर सेवा के लिए पीएससी के कंपोज़िट हेल्थ को लागू करना
  • क्रॉस-रीजन पीएससी कंज्यूमर ऐक्सेस लोड बैलेंसर का कॉन्फ़िगरेशन, ताकि प्रोड्यूसर की कंपोज़िट हेल्थ नीति से मिले हेल्थ सिग्नल का इस्तेमाल किया जा सके
  • सेवा में गड़बड़ी होने की स्थितियों को टेस्ट करना और एक क्षेत्र से दूसरे क्षेत्र में अपने-आप फ़ेलओवर होने की पुष्टि करना

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

  • Google Cloud प्रोजेक्ट
  • पहले से तय की गई roles/compute.admin भूमिका या roles/admin या लेगसी roles/owner जैसी बुनियादी भूमिका के लिए दी गई IAM अनुमतियां
  • Google Cloud के नेटवर्किंग कॉन्सेप्ट और Google Cloud CLI का इस्तेमाल करने के बारे में जानकारी

2. कॉन्सेप्ट

पीएससी नेटवर्किंग

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

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

figure1

पहली इमेज. कोडलैब नेटवर्क टोपोलॉजी

प्रोड्यूसर साइड में, रीजनल सबनेट होते हैं. इनमें रीजनल इंटरनल पासथ्रू नेटवर्क लोड बैलेंसर होते हैं. ये रीजनल पीएससी सेवा अटैचमेंट संसाधन के ज़रिए सेवा को दिखाते हैं. बैकएंड सेवाओं में, रीजनल मैनेज्ड इंस्टेंस ग्रुप (एमआईजी) होते हैं. इनकी सेहत की जांच की जाती है. इसके लिए, http अनुरोधों की जांच की जाती है और 200 (OK) जवाबों की पुष्टि की जाती है.

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

सेवा की स्थिति

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

डिफ़ॉल्ट रूप से, किसी सेवा को तब सही माना जाता है, जब ये दोनों शर्तें पूरी होती हैं:

  • कम से कम x प्रतिशत बैकएंड सही तरीके से काम कर रहे हों (डिफ़ॉल्ट रूप से 60)
  • कम से कम y बैकएंड ठीक से काम कर रहे हों (डिफ़ॉल्ट रूप से 1)

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

figure2

दूसरी इमेज. पीएसएसी के संसाधन मॉडल के लिए कंपोज़िट हेल्थ

कंपोज़िट हेल्थ चेक संसाधन की परिभाषा में, प्रोड्यूसर सेवा के लोड बैलेंसर के फ़ॉरवर्डिंग नियम का भी ज़िक्र किया गया है. उपयोगकर्ता के ऐक्सेस वाले लोड बैलेंसर के बैकएंड पीएससी एनईजी को, प्रोड्यूसर के पीएससी सेवा अटैचमेंट और प्रोड्यूसर के लोड बैलेंसर फ़ॉरवर्डिंग नियम से लॉजिकली कनेक्ट किया जाता है. इससे, उपभोक्ता के ऐक्सेस लोड बैलेंसर को प्रोड्यूसर सेवा की कंपोज़िट हेल्थ चेक स्थिति से जोड़ा जाता है. इसके बाद, रीजनल प्रोड्यूसर सेवा की पूरी जानकारी, उपभोक्ता लोड बैलेंसर को भेजी जाती है, ताकि वह सही बैकएंड चुन सके.

3. प्रोजेक्ट सेटअप करना

अपने प्रोजेक्ट को ऐक्सेस करना

इस कोडलैब को एक Google Cloud प्रोजेक्ट का इस्तेमाल करने के लिए लिखा गया है. कॉन्फ़िगरेशन के चरणों में, gcloud और Linux शेल कमांड का इस्तेमाल किया जाता है.

ध्यान दें: प्रोडक्शन डिप्लॉयमेंट में, पीएससी उपभोक्ता संसाधन और सेवा देने वाली कंपनियां आम तौर पर अलग-अलग प्रोजेक्ट में होती हैं.

इसके लिए, सबसे पहले अपने Google Cloud प्रोजेक्ट के कमांड लाइन को ऐक्सेस करें. इसके लिए, यह तरीका अपनाएं:

प्रोजेक्ट आईडी सेट करना

gcloud config set project YOUR_PROJECT_ID_HERE

शेल एनवायरमेंट वैरिएबल सेट करना

export PROJECT_ID=$(gcloud config list --format="value(core.project)")
export REGION_1="us-west1"
export ZONE_1="us-west1-c"
export REGION_2="us-east1"
export ZONE_2="us-east1-c"
echo ${PROJECT_ID}
echo ${REGION_1}
echo ${ZONE_1}
echo ${REGION_2}
echo ${ZONE_2}

एपीआई सेवाएं चालू करना

gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com

4. प्रोड्यूसर की सेवा

शेयर किए जाने वाले संसाधन बनाना

नेटवर्क बनाएं

gcloud compute networks create vnet-producer --subnet-mode=custom

सबनेट बनाना

# create subnet for service workload in region 1
gcloud compute networks subnets create subnet-foo \
  --network=vnet-producer \
  --region=${REGION_1} \
  --range=172.16.1.0/24 \
  --enable-private-ip-google-access

# create subnet for psc nat in region 1
gcloud compute networks subnets create subnet-foo-pscnat \
  --network=vnet-producer \
  --region=${REGION_1} \
  --range=192.168.1.0/29 \
  --purpose=PRIVATE_SERVICE_CONNECT
# create subnet for service workload in region 2
gcloud compute networks subnets create subnet-bar \
  --network=vnet-producer \
  --region=${REGION_2} \
  --range=172.16.2.0/24 \
  --enable-private-ip-google-access

# create subnet for psc nat in region 2
gcloud compute networks subnets create subnet-bar-pscnat \
  --network=vnet-producer \
  --region=${REGION_2} \
  --range=192.168.2.0/29 \
  --purpose=PRIVATE_SERVICE_CONNECT

फ़ायरवॉल कॉम्पोनेंट बनाना

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

# create fw policy
gcloud compute network-firewall-policies create fw-policy-producer --global
# create fw policy rules
gcloud compute network-firewall-policies rules create 1001 \
  --description="allow iap for ssh" \
  --firewall-policy=fw-policy-producer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp:22  \
  --src-ip-ranges=35.235.240.0/20

gcloud compute network-firewall-policies rules create 1002 \
  --description="allow health checks" \
  --firewall-policy=fw-policy-producer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp,udp,icmp  \
  --src-ip-ranges=130.211.0.0/22,35.191.0.0/16

gcloud compute network-firewall-policies rules create 1003 \
  --description="allow psc nat clients" \
  --firewall-policy=fw-policy-producer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp:80  \
  --src-ip-ranges=192.168.1.0/29,192.168.2.0/29
# associate fw policy to vnet
gcloud compute network-firewall-policies associations create \
  --firewall-policy=fw-policy-producer \
  --network=vnet-producer \
  --name=fw-policy-association-producer \
  --global-firewall-policy

Cloud Router और NAT गेटवे बनाना

# create routers for nat in each region
gcloud compute routers create cr-nat-foo \
  --network=vnet-producer \
  --asn=16550 \
  --region=${REGION_1}

gcloud compute routers create cr-nat-bar \
  --network=vnet-producer \
  --asn=16550 \
  --region=${REGION_2}
# create nat gateways in each region
gcloud compute routers nats create natgw-foo \
  --router=cr-nat-foo \
  --region=${REGION_1} \
  --auto-allocate-nat-external-ips \
  --nat-all-subnet-ip-ranges

gcloud compute routers nats create natgw-bar \
  --router=cr-nat-bar \
  --region=${REGION_2} \
  --auto-allocate-nat-external-ips \
  --nat-all-subnet-ip-ranges

एचटीटीपी सर्वर के साथ वीएम स्टार्टअप कॉन्फ़िगरेशन बनाना

cat > vm-server-startup.sh << 'EOF'
#! /bin/bash
apt-get update
apt-get install apache2 -y
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone)"
echo "Page served from: $vm_hostname in zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
EOF

क्षेत्र 1 में सेवा foo सेट अप करें

सेवा कंप्यूट बनाएं

# create managed instance group template
gcloud compute instance-templates create mig-template-foo \
  --machine-type=e2-micro \
  --network=vnet-producer \
  --region=${REGION_1} \
  --subnet=subnet-foo \
  --no-address \
  --shielded-secure-boot \
  --metadata-from-file=startup-script=vm-server-startup.sh
# create regional managed instance group
gcloud compute instance-groups managed create mig-foo \
  --region=${REGION_1} \
  --size=2 \
  --template=mig-template-foo \
  --base-instance-name=service-foo

सर्विस लोड बैलेंसर कॉम्पोनेंट बनाना

# create lb health check
gcloud compute health-checks create http hc-foo-http \
  --region=${REGION_1} \
  --port=80 \
  --enable-logging
# create backend service
gcloud compute backend-services create ilb-foo \
  --load-balancing-scheme=INTERNAL \
  --protocol=tcp \
  --region=${REGION_1} \
  --health-checks=hc-foo-http \
  --health-checks-region=${REGION_1}

# add managed instance group to backend service
gcloud compute backend-services add-backend ilb-foo \
  --instance-group=mig-foo \
  --instance-group-region=${REGION_1} \
  --region=${REGION_1}
# create forwarding rule
gcloud compute forwarding-rules create fr-foo \
  --region=${REGION_1} \
  --load-balancing-scheme=INTERNAL \
  --network=vnet-producer \
  --subnet=subnet-foo \
  --address=172.16.1.99 \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=ilb-foo \
  --backend-service-region=${REGION_1} \
  --allow-global-access

पीएसएसी सेवा पब्लिश करना

# create psc service attachment
gcloud compute service-attachments create psc-sa-foo \
  --region=${REGION_1} \
  --target-service=projects/${PROJECT_ID}/regions/${REGION_1}/forwardingRules/fr-foo \
  --connection-preference=ACCEPT_AUTOMATIC \
  --nat-subnets=subnet-foo-pscnat

दूसरे इलाके में सेवा bar सेट अप करना

सेवा कंप्यूट बनाएं

# create managed instance group template
gcloud compute instance-templates create mig-template-bar \
  --machine-type=e2-micro \
  --network=vnet-producer \
  --region=${REGION_2} \
  --subnet=subnet-bar \
  --no-address \
  --shielded-secure-boot \
  --metadata-from-file=startup-script=vm-server-startup.sh
# create regional managed instance group
gcloud compute instance-groups managed create mig-bar \
  --region=${REGION_2} \
  --size=2 \
  --template=mig-template-bar \
  --base-instance-name=service-bar

सर्विस लोड बैलेंसर कॉम्पोनेंट बनाना

# create lb health check
gcloud compute health-checks create http hc-bar-http \
  --region=${REGION_2} \
  --port=80 \
  --enable-logging
# create backend service
gcloud compute backend-services create ilb-bar \
  --load-balancing-scheme=INTERNAL \
  --protocol=tcp \
  --region=${REGION_2} \
  --health-checks=hc-bar-http \
  --health-checks-region=${REGION_2}

# add managed instance group to backend service
gcloud compute backend-services add-backend ilb-bar \
  --instance-group=mig-bar \
  --instance-group-region=${REGION_2} \
  --region=${REGION_2}
# create forwarding rule
gcloud compute forwarding-rules create fr-bar \
  --region=${REGION_2} \
  --load-balancing-scheme=INTERNAL \
  --network=vnet-producer \
  --subnet=subnet-bar \
  --address=172.16.2.99 \
  --ip-protocol=TCP \
  --ports=80 \
  --backend-service=ilb-bar \
  --backend-service-region=${REGION_2} \
  --allow-global-access

पीएसएसी सेवा पब्लिश करना

# create psc service attachment
gcloud compute service-attachments create psc-sa-bar \
  --region=${REGION_2} \
  --target-service=projects/${PROJECT_ID}/regions/${REGION_2}/forwardingRules/fr-bar \
  --connection-preference=ACCEPT_AUTOMATIC \
  --nat-subnets=subnet-bar-pscnat

5. उपयोगकर्ता का ऐक्सेस

क्लाइंट के संसाधन सेट अप करना

नेटवर्क कॉम्पोनेंट बनाना

# create vpc network
gcloud compute networks create vnet-consumer --subnet-mode=custom
# create client subnet in each region
gcloud compute networks subnets create subnet-client-1 \
  --network=vnet-consumer \
  --region=${REGION_1} \
  --range=10.10.1.0/24 \
  --enable-private-ip-google-access

gcloud compute networks subnets create subnet-client-2 \
  --network=vnet-consumer \
  --region=${REGION_2} \
  --range=10.10.2.0/24 \
  --enable-private-ip-google-access

उपयोगकर्ता के ऐप्लिकेशन (प्रॉक्सी पर आधारित) लोड बैलेंसर के लिए, सिर्फ़ प्रॉक्सी वाले सबनेट की ज़रूरत होती है. ये सबनेट, आईपी पतों का एक पूल उपलब्ध कराते हैं. इनका इस्तेमाल प्रॉक्सी पर आधारित लोड बैलेंसर, इंटरनल सोर्स पतों के तौर पर करते हैं. ऐसा तब किया जाता है, जब बैकएंड को ट्रैफ़िक भेजा जाता है.

# create proxy subnet in each region
gcloud compute networks subnets create subnet-proxy-1 \
  --purpose=GLOBAL_MANAGED_PROXY \
  --role=ACTIVE \
  --network=vnet-consumer \
  --region=${REGION_1} \
  --range=10.10.128.0/23

gcloud compute networks subnets create subnet-proxy-2 \
  --purpose=GLOBAL_MANAGED_PROXY \
  --role=ACTIVE \
  --network=vnet-consumer \
  --region=${REGION_2} \
  --range=10.10.130.0/23

फ़ायरवॉल कॉम्पोनेंट बनाना

# create fw policy
gcloud compute network-firewall-policies create fw-policy-consumer --global
# create fw policy rules
gcloud compute network-firewall-policies rules create 1001 \
  --description="allow iap for ssh" \
  --firewall-policy=fw-policy-consumer \
  --global-firewall-policy \
  --action=allow \
  --direction=INGRESS \
  --layer4-configs=tcp:22  \
  --src-ip-ranges=35.235.240.0/20
# associate fw policy to vnet
gcloud compute network-firewall-policies associations create \
  --firewall-policy=fw-policy-consumer \
  --network=vnet-consumer \
  --name=fw-policy-association-consumer \
  --global-firewall-policy

लोड बैलेंसर कॉम्पोनेंट बनाना

# create psc network endpoint group per region
gcloud compute network-endpoint-groups create neg-foo \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=projects/${PROJECT_ID}/regions/${REGION_1}/serviceAttachments/psc-sa-foo \
  --region=${REGION_1} \
  --network=vnet-consumer \
  --subnet=subnet-client-1

gcloud compute network-endpoint-groups create neg-bar \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=projects/${PROJECT_ID}/regions/${REGION_2}/serviceAttachments/psc-sa-bar \
  --region=${REGION_2} \
  --network=vnet-consumer \
  --subnet=subnet-client-2
# verify psc connections
gcloud compute network-endpoint-groups list --format="value(selfLink, pscData.pscConnectionStatus)"
# create global backend service
gcloud compute backend-services create bes-foobar \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTP \
  --global
# add negs to backend service
gcloud compute backend-services add-backend bes-foobar \
  --network-endpoint-group=neg-foo \
  --network-endpoint-group-region=${REGION_1} \
  --global

gcloud compute backend-services add-backend bes-foobar \
  --network-endpoint-group=neg-bar \
  --network-endpoint-group-region=${REGION_2} \
  --global
# create global url map
gcloud compute url-maps create ilb-foobar \
  --default-service=bes-foobar \
  --global
# create global target proxy
gcloud compute target-http-proxies create proxy-foobar \
  --url-map=ilb-foobar \
  --global
# create global forwarding rule for region 1
gcloud compute forwarding-rules create fr-foobar-1 \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=vnet-consumer \
  --subnet=subnet-client-1 \
  --subnet-region=${REGION_1} \
  --address=10.10.1.99 \
  --ports=80 \
  --target-http-proxy=proxy-foobar \
  --global
# create global forwarding rule for region 2
gcloud compute forwarding-rules create fr-foobar-2 \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=vnet-consumer \
  --subnet=subnet-client-2 \
  --subnet-region=${REGION_2} \
  --address=10.10.2.99 \
  --ports=80 \
  --target-http-proxy=proxy-foobar \
  --global

डीएनएस रिकॉर्ड बनाना

# create dns zone
gcloud dns managed-zones create zone-foobar \
  --description="private zone for foobar" \
  --dns-name=foobar.com \
  --networks=vnet-consumer \
  --visibility=private
# create geo dns record
gcloud dns record-sets create www.foobar.com \
  --zone=zone-foobar \
  --type=A \
  --ttl=300 \
  --routing-policy-type=GEO \
  --routing-policy-item="location=${REGION_1},rrdatas=10.10.1.99" \
  --routing-policy-item="location=${REGION_2},rrdatas=10.10.2.99"

कंप्यूट संसाधन बनाना

# create client vm in region 1
gcloud compute instances create client-1 \
  --machine-type=e2-micro \
  --zone=${ZONE_1} \
  --subnet=subnet-client-1 \
  --no-address \
  --shielded-secure-boot
# create client vm in region 2
gcloud compute instances create client-2 \
  --machine-type=e2-micro \
  --zone=${ZONE_2} \
  --subnet=subnet-client-2 \
  --no-address \
  --shielded-secure-boot

सेवा की बेसलाइन की जांच करना

पहले इलाके में मौजूद क्लाइंट वीएम से

# send request from vm to service using hostname
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s -v www.foobar.com'
# send request from vm to load balancer forwarding rule region 1
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.1.99'
# send request from vm to load balancer forwarding rule region 2
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.2.99'

ज़रूरी नहीं: दूसरे इलाके में मौजूद क्लाइंट वीएम से भी यही टेस्ट करें: gcloud compute ssh client-2 --zone=${ZONE_2}

अहम जानकारी: region-x में फ़ॉरवर्डिंग के नियम का इस्तेमाल करने वाले क्लाइंट के अनुरोधों के लिए, लोड बैलेंसर का सामान्य व्यवहार यह होता है कि वह एक ही region-x में मौजूद बैकएंड को प्राथमिकता देता है. अगर सभी बैकएंड संसाधन ठीक हैं, तो सबसे कम लेटेन्सी वाले क्षेत्र को प्राथमिकता दी जाती है. ग्लोबल बैकएंड, सही हेल्थ सिग्नल वाले दूसरे क्षेत्र पर फ़ेलओवर हो जाएंगे.

हालांकि, प्रोड्यूसर सेवा के असली संसाधन, प्रोड्यूसर वीपीसी नेटवर्क में प्रोड्यूसर लोड बैलेंसर के पीछे होते हैं. इसलिए, ये हेल्थ सिग्नल पहले कंज्यूमर लोड बैलेंसर के लिए उपलब्ध नहीं थे. इसलिए, कंज्यूमर साइड, बैकएंड फ़ेलओवर के बारे में इस तरह के फ़ैसले नहीं ले पाती थी. पीएससी हेल्थ, सेवा की सेहत से जुड़ी जानकारी को प्रोड्यूसर साइड से कंज्यूमर साइड तक पहुंचाकर इस समस्या को हल करता है.

6. स्वास्थ्य से जुड़े संसाधन

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

क्षेत्र 1 में सेवा की स्थिति foo सेट अप करें

स्वास्थ्य से जुड़ा डेटा इकट्ठा करने की नीति बनाना

gcloud compute health-aggregation-policies create foo-health-policy \
  --region=${REGION_1} \
  --healthy-percent-threshold=60 \
  --min-healthy-threshold=1

हेल्थ सोर्स बनाना

gcloud compute health-sources create foo-health-source \
  --region=${REGION_1} \
  --source-type=BACKEND_SERVICE \
  --sources=ilb-foo \
  --health-aggregation-policy=foo-health-policy

कंपोज़िट हेल्थ चेक बनाना

gcloud compute composite-health-checks create foo-health-composite \
  --region=${REGION_1} \
  --health-sources=foo-health-source \
  --health-destination=projects/${PROJECT_ID}/regions/${REGION_1}/forwardingRules/fr-foo

सेवा की foo स्थिति कॉन्फ़िगरेशन की पुष्टि करना

हर इलाके के हिसाब से, सूची (और describe) कमांड की मदद से, स्वास्थ्य से जुड़े संसाधन के कॉन्फ़िगरेशन देखे जा सकते हैं

# show health aggregation policies
gcloud compute health-aggregation-policies list --regions=${REGION_1}

# show health sources
gcloud compute health-sources list --regions=${REGION_1}

# show composite health checks
gcloud compute composite-health-checks list --regions=${REGION_1}

दूसरे इलाके में सेवा की स्थिति bar सेट अप करें

स्वास्थ्य से जुड़ा डेटा इकट्ठा करने की नीति बनाना

gcloud compute health-aggregation-policies create bar-health-policy \
  --region=${REGION_2} \
  --healthy-percent-threshold=60 \
  --min-healthy-threshold=1

हेल्थ सोर्स बनाना

gcloud compute health-sources create bar-health-source \
  --region=${REGION_2} \
  --source-type=BACKEND_SERVICE \
  --sources=ilb-bar \
  --health-aggregation-policy=bar-health-policy

कंपोज़िट हेल्थ चेक बनाना

gcloud compute composite-health-checks create bar-health-composite \
  --region=${REGION_2} \
  --health-sources=bar-health-source \
  --health-destination=projects/${PROJECT_ID}/regions/${REGION_2}/forwardingRules/fr-bar

सेवा की bar स्थिति कॉन्फ़िगरेशन की पुष्टि करना

# show health aggregation policies
gcloud compute health-aggregation-policies list --regions=${REGION_2}

# show health sources
gcloud compute health-sources list --regions=${REGION_2}

# show composite health checks
gcloud compute composite-health-checks list --regions=${REGION_2}

कॉन्फ़िगरेशन का हिस्सा यहीं खत्म होता है... अब टेस्टिंग की बारी है.

7. फ़ेलओवर टेस्टिंग

सेवा foo क्षेत्र 1 में समस्या होने का उदाहरण

इस उदाहरण में, दो वीएम इंस्टेंस में से किसी एक पर वेब सर्वर को बंद करके, क्षेत्र 1 में पीएससी प्रोड्यूसर सेवा foo के काम न करने की स्थिति को दिखाया गया है.

सर्वर वीएम की जानकारी पाना

# set env var for a foo service vm name
export FOO_FAIL_NAME=$(gcloud compute instance-groups managed list-instances mig-foo \
  --limit=1 \
  --region=${REGION_1} \
  --format="value(name)")
echo ${FOO_FAIL_NAME}
# set env var for a foo service zone
export FOO_FAIL_ZONE=$(gcloud compute instance-groups managed list-instances mig-foo \
  --limit=1 \
  --region=${REGION_1} \
  --format="value(ZONE)")
echo ${FOO_FAIL_ZONE}

रीजन 1 http सर्वर को बंद करें

# stop apache http server to fail service
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl stop apache2'
# verify service dead
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl status apache2 | grep Active:'

पुष्टि करें कि क्षेत्रीय सेवा की स्थिति ठीक नहीं है

# check health state of backend service
gcloud compute backend-services get-health ilb-foo --region=${REGION_1}

आउटपुट कुछ ऐसा दिखना चाहिए...

backend: .../regions/us-west1/instanceGroups/mig-foo
status:
  healthStatus:
  -   forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
    forwardingRuleIp: 172.16.1.99
    healthState: UNHEALTHY
    instance: .../zones/us-west1-a/instances/service-foo-<UID_1>
    ipAddress: 172.16.1.2
    port: 80
  -   forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
    forwardingRuleIp: 172.16.1.99
    healthState: HEALTHY
    instance: .../zones/us-west1-b/instances/service-foo-<UID_2>
    ipAddress: 172.16.1.3
    port: 80
  kind: compute#backendServiceGroupHealth
# check health state of health source
gcloud compute health-sources get-health foo-health-source --region=${REGION_1}

आउटपुट कुछ ऐसा दिखना चाहिए...

healthState: UNHEALTHY
kind: compute#healthSourceHealth
sources:
- backends:
  - endpointCount: 1
    group: .../zones/us-west1-a/instanceGroups/mig-foo
    healthyEndpointCount: 0
  - endpointCount: 0
    group: .../zones/us-west1-c/instanceGroups/mig-foo
    healthyEndpointCount: 0
  - endpointCount: 1
    group: .../zones/us-west1-b/instanceGroups/mig-foo
    healthyEndpointCount: 1
  forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
  source: .../regions/us-west1/backendServices/ilb-foo

टेस्ट क्षेत्र 1 क्लाइंट फ़ेलओवर

# send request to service using hostname
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s -v www.foobar.com'
# curl to ilb vip in region 1
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.1.99'
# curl to ilb vip in region 2
gcloud compute ssh client-1 --zone=${ZONE_1} --command='
  curl -s 10.10.2.99'

पीएससी के लिए कंपोज़िट हेल्थ ने उपभोक्ता लोड बैलेंसर को अपडेट कर दिया है. साथ ही, उसे पहले क्षेत्र में खराब बैकएंड सेवा का इस्तेमाल न करने का निर्देश दिया है. इसके बजाय, इसने ट्रैफ़िक को क्षेत्र 2 में मौजूद सही तरीके से काम कर रही सेवा bar पर भेज दिया है.

रीजन 1 के http सर्वर को रीस्टार्ट करें

# start apache http server to return service to healthy
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl start apache2'
# verify service running
gcloud compute ssh ${FOO_FAIL_NAME} --zone=${FOO_FAIL_ZONE} --command='
  sudo systemctl status apache2 | grep Active:'
# check health state of health source
gcloud compute health-sources get-health foo-health-source --region=${REGION_1}

अब आउटपुट में, इस तरह का HEALTHY स्टेटस दिखना चाहिए...

healthState: HEALTHY
kind: compute#healthSourceHealth
sources:
- backends:
  - endpointCount: 1
    group: .../zones/us-west1-a/instanceGroups/mig-foo
    healthyEndpointCount: 1
  - endpointCount: 0
    group: .../zones/us-west1-c/instanceGroups/mig-foo
    healthyEndpointCount: 0
  - endpointCount: 1
    group: .../zones/us-west1-b/instanceGroups/mig-foo
    healthyEndpointCount: 1
  forwardingRule: .../regions/us-west1/forwardingRules/fr-foo
  source: .../regions/us-west1/backendServices/ilb-foo

स्वास्थ्य नीति में बदलाव करना

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

bar सेवा की सेहत से जुड़ी जानकारी इकट्ठा करने की नीति अपडेट करें

gcloud compute health-aggregation-policies update bar-health-policy \
  --region=${REGION_2} \
  --description="min 40% threshold" \
  --healthy-percent-threshold=40 \
  --min-healthy-threshold=2
# verify new policy is applied
gcloud compute health-aggregation-policies list --regions=${REGION_2}

प्रड्यूसर की सेहत से जुड़ी नीति में हुए इस बदलाव से ये काम किए जा सकेंगे:

  1. सेहतमंद थ्रेशोल्ड के कम से कम प्रतिशत को 60% से घटाकर 40% कर दिया गया है. अब एक वीएम इंस्टेंस के फ़ेल होने पर, --healthy-percent-threshold के आधार पर अस्वस्थ स्थिति ट्रिगर नहीं होगी (फ़ेल होने की स्थिति 50% होगी और सेहतमंद होने के लिए सिर्फ़ 40% की ज़रूरत होगी)
  2. बैकएंड के लिए, कम से कम स्वस्थ वीएम इंस्टेंस की संख्या को 1 से बढ़ाकर 2 कर दिया गया है. अब एक वीएम इंस्टेंस के फ़ेल होने पर, --min-healthy-threshold के आधार पर अस्वस्थ स्थिति ट्रिगर होगी (फ़ेल होने की स्थिति 1 होगी, लेकिन स्वस्थ होने के लिए 2 की ज़रूरत होगी)

सेवा bar क्षेत्र 2 में गड़बड़ी होने की स्थिति

इस उदाहरण में, दो वीएम इंस्टेंस में से किसी एक पर वेब सर्वर को बंद करके, दूसरे इलाके में पीएससी प्रोड्यूसर सेवा bar के काम न करने की स्थिति को दिखाया गया है.

सर्वर वीएम की जानकारी पाना

# set env var for a bar service vm name
export BAR_FAIL_NAME=$(gcloud compute instance-groups managed list-instances mig-bar \
  --limit=1 \
  --region=${REGION_2} \
  --format="value(name)")
echo ${BAR_FAIL_NAME}
# set env var for a bar service zone
export BAR_FAIL_ZONE=$(gcloud compute instance-groups managed list-instances mig-bar \
  --limit=1 \
  --region=${REGION_2} \
  --format="value(ZONE)")
echo ${BAR_FAIL_ZONE}

रीजन 2 http सर्वर को बंद करें

# stop apache http server to fail service
gcloud compute ssh ${BAR_FAIL_NAME} --zone=${BAR_FAIL_ZONE} --command='
  sudo systemctl stop apache2'
# verify service dead
gcloud compute ssh ${BAR_FAIL_NAME} --zone=${BAR_FAIL_ZONE} --command='
  sudo systemctl status apache2 | grep Active:'

पुष्टि करें कि क्षेत्रीय सेवा की स्थिति ठीक नहीं है

# check health state of backend service
gcloud compute backend-services get-health ilb-bar --region=${REGION_2}

आउटपुट कुछ ऐसा दिखना चाहिए...

backend: .../regions/us-east1/instanceGroups/mig-bar
status:
  healthStatus:
  -   forwardingRule: .../regions/us-east1/forwardingRules/fr-bar
    forwardingRuleIp: 172.16.2.99
    healthState: UNHEALTHY
    instance: .../zones/us-east1-b/instances/service-bar-<UID_1>
    ipAddress: 172.16.2.3
    port: 80
  -   forwardingRule: .../regions/us-east1/forwardingRules/fr-bar
    forwardingRuleIp: 172.16.2.99
    healthState: HEALTHY
    instance: .../zones/us-east1-d/instances/service-foo-<UID_2>
    ipAddress: 172.16.2.2
    port: 80
  kind: compute#backendServiceGroupHealth
# check health state of health source
gcloud compute health-sources get-health bar-health-source --region=${REGION_2}

आउटपुट कुछ ऐसा दिखना चाहिए...

healthState: UNHEALTHY
kind: compute#healthSourceHealth
sources:
- backends:
  - endpointCount: 1
    group: .../zones/us-east1-b/instanceGroups/mig-bar
    healthyEndpointCount: 0
  - endpointCount: 1
    group: .../zones/us-east1-d/instanceGroups/mig-bar
    healthyEndpointCount: 1
  - endpointCount: 0
    group: .../zones/us-east1-c/instanceGroups/mig-bar
    healthyEndpointCount: 0
  forwardingRule: .../regions/us-west1/forwardingRules/fr-bar
  source: .../regions/us-west1/backendServices/ilb-bar

दूसरे क्षेत्र के क्लाइंट के फ़ेलओवर की जांच करें

# send request to service using hostname
gcloud compute ssh client-2 --zone=${ZONE_2} --command='
  curl -s -v www.foobar.com'
# curl to ilb vip in region 1
gcloud compute ssh client-2 --zone=${ZONE_2} --command='
  curl -s 10.10.1.99'
# curl to ilb vip in region 2
gcloud compute ssh client-2 --zone=${ZONE_2} --command='
  curl -s 10.10.2.99'

पीएससी के लिए कंपोज़िट हेल्थ ने उपभोक्ता लोड बैलेंसर को अपडेट कर दिया है. साथ ही, इसे दूसरे इलाके में मौजूद अस्वस्थ बैकएंड सेवा का इस्तेमाल न करने का निर्देश दिया है. इसके बजाय, इसने पहले इलाके में मौजूद foo स्वस्थ सेवा पर ट्रैफ़िक को रीडायरेक्ट कर दिया है.

अगर उपभोक्ता लोड बैलेंसर को, प्रोड्यूसर की सभी सेवाएं ठीक से काम नहीं करती हुई दिखती हैं, तो लोड बैलेंसर, ठीक से काम कर रहे इंस्टेंस पर फ़ेलओवर नहीं कर सकता. लोड बैलेंसर को, ट्रैफ़िक को ठीक से काम न कर रहे सभी बैकएंड (फ़ेल ओपन) पर डिस्ट्रिब्यूट करना चाहिए.

जांच का यह हिस्सा यहीं खत्म होता है... अब मॉनिटरिंग की बारी है.

8. सेहत की निगरानी करना

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

इस लैब में, उपभोक्ता और प्रॉड्यूसर, दोनों संसाधनों को एक ही प्रोजेक्ट में डिप्लॉय किया जाता है, ताकि इसे आसानी से समझा जा सके. हालांकि, अलग-अलग प्रोजेक्ट में डिप्लॉय करने पर, लॉग में दोनों भूमिकाएँ अलग-अलग दिखेंगी.

मॉनिटर किया गया संसाधन

देखें

लॉग का नाम

स्वास्थ्य से जुड़े सोर्स और कंपोज़िट जांच

क्रिएटर व्यू

.../logs/compute.googleapis.com%2Fcompositehealth

Private Service Connect NEGs

उपयोगकर्ता को दिखने वाला व्यू

.../logs/compute.googleapis.com%2Fservicehealthchecks

प्रोड्यूसर लॉग

प्रोड्यूसर लॉग में, प्रोड्यूसर सेवाओं का इंटरनल हेल्थ रोलअप दिखता है:

  • HealthSource: हर बैकएंड सेवा की स्थिति (जैसे, mig-bar और mig-foo के VM की स्थितियां)
  • CompositeHealthCheck: पब्लिश की गई सेवा की कुल क्षेत्रीय सेहत, जिसे प्रोड्यूसर के आगे बढ़ाने के नियम के डेस्टिनेशन (जैसे, fr-bar या fr-foo) पर मैप किया गया है
# query logs for producer
gcloud logging read \
  'logName="projects/'${PROJECT_ID}'/logs/compute.googleapis.com%2Fcompositehealth"' \
  --project=${PROJECT_ID} \
  --limit=10 \
  --format='table(
    timestamp.date(format="%I:%M:%S %p", tz=LOCAL):label=TIME,
    resource.type.basename():label=TYPE,
    resource.labels.location:label=REGION,
    jsonPayload.healthState:label=STATE,
    jsonPayload.sources[0].backends[].group.basename().join(","):label=BACKENDS,
    jsonPayload.sources[0].backends[].healthyEndpointCount.join(","):label=HEALTHY,
    jsonPayload.sources[0].backends[].endpointCount.join(","):label=TOTAL,
    jsonPayload.healthDestination.basename():label=DESTINATION
  )'

उपयोगकर्ता के लॉग

उपयोगकर्ता के लॉग में, उपयोगकर्ता के संसाधनों की प्रॉपगेट की गई स्थिति दिखती है:

  • NetworkEndpointGroup: पब्लिश की गई सेवा से कनेक्ट किए गए पीएससी एनईजी की सेहत की जानकारी (जैसे, neg-bar और neg-foo)

उपयोगकर्ता और प्रोड्यूसर के अलग-अलग सेटअप में, इस लॉग क्वेरी का इस्तेमाल उपभोक्ता प्रोजेक्ट में करें, ताकि पीएससी एनईजी के लिए कंपोज़िट हेल्थ इवेंट को टारगेट किया जा सके...

# query logs for consumer
gcloud logging read \
  "logName=projects/${PROJECT_ID}/logs/compute.googleapis.com%2Fservicehealthchecks
  AND resource.type=\"compute.googleapis.com/NetworkEndpointGroupV2\"" \
  --project="${PROJECT_ID}" \
  --freshness=30m \
  --limit=10 \
  --format="table(
    timestamp.date(format='%I:%M:%S %p', tz=LOCAL):label=TIME,
    resource.labels.location:label=REGION,
    jsonPayload.serviceHealthCheckResult.healthState:label=STATE,
    jsonPayload.serviceHealthCheckResult.previousHealthState:label=PREV_STATE,
    resource.labels.network_endpoint_group_id:label=NEG_ID
  )"

मॉनिटरिंग का हिस्सा यहीं खत्म होता है... अब क्लीनअप की बारी है.

9. साफ़-सफ़ाई सेवा

# delete health resources
gcloud -q compute composite-health-checks delete foo-health-composite --region=${REGION_1}

gcloud -q compute health-sources delete foo-health-source --region=${REGION_1}

gcloud -q compute health-aggregation-policies delete foo-health-policy --region=${REGION_1}

gcloud -q compute composite-health-checks delete bar-health-composite --region=${REGION_2}

gcloud -q compute health-sources delete bar-health-source --region=${REGION_2}

gcloud -q compute health-aggregation-policies delete bar-health-policy --region=${REGION_2}
# delete consumer compute and load balancer resources
gcloud -q compute instances delete client-2 --zone=${ZONE_2}

gcloud -q compute instances delete client-1 --zone=${ZONE_1}

gcloud -q dns record-sets delete www.foobar.com --type=A --zone=zone-foobar

gcloud -q dns managed-zones delete zone-foobar

gcloud -q compute forwarding-rules delete fr-foobar-2 --global

gcloud -q compute forwarding-rules delete fr-foobar-1 --global

gcloud -q compute target-http-proxies delete proxy-foobar --global

gcloud -q compute url-maps delete ilb-foobar --global

gcloud -q compute backend-services delete bes-foobar --global


# delete consumer network resources
gcloud -q compute network-endpoint-groups delete neg-bar --region=${REGION_2}

gcloud -q compute network-endpoint-groups delete neg-foo --region=${REGION_1}

gcloud -q compute networks subnets delete subnet-proxy-2 --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-proxy-1 --region=${REGION_1}

gcloud -q compute networks subnets delete subnet-client-2 --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-client-1 --region=${REGION_1}

gcloud -q compute network-firewall-policies associations delete \
  --firewall-policy=fw-policy-consumer \
  --name=fw-policy-association-consumer \
  --global-firewall-policy

gcloud -q compute network-firewall-policies delete fw-policy-consumer --global

gcloud -q compute networks delete vnet-consumer
# delete producer load balancer resources
gcloud -q compute service-attachments delete psc-sa-bar --region=${REGION_2}

gcloud -q compute service-attachments delete psc-sa-foo --region=${REGION_1}

gcloud -q compute forwarding-rules delete fr-bar --region=${REGION_2}

gcloud -q compute forwarding-rules delete fr-foo --region=${REGION_1}

gcloud -q compute backend-services delete ilb-bar --region=${REGION_2}

gcloud -q compute backend-services delete ilb-foo --region=${REGION_1}

gcloud -q compute health-checks delete hc-bar-http --region=${REGION_2}

gcloud -q compute health-checks delete hc-foo-http --region=${REGION_1}
# delete producer compute resources
gcloud -q compute instance-groups managed delete mig-bar --region=${REGION_2}

gcloud -q compute instance-groups managed delete mig-foo --region=${REGION_1}

gcloud -q compute instance-templates delete mig-template-bar --global

gcloud -q compute instance-templates delete mig-template-foo --global
# delete producer network resources
gcloud -q compute networks subnets delete subnet-bar-pscnat --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-foo-pscnat --region=${REGION_1}

gcloud -q compute networks subnets delete subnet-bar --region=${REGION_2}

gcloud -q compute networks subnets delete subnet-foo --region=${REGION_1}

gcloud -q compute routers delete cr-nat-bar --region=${REGION_2}

gcloud -q compute routers delete cr-nat-foo --region=${REGION_1}

gcloud -q compute network-firewall-policies associations delete \
  --firewall-policy=fw-policy-producer \
  --name=fw-policy-association-producer \
  --global-firewall-policy

gcloud -q compute network-firewall-policies delete fw-policy-producer --global

gcloud -q compute networks delete vnet-producer
# delete shell variables and script file
unset FOO_FAIL_NAME FOO_FAIL_ZONE BAR_FAIL_NAME BAR_FAIL_ZONE

unset PROJECT_ID REGION_1 ZONE_1 REGION_2 ZONE_2

rm vm-server-startup.sh
#

10. नतीजा

बधाई हो! आपने पीएससी के लिए कंपोज़िट हेल्थ को कॉन्फ़िगर कर लिया है. साथ ही, रीजनल फ़ेलओवर की सुविधा को अपने-आप चालू होने की जांच कर ली है!

इस फ़ीडबैक फ़ॉर्म का इस्तेमाल करके, बेझिझक कोई टिप्पणी करें, सवाल पूछें या सुधार के बारे में बताएं.

धन्यवाद!