رفع خطای چند منطقه‌ای برای نقاط پایانی خارجی منطقه‌ای با استفاده از بررسی‌های سلامت DNS ابری

۱. مقدمه

سرویس Cloud DNS یک راهکار DNS جهانی، مقاوم و با کارایی بالا ارائه می‌دهد که به شما این امکان را می‌دهد تا بدون نیاز به زیرساخت DNS خودمدیریت‌شده، زون‌ها و رکوردها را منتشر کنید.

از اهمیت ویژه‌ای برخوردار است که Cloud DNS پشتیبانی از بررسی سلامت و قابلیت‌های خودکار failover را در سیاست‌های مسیریابی خود برای نقاط پایانی خارجی گنجانده است . با این حال، لطفاً توجه داشته باشید که بررسی‌های سلامت برای این نقاط پایانی خارجی منحصراً در مناطق عمومی در دسترس هستند و خود نقاط پایانی باید از طریق اینترنت به صورت عمومی قابل دسترسی باشند.

آنچه یاد خواهید گرفت

  • نحوه ایجاد یک متعادل‌کننده بار برنامه خارجی منطقه‌ای با یک گروه نمونه مدیریت نشده.
  • نحوه پیکربندی بررسی‌های سلامت Cloud DNS برای مسیریابی DNS خارجی.
  • نحوه ایجاد یک سیاست مسیریابی در هنگام خرابی (Failover Routing Policy) .

آنچه نیاز دارید

  • آشنایی اولیه با DNS.
  • آشنایی اولیه با موتور محاسباتی گوگل
  • آشنایی اولیه با متعادل‌کننده بار برنامه کاربردی
  • یک پروژه گوگل کلود با مجوزهای مالک
  • یک دامنه عمومی که متعلق به شماست و می‌توانید برای آن یک منطقه عمومی Cloud DNS ایجاد کنید.
  • سیاست‌های سازمانی زیر در حال حاضر در پروژه گوگل کلود اجرا نمی‌شوند : ماشین‌های مجازی محافظت‌شده و گروه‌های نقطه پایانی شبکه اینترنت .

۲. توپولوژی Codelab

f7c2062b86d93268.jpeg

در این آزمایشگاه کد، شما از بررسی‌های سلامت Cloud DNS برای نقاط پایانی خارجی استفاده خواهید کرد تا در صورت ناسالم شدن backend متعادل‌کننده بار اصلی، ترافیک را به یک متعادل‌کننده بار برنامه خارجی منطقه‌ای پشتیبان تغییر مسیر دهید.

شما یک وب‌سایت در دو منطقه ایجاد خواهید کرد که هر کدام توسط یک متعادل‌کننده بار برنامه خارجی (External Application Load Balancer ) پوشش داده می‌شوند. سپس، بررسی‌های سلامت Cloud DNS را با یک سیاست مسیریابی failover پیکربندی خواهید کرد.

۳. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

۲۹۵۰۰۴۸۲۱bab6a87.png

37d264871000675d.png

۹۶d86d3d5655cdbe.png

  • نام پروژه، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود. شما همیشه می‌توانید آن را به‌روزرسانی کنید.
  • شناسه پروژه در تمام پروژه‌های گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاه‌های کد، باید شناسه پروژه خود را (که معمولاً با عنوان PROJECT_ID شناخته می‌شود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، می‌توانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، می‌توانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی می‌ماند.
  • برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده می‌کنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینه‌ای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

فعال کردن پوسته ابری

آماده‌سازی و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

تصویر صفحه ترمینال Google Cloud Shell که نشان می‌دهد محیط متصل شده است

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه کد را می‌توان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.

۴. قبل از شروع

فعال کردن APIها

در داخل 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

۵. ایجاد زیرساخت متعادل‌سازی بار ابری

در این بخش، شما VPC، زیرشبکه‌ها، قوانین فایروال، ماشین‌های مجازی و گروه‌های نمونه مدیریت نشده لازم را در دو منطقه مختلف برای پشتیبانی از متعادل‌کننده‌های بار اصلی و پشتیبان ایجاد خواهید کرد.

شبکه VPC

از پوسته ابری

gcloud compute networks create external-lb-vpc --subnet-mode=custom

دو زیرشبکه در REGION_A (اصلی) و REGION_B (پشتیبان) برای میزبانی وب سرورهای backend ایجاد کنید.

ایجاد زیرشبکه‌ها

از پوسته ابری

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 مستقر شده‌اند. این پروکسی‌ها به طور مؤثر اتصال کلاینت را خاتمه می‌دهند و متعاقباً اتصالات جدیدی را به سرویس‌های backend برقرار می‌کنند.

از پوسته ابری

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 روی پورت‌های ۸۰ از پروکسی‌های مدیریت‌شده‌ی منطقه‌ای Application Load Balancer اجازه عبور می‌دهد. این مثال از برچسب هدف load-balanced-backend برای شناسایی ماشین‌های مجازی که قانون فایروال به آنها اعمال می‌شود، استفاده می‌کند.

از پوسته ابری

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

برای اینکه به IAP اجازه دهید به ماشین‌های مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه‌های ماشین مجازی که می‌خواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال می‌شود.
  • اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را می‌دهد. این محدوده شامل تمام آدرس‌های IP است که IAP برای ارسال TCP استفاده می‌کند.

از پوسته ابری

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

۶. ایجاد Cloud NAT و Cloud Routers

برای اینکه ماشین‌های مجازی خصوصی بتوانند بسته‌ها را از اینترنت دانلود و نصب کنند، به دروازه‌های Cloud NAT در هر دو منطقه نیاز دارید.

  • ماشین‌های مجازی وب سرور ما باید وب سرور آپاچی را دانلود و نصب کنند.
  • ماشین مجازی کلاینت باید بسته dnsutils را که برای آزمایش خود استفاده خواهیم کرد، دانلود و نصب کند.

هر دروازه NAT ابری با یک شبکه VPC، منطقه و روتر ابری مرتبط است. بنابراین قبل از ایجاد دروازه‌های NAT، باید روترهای ابری را در هر منطقه ایجاد کنیم.

ایجاد روترهای ابری

از پوسته ابری

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

از پوسته ابری

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

ایجاد ماشین‌های مجازی بک‌اند و گروه‌های نمونه مدیریت نشده

در هر منطقه یک ماشین مجازی ایجاد کنید و وب سرور (مثلاً آپاچی) را نصب کنید:

از پوسته ابری

# 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'

یک گروه نمونه مدیریت نشده ایجاد کنید و نمونه ماشین مجازی را برای هر منطقه به آن اضافه کنید:

از پوسته ابری

# 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

۷. پیکربندی متعادل‌کننده‌های بار برنامه‌های خارجی منطقه‌ای

شما یک متعادل‌کننده بار منطقه‌ای کامل برای برنامه‌های خارجی را هم در REGION_A (اصلی) و هم REGION_B (پشتیبان) پیکربندی خواهید کرد.

ایجاد بررسی‌های سلامت و سرویس‌های بک‌اند

متعادل‌کننده‌های بار برنامه‌های خارجی منطقه‌ای مبتنی بر نماینده هستند و برای پیکربندی به بررسی‌های سلامت منطقه‌ای نیاز دارند.

یک بررسی سلامت HTTP ایجاد کنید (که توسط متعادل‌کننده‌های بار برای بررسی سلامت نمونه استفاده می‌شود):

در پوسته ابری

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

یک سرویس Backend منطقه‌ای ایجاد کنید و گروه نمونه را در هر منطقه ضمیمه کنید.

در پوسته ابری

# 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 در هر دو منطقه:

در پوسته ابری

#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 استاتیک (خارجی) را برای قوانین ارسال رزرو کنید:

در پوسته ابری

# 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

قوانین ارسال را برای دو متعادل‌کننده بار ایجاد کنید:

در پوسته ابری

# 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 برای Failover

ایجاد بررسی سلامت Cloud DNS برای نقاط انتهایی خارجی

شما باید یک بررسی سلامت سراسری اختصاصی برای آدرس‌های IP عمومی متعادل‌کننده بار ایجاد کنید. این با بررسی سلامت داخلی متعادل‌کننده بار متفاوت است.

ابتدا بیایید آدرس‌های IP خارجی متعادل‌کننده‌های بار را برای پیکربندی سیاست failover تعیین کنیم و آن را به عنوان یک متغیر export کنیم.

در پوسته ابری

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)')

بررسی سلامت DNS سراسری را ایجاد کنید (به سه ناحیه منبع نیاز دارد):

در پوسته ابری

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

ایجاد منطقه مدیریت‌شده عمومی و سیاست مسیریابی Failover.

یک منطقه مدیریت‌شده عمومی ایجاد کنید (از دامنه DNS متعلق به خودتان استفاده کنید):

در پوسته ابری

gcloud dns managed-zones create codelab-publiczone --dns-name=$DNS_DOMAIN --description="Codelab DNS Failover Zone"

رکورد A را با یک سیاست مسیریابی Failover ایجاد کنید. این سیاست به IP اصلی اشاره می‌کند و از بررسی سلامت برای تعیین زمان failover به 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

۸. آزمایش failover منطقه‌ای

  1. اعتبارسنجی اولیه: از ابزاری (مانند dig یا مرورگر وب) برای جستجوی دامنه خود استفاده کنید. باید به IP اصلی ( $PRIMARY_IP ) برسد و صفحه "منطقه A - Backend اصلی" را برگرداند.
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>

خروجی از مرورگر

65b44db03cc084e4.png

  1. شبیه‌سازی Failover: وارد ماشین مجازی اصلی ( vm-a ) شوید و آپاچی را خاموش کنید تا یک قطعی برق شبیه‌سازی شود:

در پوسته ابری

gcloud compute ssh vm-a --zone=$REGION_A-a --command="sudo systemctl stop apache2"
  1. وضعیت ناسالم را تأیید کنید: ۲ تا ۳ دقیقه صبر کنید تا بررسی سلامت DNS، نقطه پایانی اولیه را به عنوان ناسالم علامت‌گذاری کند.
# 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
  1. اعتبارسنجی Failover: دامنه خود را دوباره جستجو کنید. اکنون باید به آدرس IP پشتیبان ( $BACKUP_IP ) ارجاع داده شود و صفحه "منطقه B - Backup Backend" را برگرداند.
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>

خروجی از مرورگر

ae84a2ea0a367025.png

  1. شبیه‌سازی Failback (اختیاری): با SSH به ماشین مجازی اصلی متصل شوید و آپاچی را اجرا کنید و منتظر بمانید تا بررسی سلامت DNS، نقطه پایانی اصلی را سالم علامت‌گذاری کند. ترافیک باید به‌طور خودکار به IP اصلی بازگردد.
  2. اختیاری: می‌توانید با اجرای دستور زیر در پوسته ابری، گزارش بررسی سلامت DNS ابری را تجزیه و تحلیل کنید.
gcloud logging read "logName=projects/${projectid}/logs/compute.googleapis.com%2Fhealthchecks" \
--limit=10 \
--project=${projectid} \
--freshness=1d \
--format="table(timestamp:label=TIME, \
jsonPayload.healthCheckProbeResult.ipAddress:label=BACKEND_IP, \
jsonPayload.healthCheckProbeResult.previousDetailedHealthState:label=PREVIOUS_STATE, \
jsonPayload.healthCheckProbeResult.detailedHealthState:label=CURRENT_STATE, \
jsonPayload.healthCheckProbeResult.probeResultText:label=RESULT_TEXT)"

۹. مراحل پاکسازی

برای جلوگیری از هزینه‌های اضافی، تمام اجزا را حذف کنید.

از پوسته ابری

# 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

۱۰. تبریک می‌گویم!

تبریک بابت تکمیل Codelab.

  • شما با موفقیت یک failover فعال-غیرفعال چند منطقه‌ای را با استفاده از بررسی‌های سلامت Cloud DNS و متعادل‌کننده بار برنامه خارجی منطقه‌ای پیکربندی و اعتبارسنجی کرده‌اید.