۱. مقدمه
آخرین بهروزرسانی: 2022-09-22
سیاست مسیریابی DNS چیست؟
سیاستهای مسیریابی DNS ابری به کاربران این امکان را میدهد که بسته به معیارهای خاصی مانند وزن، موقعیت جغرافیایی یا بررسیهای سلامت، هدایت ترافیک مبتنی بر DNS را پیکربندی کنند.
Cloud DNS از سیاستهای مسیریابی زیر پشتیبانی میکند:
- سیاست مسیریابی وزندار نوبتی
- سیاست مسیریابی مبتنی بر موقعیت جغرافیایی
- سیاست مسیریابی جغرافیایی
- سیاست مسیریابی در هنگام خرابی
در این آزمایش، شما سیاست مسیریابی failover را پیکربندی و آزمایش خواهید کرد.
سیاست مسیریابی در هنگام خرابی
Cloud DNS از بررسیهای سلامت برای متعادلکنندههای بار داخلی TCP/UDP که دسترسی سراسری فعال دارند، پشتیبانی میکند. با یک سیاست مسیریابی failover، میتوانید IPهای اصلی و پشتیبان را برای یک رکورد منبع پیکربندی کنید. در حالت عادی، Cloud DNS به درخواستها با آدرسهای IP ارائه شده در مجموعه اصلی پاسخ میدهد. هنگامی که همه آدرسهای IP در مجموعه اصلی از کار میافتند (وضعیت سلامت به ناسالم تغییر میکند)، Cloud DNS شروع به سرویسدهی به آدرسهای IP در مجموعه پشتیبان میکند.
بررسیهای بهداشتی
سیاست مسیریابی DNS به بررسیهای سلامت یکپارچه (UHC) داخلیِ متعادلکننده بار بستگی دارد. یک متعادلکننده بار داخلی در صورتی سالم در نظر گرفته میشود که 20٪ (یا بیشتر) از backendها سالم باشند. بررسیهای سلامت برای متعادلکنندههای بار TCP/UDP داخلی و HTTP(S) داخلی اطلاعات متفاوتی ارائه میدهند. برای متعادلکننده بار HTTP(S)، UHC وضعیت سلامت همه پروکسیهای Envoy را ارائه میدهد، اما برای متعادلکننده بار TCP/UDP داخلی، Cloud DNS سیگنالهای سلامت مستقیم را از نمونههای backend جداگانه دریافت میکند. جزئیات بررسیهای سلامت را میتوانید اینجا بیابید.
آنچه خواهید ساخت
در این Codelab، شما قرار است یک وبسایت بسازید که در ۲ منطقه اجرا شود و یک سیاست مسیریابی DNS در هنگام failover را به آن مرتبط کنید. تنظیمات شامل موارد زیر خواهد بود:
منابع فعال -
- متعادلکننده بار داخلی L4 در REGION_1
- یک ماشین مجازی که وب سرور آپاچی را در منطقه REGION_1 اجرا میکند
منابع پشتیبان -
- متعادلکننده بار داخلی L4 در REGION_2
- یک ماشین مجازی که وب سرور آپاچی را در منطقه REGION_2 اجرا میکند
تنظیمات به صورت زیر نشان داده شده است -

آنچه یاد خواهید گرفت
- نحوه ایجاد یک سیاست مسیریابی failover
- فعال کردن DNS failover
- چگونه ترافیک را به مجموعه پشتیبان هدایت کنیم
آنچه نیاز دارید
- آشنایی اولیه با DNS
- آشنایی اولیه با موتور محاسباتی گوگل
- دانش پایه در مورد متعادلکننده بار داخلی L4
۲. تنظیمات و الزامات
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



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

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

این ماشین مجازی با تمام ابزارهای توسعهای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه کد را میتوان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.
۳. نسخه Google Cloud SDK
در زمان نگارش این مطلب، نسخه 401.0.0 آخرین نسخه Google Cloud SDK است. تمام دستورات موجود در این آزمایشگاه با استفاده از آخرین نسخه Google Cloud SDK آزمایش شدهاند. قبل از ادامه، لطفاً مطمئن شوید که Cloud Shell از آخرین نسخه SDK استفاده میکند.
بررسی نسخه SDK
برای بررسی نسخه SDK از دستور gcloud version استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید.
فرمان
gcloud version | grep "Google Cloud SDK"
مثال خروجی
Google Cloud SDK 401.0.0
مراحل بعدی
- اگر نسخه SDK شما
401.0.0یا بالاتر است، به بخش بعدی بروید. - اگر نسخه SDK پایینتر از
401.0.0است، دستور زیر را برای بهروزرسانی SDK اجرا کنید.
دستور اختیاری
sudo apt-get update && sudo apt-get install google-cloud-sdk
۴. قبل از شروع
قبل از شروع به استقرار معماری که در بالا توضیح دادیم، بیایید مطمئن شویم که 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)$
متغیرهای محیطی را تنظیم کنید
متغیرهای محیطی را تنظیم کنید
ما از دستور 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
فعال کردن تمام سرویسهای لازم
از دستور gcloud services enable برای فعال کردن APIهای Compute و DNS استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید.
فعال کردن API محاسباتی
فرمان
gcloud services enable compute.googleapis.com
فعال کردن API DNS
فرمان
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
۵. ایجاد قوانین شبکه، زیرشبکهها و فایروال VPC
در این بخش، شبکه VPC، دو زیرشبکه (یکی در هر منطقه) و قوانین فایروال مورد نیاز را ایجاد خواهیم کرد.
ایجاد شبکه VPC
برای ایجاد شبکه VPC از دستور gcloud compute networks create استفاده کنید. ما حالت زیرشبکه را به صورت سفارشی تنظیم میکنیم زیرا در مرحله بعدی زیرشبکههای خودمان را ایجاد خواهیم کرد. دستورات زیر را در Cloud Shell اجرا کنید.
فرمان
gcloud compute networks create my-vpc --subnet-mode custom
ایجاد زیرشبکهها
از دستور gcloud compute networks subnets create برای ایجاد دو زیرشبکه، یکی در REGION_1 و دیگری در REGION_2، استفاده کنید. دستورات زیر را در 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 بررسی سلامت متعادلکننده بار عبور کند.
علاوه بر آن، شما همچنین باید یک قانون فایروال ایجاد کنید تا ترافیک SSH روی ماشینهای مجازی کلاینت مجاز باشد.
برای ایجاد قوانین فایروال از دستور gcloud compute firewall-rules create استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید.
اجازه دادن به ترافیک روی پورت ۸۰
فرمان
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 روی ماشین مجازی کلاینت
فرمان
gcloud compute firewall-rules create allow-ssh \ --allow tcp:22 --network my-vpc \ --source-ranges 0.0.0.0/0 \ --target-tags=allow-ssh
۶. ایجاد NAT ابری
برای اینکه ماشینهای مجازی خصوصی بتوانند بستهها را از اینترنت دانلود و نصب کنند، به دروازههای Cloud NAT در هر دو منطقه نیاز دارید.
- ماشینهای مجازی وب سرور ما باید وب سرور آپاچی را دانلود و نصب کنند.
- ماشین مجازی کلاینت باید بسته dnsutils را که برای آزمایش خود استفاده خواهیم کرد، دانلود و نصب کند.
هر دروازه NAT ابری با یک شبکه VPC، منطقه و روتر ابری مرتبط است. بنابراین قبل از ایجاد دروازههای NAT، باید روترهای ابری را در هر منطقه ایجاد کنیم.
ایجاد روترهای ابری
از دستور gcloud compute routers create برای ایجاد Cloud Routers در مناطق 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 منطقه ۱
دستورات
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
دروازه NAT منطقه ۲
دستورات
gcloud compute routers nats create "${REGION_2}-nat-gw" \
--router="${REGION_2}-cloudrouter" \
--router-region=$REGION_2 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
۷. ایجاد ماشینهای مجازی موتور محاسباتی
در این بخش، شما سرورهای وب، گروههای نمونه مدیریت نشده برای سرورهای وب و ماشین مجازی کلاینت را ایجاد خواهید کرد.
ایجاد ماشینهای مجازی وب سرور
برای ایجاد سرورهای وب از دستور 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
اضافه کردن ماشینهای مجازی به گروههای نمونه
از دستور 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
ایجاد یک ماشین مجازی کلاینت
ما از این ماشین مجازی برای اجرای تستها و تأیید پیکربندی 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'
۸. ایجاد متعادلکنندههای بار داخلی سطح ۴
برای ایجاد L4 ILB، باید یک بررسی سلامت، یک سرویس backend و یک قانون forwarding ایجاد کنیم.
ایجاد بررسی سلامت
برای ایجاد بررسی سلامت از دستور gcloud compute health-checks create استفاده کنید. ما در حال ایجاد یک بررسی سلامت http اولیه هستیم و پورت هدف پورت ۸۰ است. دستورات زیر را در Cloud Shell اجرا کنید.
فرمان
gcloud compute health-checks create http http-hc --port 80
پیکربندی سرویسهای بکاند
برای ایجاد سرویس backend از دستور gcloud compute backend-services create استفاده کنید. پس از ایجاد سرویسهای backend، گروههای نمونه مدیریت نشده را با استفاده از دستور gcloud compute backend-services add-backend به سرویسهای backend اضافه خواهیم کرد. دستورات زیر را در Cloud Shell اجرا کنید.
ایجاد سرویس بکاند
دستورات
gcloud compute backend-services create $REGION_1-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_1
gcloud compute backend-services create $REGION_2-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_2
افزودن بخش پشتیبانی
فرمان
gcloud compute backend-services add-backend $REGION_1-backend-service \ --instance-group=$REGION_1-instance-group \ --region=$REGION_1 \ --instance-group-zone=$REGION_1_ZONE
gcloud compute backend-services add-backend $REGION_2-backend-service \ --instance-group=$REGION_2-instance-group \ --region=$REGION_2 \ --instance-group-zone=$REGION_2_ZONE
ایجاد قوانین ارسال
از دستور gcloud compute forwarding-rules create برای ایجاد قوانین ارسال در هر دو منطقه استفاده کنید. دستورات زیر را در Cloud Shell اجرا کنید.
قانون ارسال 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
۹. پیکربندی DNS
در این بخش، ما یک منطقه خصوصی و یک مجموعه رکورد DNS با سیاست مسیریابی failover ایجاد خواهیم کرد.
ایجاد یک منطقه DNS خصوصی
از دستور gcloud dns managed-zones create برای ایجاد یک منطقه خصوصی برای example.com استفاده کنید. ما از این منطقه برای ایجاد یک مجموعه رکورد منابع با سیاست مسیریابی failover استفاده خواهیم کرد. دستور زیر را در Cloud Shell اجرا کنید
دستورات
gcloud dns managed-zones create example-com \ --dns-name example.com. --description="My private zone" \ --visibility=private --networks my-vpc
یک رکورد DNS با سیاست مسیریابی failover ایجاد کنید
از دستور 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"
۱۰. تست وضوح 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 را آزمایش میکنیم. در کنسول وب، به "Compute Engine | VM Instances" بروید.

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

اکنون که در ماشین مجازی کلاینت هستیم، از دستور dig برای یافتن نام دامنه failover.example.com استفاده کنید.
این حلقه طوری پیکربندی شده است که دستور را ده بار با تایمر خواب ۶ ثانیهای اجرا کند.
فرمان
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
از آنجایی که TTL در رکورد DNS روی ۵ ثانیه تنظیم شده است، یک تایمر خواب ۶ ثانیهای اضافه شده است. تایمر خواب تضمین میکند که برای هر درخواست DNS، یک پاسخ DNS ذخیره نشده دریافت کنید. اجرای این دستور تقریباً یک دقیقه طول میکشد.
در خروجی، آدرس IP مربوط به متعادلکننده بار را در مجموعه اصلی رکورد منبع مشاهده خواهید کرد. در تنظیمات ما، این آدرس IP متعادلکننده بار در ناحیه us-west1 خواهد بود.
۱۱. تست failover
ما با حذف برچسب شبکه از ماشین مجازی REGION_1، یک failover را شبیهسازی خواهیم کرد. این کار دسترسی به پورت ۸۰ را مسدود میکند و در نتیجه، بررسیهای سلامت شروع به شکست میکنند.
برچسب شبکه را حذف کنید
برای حذف تگ شبکه از ماشین مجازی، از دستور gcloud compute instances remove-tags استفاده کنید. دستور زیر را در Cloud Shell اجرا کنید.
فرمان
gcloud compute instances remove-tags $REGION_1-instance \ --zone=$REGION_1_ZONE --tags=allow-http
بررسی سلامت ظرف 10 ثانیه با شکست مواجه خواهد شد. تست وضوح DNS را دوباره اجرا کنید.
وضوح DNS
از نمونه کلاینت، دستور زیر را اجرا کنید
فرمان
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
در خروجی، آدرس IP مربوط به متعادلکننده بار در مجموعه پشتیبان رکورد منبع را مشاهده خواهید کرد. در تنظیمات ما، این آدرس IP متعادلکننده بار در ناحیه us-east4 خواهد بود.
۱۲. تست چکیدن ترافیک
به طور پیشفرض، سیاست failover، IP نقطه پایانی اصلی را برای همه درخواستهای DNS برمیگرداند و فقط در صورتی که IP اصلی در بررسیهای سلامت با شکست مواجه شود، IPهای پشتیبان را برمیگرداند. Cloud DNS به کاربران اجازه میدهد Trickle Ratio را پیکربندی کنند که به Cloud DNS اجازه میدهد بخشی از ترافیک را به اهداف پشتیبان ارسال کند، حتی زمانی که اهداف اصلی سالم هستند. این نسبت باید مقداری بین 0 و 1 باشد. مقدار پیشفرض 0 است.
برای آزمایش این موضوع، بیایید تگ شبکه را به وب سرور REGION_1 اضافه کنیم.
افزودن برچسب شبکه
تگ را به ماشین مجازی وب سرور اضافه کنید تا ترافیک http به ماشین مجازی منطقه اصلی اجازه داده شود. دستور زیر را در Cloud Shell اجرا کنید.
فرمان
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
بررسیهای سلامت در عرض ۱۰ ثانیه انجام خواهد شد
تأیید کنید که DNS resolution به load balancer اصلی اشاره میکند. در تنظیمات ما، این آدرس IP load balancer در ناحیه us-west1 خواهد بود.
از نمونه کلاینت، دستور زیر را اجرا کنید
فرمان
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
دستور زیر را از ماشین مجازی کلاینت اجرا کنید. مشاهده خواهید کرد که رکورد DNS failover.example.com تقریباً ۷۰٪ مواقع به IP اصلی متعادلکننده بار و تقریباً ۳۰٪ مواقع به IP پشتیبان متعادلکننده بار متصل میشود.
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
۱۳. مراحل پاکسازی
برای پاکسازی منابع مورد استفاده در این آزمایش، دستورات زیر را از 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
۱۴. تبریک
تبریک میگویم، شما با موفقیت سیاست مسیریابی عدم موفقیت Cloud DNS را مستقر و آزمایش کردید.
آنچه ما پوشش دادهایم
- نحوه پیکربندی سیاست مسیریابی failover در Cloud DNS
- تست DNS failover
- چگونه ترافیک را به مجموعه پشتیبان هدایت کنیم
بعدش چی؟
- سعی کنید چندین IP برای مجموعههای فعال و پشتیبان تنظیم کنید
- سعی کنید چندین ماشین مجازی بکاند را به گروههای نمونه مدیریت نشده خود اضافه کنید
- سعی کنید چندین متعادلکننده بار را در مناطق مختلف برای سیاست موقعیت جغرافیایی در مجموعه پشتیبان تنظیم کنید.
بیشتر بدانید
https://cloud.google.com/dns/docs/zones/manage-routing-policies