1. مقدمة
تقدّم خدمة Cloud DNS حلاً عالميًا عالي الأداء ومرنًا لنظام أسماء النطاقات (DNS)، ما يتيح لك نشر المناطق والسجلات بدون الحاجة إلى بنية أساسية لنظام أسماء النطاقات تتم إدارتها ذاتيًا.
تتضمّن خدمة Cloud DNS دعمًا لإمكانات التحقّق من الصحة والتبديل التلقائي بين المناطق المتعددة عند التعطّل ضمن سياسات التوجيه لنقاط النهاية الخارجية، وهذا أمر بالغ الأهمية. يُرجى العِلم أنّ عمليات التحقّق من الصحة لنقاط النهاية الخارجية هذه متاحة حصريًا في المناطق العامة، ويجب أن تكون نقاط النهاية نفسها متاحة للجميع عبر الإنترنت.
ما ستتعلمه
- كيفية إنشاء جهاز موازنة حمل خارجي للتطبيقات على مستوى منطقة باستخدام مجموعة مثيلات غير مُدارة
- كيفية ضبط عمليات التحقّق من الصحة في Cloud DNS لتوجيه نظام أسماء النطاقات الخارجي
- كيفية إنشاء سياسة توجيه تجاوز الفشل
المتطلبات
- معرفة أساسية بنظام أسماء النطاقات
- معرفة أساسية بخدمة Google Compute Engine
- معرفة أساسية بجهاز موازنة حمل التطبيقات
- مشروع على Google Cloud يتضمّن أذونات المالك
- نطاق عام تملكه، ويمكنك إنشاء منطقة عامة في Cloud DNS له.
- إنّ سياسات المؤسسة التالية غير مفروضة حاليًا ضمن مشروع Google Cloud: الأجهزة الافتراضية المحمية ومجموعات نقاط نهاية الشبكة على الإنترنت.
2. بنية الدرس التطبيقي حول الترميز

في هذا الدرس التطبيقي حول الترميز، ستستخدم عمليات التحقّق من الصحة في Cloud DNS لنقاط النهاية الخارجية لإعادة توجيه الزيارات إلى جهاز موازنة حمل للتطبيقات الخارجية الإقليمي احتياطي في حال تعذّر استخدام الخلفية لجهاز موازنة الحمل الأساسي.
ستنشئ موقعًا إلكترونيًا في منطقتَين، وستكون كل منطقة مزوّدة بجهاز موازنة حمل للتطبيقات الخارجية. بعد ذلك، ستضبط عمليات التحقّق من الصحة في Cloud DNS باستخدام سياسة توجيه التبديل التلقائي عند التعطّل.
3- الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع 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 والشبكات الفرعية وقواعد جدار الحماية والأجهزة الافتراضية ومجموعات الأجهزة الافتراضية غير المُدارة اللازمة في منطقتَين مختلفتَين لتوفير دعم لأجهزة موازنة الحمل الأساسية والاحتياطية.
شبكة 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. قاعدة دخول تنطبق على الأجهزة الافتراضية التي يتم موازنة تحميلها، وتسمح بجميع زيارات بروتوكول TCP من أنظمة فحص السلامة في Google Cloud (في 130.211.0.0/22 و35.191.0.0/16). يستخدم هذا المثال العلامة المستهدَفة load-balanced-backend لتحديد الأجهزة الافتراضية التي تنطبق عليها قاعدة جدار الحماية.
fw-allow-proxies. قاعدة دخول تنطبق على المثيلات التي يتم موازنة حملها، وتسمح بزيارات TCP على المنافذ 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
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- يسمح هذا الخيار بزيارات الدخول من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.
من 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 Routers
تحتاج إلى بوابات Cloud NAT في كلتا المنطقتين لتتمكّن الأجهزة الافتراضية الخاصة من تنزيل الحِزم وتثبيتها من الإنترنت.
- ستحتاج الأجهزة الافتراضية لخادم الويب إلى تنزيل خادم ويب Apache وتثبيته.
- يجب أن تنزّل الآلة الافتراضية للعميل حزمة dnsutils وتثبّتها، وهي الحزمة التي سنستخدمها في الاختبار.
يرتبط كلّ مدخل Cloud NAT بشبكة VPC واحدة ومنطقة واحدة وCloud Router واحد. لذا، قبل إنشاء بوابات NAT، علينا إنشاء أجهزة توجيه Cloud Router في كل منطقة.
إنشاء أجهزة توجيه 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، ويجب إعداد عمليات التحقّق من الصحة على مستوى منطقة معيّنة.
أنشئ عملية تحقّق من الصحة عبر HTTP (تستخدمها أجهزة موازنة الحمل للتحقّق من صحة الجهاز الظاهري):
في 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
إنشاء مكوّنات الواجهة الأمامية
إنشاء خرائط عناوين URL وخوادم وكيل HTTP مستهدَفة في كلتا المنطقتَين:
في 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
احجز عناوين IP ثابتة (خارجية) لقواعد إعادة التوجيه:
في 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 لنقاط النهاية الخارجية
يجب إنشاء عملية تحقّق من الصحة مخصّصة على مستوى العالم لعناوين IP العلنية الخاصة بجهاز موازنة الحمل. يختلف هذا الإجراء عن عملية التحقّق الداخلية من الصحة التي يجريها جهاز موازنة الحمل.
لنحدّد أولاً عناوين IP الخارجية لأجهزة موازنة الحمل من أجل إعداد سياسة تجاوز الفشل وتصديرها كمتغيّر.
في 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 باستخدام سياسة التوجيه الاحتياطية. تشير هذه السياسة إلى عنوان IP الأساسي وتستخدم فحص السلامة لتحديد وقت التبديل إلى عنوان IP الاحتياطي.
يستخدم الأمر أدناه أسماء قواعد إعادة التوجيه لموازنة التحميل للإشارة إلى عناوين IP الخاصة بسياسة التوجيه.
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أو متصفّح ويب) للاستعلام عن نطاقك. يجب أن يتم حلّها إلى عنوان IP الأساسي ($PRIMARY_IP) وعرض صفحة "المنطقة أ - الخلفية الأساسية".
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"
- التأكّد من الحالة غير السليمة: انتظِر لمدة تتراوح بين دقيقتَين و3 دقائق إلى أن تحدّد عملية التحقّق من سلامة نظام أسماء النطاقات نقطة النهاية الأساسية على أنّها غير سليمة.
# 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
- التحقّق من تجاوز الفشل: أعِد طلب البحث عن نطاقك. من المفترض أن يتم الآن الانتقال إلى عنوان IP الاحتياطي (
$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 على الجهاز الظاهري الأساسي وانتظِر إلى أن تشير عملية التحقّق من الصحة في نظام أسماء النطاقات إلى أنّ نقطة النهاية الأساسية سليمة. من المفترَض أن تتم إعادة توجيه الزيارات تلقائيًا إلى عنوان IP الأساسي.
- اختياري: يمكنك تحليل تسجيلات فحص سلامة Cloud DNS من خلال تنفيذ الأمر أدناه في Cloud Shell
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. تهانينا!
تهانينا على إكمال Codelab.
- لقد نجحت في إعداد عملية تبديل تلقائي بين المناطق المتعدّدة في وضع التشغيل الاحتياطي النشط والتحقّق من صحتها باستخدام عمليات "التحقّق من الصحة" في Cloud DNS وRegional External Application Load Balancer.