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 اجرا می کند
تنظیم به شکل زیر است -
چیزی که یاد خواهید گرفت
- نحوه ایجاد خط مشی مسیریابی شکستی
- خطای DNS را راه اندازی کنید
- چگونه ترافیک را به مجموعه پشتیبان هدایت کنیم
آنچه شما نیاز دارید
- دانش اولیه DNS
- دانش اولیه موتور محاسباتی گوگل
- دانش اولیه L4 Internal Load Balancer
2. راه اندازی و الزامات
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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
مراحل بعدی
- اگر نسخه SDK
401.0.0
یا بالاتر است، به بخش بعدی بروید. - اگر نسخه 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» بروید
روی دکمه SSH کلیک کنید تا از کنسول وارد نمونه مشتری شوید.
اکنون که در مشتری 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