خطای چند منطقه‌ای با استفاده از سیاست‌های مسیریابی Cloud DNS و بررسی سلامت برای متعادل‌کننده بار TCP/UDP داخلی

1. مقدمه

آخرین به روز رسانی: 22-09-2022

سیاست مسیریابی DNS چیست؟

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

Cloud DNS از سیاست های مسیریابی زیر پشتیبانی می کند:

  • خط مشی مسیریابی دور روبین وزنی
  • سیاست مسیریابی موقعیت جغرافیایی
  • خط مشی مسیریابی زمینی
  • خط مشی مسیریابی شکست

در این آزمایشگاه شما سیاست مسیریابی failover را پیکربندی و آزمایش خواهید کرد.

خط مشی مسیریابی شکست

Cloud DNS از بررسی های سلامتی برای تعادل بار داخلی TCP/UDP که دسترسی جهانی را فعال کرده اند، پشتیبانی می کند. با یک خط مشی مسیریابی شکست، می توانید IP های اصلی و پشتیبان را برای رکورد منبع پیکربندی کنید. در عملکرد عادی، Cloud DNS به درخواست‌ها با آدرس‌های IP ارائه‌شده در مجموعه اولیه پاسخ می‌دهد. وقتی همه آدرس‌های IP در مجموعه اولیه از کار می‌افتند (وضعیت سلامت به ناسالم تغییر می‌کند)، Cloud DNS شروع به ارائه آدرس‌های IP در مجموعه پشتیبان می‌کند.

بررسی های بهداشتی

خط‌مشی مسیریابی DNS به بررسی‌های سلامت یکپارچه داخلی بارگذاری داخلی (UHC) بستگی دارد. اگر 20٪ (یا بیشتر) از backendها سالم باشند، یک Internal Load Balancer سالم در نظر گرفته می شود. بررسی سلامت برای بار متعادل کننده های داخلی TCP/UDP و HTTP(S) داخلی اطلاعات متفاوتی را ارائه می دهد. برای متعادل‌کننده بار HTTP(S)، UHC وضعیت سلامت همه پراکسی‌های Envoy را فراهم می‌کند، اما برای متعادل‌کننده بار TCP/UDP داخلی، Cloud DNS سیگنال‌های سلامت مستقیم را از نمونه‌های پشتیبان جداگانه دریافت می‌کند. جزئیات بررسی های بهداشتی را می توانید در اینجا بیابید.

چیزی که خواهی ساخت

در این Codelab، می‌خواهید یک وب‌سایت اجرا کنید که در 2 منطقه اجرا می‌شود و یک خط‌مشی مسیریابی DNS شکست خورده را به آن مرتبط کنید. راه اندازی خواهد داشت:

منابع فعال -

  • L4 Load Balancer داخلی در REGION_1
  • یک VM که وب سرور Apache را در REGION_1 اجرا می کند

منابع پشتیبان -

  • L4 Load Balancer داخلی در REGION_2
  • یک VM که وب سرور Apache را در REGION_2 اجرا می کند

تنظیم به شکل زیر است -

d0a91d3d3698f544.png

چیزی که یاد خواهید گرفت

  • نحوه ایجاد خط مشی مسیریابی شکستی
  • خطای DNS را راه اندازی کنید
  • چگونه ترافیک را به مجموعه پشتیبان هدایت کنیم

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

  • دانش اولیه DNS
  • دانش اولیه موتور محاسباتی گوگل
  • دانش اولیه L4 Internal Load Balancer

2. راه اندازی و الزامات

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

3. نسخه Google Cloud SDK

در زمان نگارش، 401.0.0 آخرین نسخه Google Cloud SDK است. تمام دستورات در این آزمایشگاه با استفاده از آخرین نسخه Google Cloud SDK آزمایش شدند. قبل از ادامه، لطفاً مطمئن شوید که Cloud Shell از آخرین نسخه SDK استفاده می‌کند.

بررسی نسخه SDK

از دستور gcloud version برای بررسی نسخه SDK استفاده کنید. دستورات زیر را در 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 به درستی پیکربندی شده است و همه APIهای مورد نیاز فعال هستند.

شناسه پروژه را تنظیم کنید

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است. اگر درخواست پوسته Cloud شما مانند خروجی زیر است و قصد ندارید شناسه پروژه را تغییر دهید، می توانید به مرحله بعدی (تنظیم متغیرهای محیطی) بروید.

USER@cloudshell:~ (PROJECT_ID)$

اگر همچنان می‌خواهید شناسه پروژه را تغییر دهید، از دستور فهرست شده در زیر استفاده کنید، اعلان Cloud Shell از (PROJECT_ID) به (YOUR-PROJECT-ID) تغییر خواهد کرد.

فرمان اختیاری

gcloud config set project [YOUR-PROJECT-ID]

نمونه خروجی

Updated property [core/project].
USER@cloudshell:~ (YOUR-PROJECT-ID)$

متغیرهای محیطی را تنظیم کنید

متغیرهای Environment را تنظیم کنید

ما از دستور 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

تمام خدمات لازم را فعال کنید

برای فعال کردن API های Compute و DNS از دستور gcloud services enable استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید

Compute API را فعال کنید

فرمان

gcloud services enable compute.googleapis.com

DNS API را فعال کنید

فرمان

gcloud services enable dns.googleapis.com

تأیید کنید

اکنون که سرویس‌ها فعال هستند، بیایید با استفاده از دستور gcloud services list تأیید کنیم تا همه APIهای فعال را فهرست کنیم.

فرمان

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

نمونه خروجی

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

5. قوانین شبکه VPC، زیرشبکه ها و فایروال را ایجاد کنید

در این بخش، شبکه VPC، دو زیر شبکه (یکی در هر منطقه) و قوانین فایروال مورد نیاز را ایجاد می کنیم.

شبکه VPC ایجاد کنید

از دستور gcloud compute networks create برای ایجاد شبکه VPC استفاده کنید. ما حالت زیر شبکه را به صورت سفارشی تنظیم می کنیم زیرا در مرحله بعد زیر شبکه های خود را ایجاد خواهیم کرد. دستورات زیر را در Cloud Shell اجرا کنید.

فرمان

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

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

برای ایجاد دو زیرشبکه، یکی در REGION_1 و دیگری در REGION_2، از دستور gcloud compute networks subnets create استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید

REGION_1 زیر شبکه

فرمان

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

زیرشبکه REGION_2

فرمان

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

قوانین فایروال را ایجاد کنید

شما باید از زیرشبکه های VPC و از محدوده IP بررسی سلامت متعادل کننده بار اجازه ترافیک در پورت 80 را بدهید.

علاوه بر آن، شما همچنین باید قانون فایروال ایجاد کنید تا به ترافیک SSH روی ماشین های مجازی مشتری اجازه دهد.

برای ایجاد قواعد فایروال از دستور 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

اجازه ترافیک SSH در VM مشتری

فرمان

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 در هر دو منطقه نیاز دارید.

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

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

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

از دستور gcloud compute routers create برای ایجاد مسیریاب‌های ابری در مناطق us-west1 و us-east4 استفاده کنید. دستورات زیر را در 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 را ایجاد کنید

از دستور gcloud compute routers nat create برای ایجاد دروازه های NAT در مناطق us-west1 و us-east4 استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید.

درگاه NAT Region_1

دستورات

gcloud compute routers nats create "${REGION_1}-nat-gw" \
--router="${REGION_1}-cloudrouter" \
--router-region=$REGION_1 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips

Region_2 NAT Gateway

دستورات

gcloud compute routers nats create "${REGION_2}-nat-gw" \
--router="${REGION_2}-cloudrouter" \
--router-region=$REGION_2 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips

7. ماشین های مجازی موتور محاسباتی ایجاد کنید

در این بخش، سرورهای وب، گروه‌های نمونه مدیریت نشده را برای وب سرورها و مشتری VM ایجاد می‌کنید.

VM سرور وب ایجاد کنید

برای ایجاد سرورهای وب از دستور gcloud compute instances create استفاده کنید. ما باید دو سرور وب ایجاد کنیم، یکی در REGION_1 و دیگری در REGION_2. ما از اسکریپت های راه اندازی برای نصب و پیکربندی آپاچی بر روی سرورهای وب استفاده می کنیم.

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

REGION_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

گروه نمونه Region_2

دستورات

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

VM ها را به Instance Groups اضافه کنید

از دستور gcloud compute instance-groups unmanaged add-instances برای افزودن نمونه ها به گروه های نمونه ای که به تازگی ایجاد کردیم استفاده کنید. سرور وب REGION_1 را به گروه نمونه REGION_1 و سرور وب REGION_2 را به گروه نمونه REGION_2 اضافه کنید

گروه نمونه Region_1

دستورات

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

گروه نمونه Region_2

دستورات

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

یک مشتری VM ایجاد کنید

ما از این VM برای اجرای آزمایش ها و تأیید پیکربندی DNS خود استفاده خواهیم کرد. ما از یک اسکریپت راه اندازی برای نصب بسته 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 استفاده کنید. ما در حال ایجاد یک بررسی بهداشتی http اولیه هستیم و پورت هدف پورت 80 است. دستورات زیر را در Cloud Shell اجرا کنید.

فرمان

gcloud compute health-checks create http http-hc --port 80

پیکربندی خدمات باطن

از دستور gcloud compute backend-services create برای ایجاد سرویس backend استفاده کنید. پس از ایجاد سرویس های پشتیبان، گروه های نمونه مدیریت نشده را با استفاده از دستور gcloud compute backend-services add-backend به سرویس های backend اضافه می کنیم. دستورات زیر را در Cloud Shell اجرا کنید.

سرویس Backend ایجاد کنید

دستورات

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

اضافه کردن Backend

فرمان

gcloud compute backend-services add-backend $REGION_1-backend-service \
--instance-group=$REGION_1-instance-group \
--region=$REGION_1 \
--instance-group-zone=$REGION_1_ZONE
gcloud compute backend-services add-backend $REGION_2-backend-service \
--instance-group=$REGION_2-instance-group \
--region=$REGION_2 \
--instance-group-zone=$REGION_2_ZONE

قوانین ارسال را ایجاد کنید

از دستور gcloud compute forwarding-rules create برای ایجاد قوانین حمل و نقل در هر دو منطقه استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید

قانون بازارسال REGION_1

دستورات

gcloud compute forwarding-rules create $REGION_1-ilb \
    --region=$REGION_1 \
    --load-balancing-scheme=internal \
    --network=my-vpc \
    --subnet=$REGION_1-subnet \
    --ip-protocol=TCP \
    --ports=80 \
    --backend-service=$REGION_1-backend-service \
    --backend-service-region=$REGION_1 \
    --allow-global-access

قانون بازارسال REGION_2

gcloud compute forwarding-rules create $REGION_2-ilb \
    --region=$REGION_2 \
    --load-balancing-scheme=internal \
    --network=my-vpc \
    --subnet=$REGION_2-subnet \
    --ip-protocol=TCP \
    --ports=80 \
    --backend-service=$REGION_2-backend-service \
    --backend-service-region=$REGION_2 \
    --allow-global-access

9. DNS را پیکربندی کنید

در این بخش، منطقه خصوصی و یک رکورد DNS با خط مشی مسیریابی failover ایجاد می کنیم.

یک منطقه DNS خصوصی ایجاد کنید

از دستور gcloud dns managed-zones create برای ایجاد یک منطقه خصوصی به عنوان مثال.com استفاده کنید. ما از این ناحیه برای ایجاد یک مجموعه رکورد منبع با خط مشی مسیریابی خطا استفاده خواهیم کرد. دستور زیر را در Cloud Shell اجرا کنید

دستورات

gcloud dns managed-zones create example-com \
--dns-name example.com. --description="My private zone" \
--visibility=private --networks my-vpc 

یک رکورد DNS با خط مشی مسیریابی خطا ایجاد کنید

از دستور gcloud dns record-sets create برای ایجاد رکورد DNS با خط مشی مسیریابی failover استفاده کنید. هدف اصلی، متعادل کننده بار در REGION_1 است. Cloud DNS فقط از اهداف پشتیبان مبتنی بر جغرافیایی پشتیبانی می کند، مجموعه پشتیبان یک خط مشی موقعیت جغرافیایی با متعادل کننده بار REGION_2 به عنوان هدف برای REGION_1 و REGION_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. وضوح DNS را تست کنید

قبل از آزمایش راه‌اندازی failover، بیایید آدرس‌های IP را برای هر دو تعادل بار داخلی یادداشت کنیم. دستورات زیر را در Cloud Shell اجرا کنید.

فرمان

gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"

نمونه خروجی

در این مثال، us-west1-ilb دارای آدرس IP 10.1.0.4 و us-east4-ilb دارای آدرس IP 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

اکنون وارد نمونه کلاینت می شویم و وضوح DNS را آزمایش می کنیم. در کنسول وب، به «موتور محاسباتی | موارد VM» بروید

5c824940bf414501.png

روی دکمه SSH کلیک کنید تا از کنسول وارد نمونه مشتری شوید.

b916eb32c60a4156.png

اکنون که در مشتری VM هستیم، از دستور dig برای حل نام دامنه failover.example.com استفاده کنید.

حلقه طوری پیکربندی شده است که فرمان را ده بار با تایمر خواب 6 ثانیه اجرا کند.

فرمان

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

از آنجایی که TTL در رکورد DNS روی 5 ثانیه تنظیم شده است، تایمر خواب 6 ثانیه اضافه شده است. تایمر خواب اطمینان حاصل می کند که برای هر درخواست DNS یک پاسخ DNS ذخیره نشده دریافت می کنید. اجرای این دستور تقریباً یک دقیقه طول می کشد.

در خروجی آدرس IP بار متعادل کننده را در مجموعه اولیه رکورد منبع خواهید دید. در راه اندازی ما، این IP متعادل کننده بار در منطقه us-west1 خواهد بود.

11. تست شکست

ما با حذف تگ شبکه از REGION_1 VM یک failover را شبیه سازی می کنیم. این کار دسترسی به پورت 80 را مسدود می کند و در نتیجه بررسی های سلامت شروع به شکست می کند.

برچسب شبکه را حذف کنید

از دستور gcloud compute instances remove-tags برای حذف تگ شبکه از VM استفاده کنید. دستور زیر را در Cloud Shell اجرا کنید

فرمان

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

بررسی سلامت در 10 ثانیه ناموفق خواهد بود. دوباره تست وضوح DNS را اجرا کنید.

وضوح DNS

از Client-instance دستور زیر را اجرا کنید

فرمان

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

در خروجی آدرس IP load balancer را در مجموعه پشتیبان رکورد منبع خواهید دید. در راه اندازی ما، این IP متعادل کننده بار در منطقه us-east4 خواهد بود.

12. چکیدن ترافیک را تست کنید

به‌طور پیش‌فرض، خط‌مشی failover IP نقطه پایانی اولیه را برای همه درخواست‌های DNS برمی‌گرداند و تنها در صورتی که اولیه بررسی سلامت را انجام ندهد، IPهای پشتیبان را برمی‌گرداند. Cloud DNS به کاربران اجازه می دهد تا Trickle Ratio را پیکربندی کنند که به Cloud DNS اجازه می دهد تا بخشی از ترافیک را به اهداف پشتیبان ارسال کند، حتی زمانی که اهداف اولیه سالم هستند. جیره باید مقداری بین 0 و 1 باشد. مقدار پیش فرض 0 است

برای آزمایش این موضوع، بیایید تگ شبکه را دوباره به سرور وب REGION_1 اضافه کنیم.

تگ شبکه را اضافه کنید

تگ را دوباره به وب سرور VM اضافه کنید تا ترافیک http به VM منطقه اصلی مجاز باشد. دستور زیر را در Cloud Shell اجرا کنید.

فرمان

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

بررسی های بهداشتی در 10 ثانیه انجام می شود

بررسی کنید که وضوح DNS به متعادل کننده بار اولیه اشاره دارد. در راه اندازی ما این آدرس IP متعادل کننده بار در منطقه us-west1 خواهد بود.

از Client-instance دستور زیر را اجرا کنید

فرمان

dig +short failover.example.com

رکورد DNS را به روز کنید

اکنون، رکورد DNS را برای 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

وضوح DNS

دستور زیر را از کلاینت VM اجرا کنید. مشاهده خواهید کرد که رکورد DNS failover.example.com تقریباً به IP متعادل کننده بار اولیه حل می شود. 70 درصد مواقع و به IP متعادل کننده بار پشتیبان تقریباً. 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
  • خطای DNS را تست کنید
  • چگونه ترافیک را به مجموعه پشتیبان هدایت کنیم

بعدش چی؟

  • سعی کنید چندین IP برای مجموعه های فعال و پشتیبان تنظیم کنید
  • سعی کنید چندین ماشین مجازی پشتیبان را به گروه های نمونه مدیریت نشده خود اضافه کنید
  • سعی کنید چندین بار متعادل کننده را در مناطق مختلف برای سیاست موقعیت جغرافیایی در مجموعه پشتیبان تنظیم کنید.

بیشتر بدانید

https://cloud.google.com/dns/docs/zones/manage-routing-policies