1. مقدمة
تاريخ آخر تعديل: 2022-09-22
ما هي سياسة توجيه نظام أسماء النطاقات؟
تتيح سياسات التوجيه في Cloud DNS للمستخدمين إعداد توجيه الزيارات المستند إلى نظام أسماء النطاقات (DNS) استنادًا إلى معايير محدّدة، مثل الوزن أو الموقع الجغرافي أو عمليات التحقّق من الصحة.
تتيح خدمة Cloud DNS سياسات التوجيه التالية:
- سياسة التوجيه بالتناوب المرجّح
- سياسة توجيه الموقع الجغرافي
- سياسة التوجيه المستندة إلى الموقع الجغرافي
- سياسة التوجيه عند تجاوز الأعطال
في هذا التمرين العملي، ستضبط سياسة التوجيه الاحتياطية وتختبرها.
سياسة التوجيه الاحتياطي
تتيح خدمة Cloud DNS عمليات التحقّق من الصحة لأجهزة موازنة حمل TCP/UDP الداخلية التي تم تفعيل إمكانية الوصول إليها على مستوى العالم. باستخدام سياسة توجيه تجاوز الفشل، يمكنك ضبط عناوين IP الأساسية والاحتياطية لسجلّ الموارد. في الوضع العادي، ستردّ خدمة Cloud DNS على طلبات البحث بعناوين IP المتوفّرة في المجموعة الأساسية. عندما يتعذّر الوصول إلى جميع عناوين IP في المجموعة الأساسية (تتغيّر حالة الصحة إلى غير صحية)، يبدأ Cloud DNS في عرض عناوين IP في المجموعة الاحتياطية.
عمليات التحقّق من الصحة
ستعتمد سياسة توجيه نظام أسماء النطاقات على عمليات التحقّق الموحّدة من الصحة(UHC) في موازن الحمل الداخلي الأصلية. يُعدّ جهاز موازنة الحمل الداخلي سليمًا إذا كانت %20 (أو أكثر) من الخلفيات سليمة. تقدّم عمليات التحقّق من السلامة لأجهزة موازنة حمل TCP/UDP الداخلية وHTTP(S) الداخلية معلومات مختلفة. بالنسبة إلى جهاز موازنة حمل HTTP(S) الداخلي، يوفّر UHC حالة الصحة لجميع خوادم وكيل Envoy، ولكن بالنسبة إلى جهاز موازنة حمل TCP/UDP الداخلي، تتلقّى خدمة Cloud DNS إشارات الصحة المباشرة من مثيلات الخلفية الفردية. يمكنك الاطّلاع على تفاصيل عمليات التحقّق من الصحة هنا .
ما ستنشئه
في هذا الدرس التطبيقي حول الترميز، ستنشئ موقعًا إلكترونيًا يعمل في منطقتَين وتربط به سياسة توجيه نظام أسماء النطاقات (DNS) الاحتياطية. ستتضمّن عملية الإعداد ما يلي:
الموارد النشطة:
- جهاز موازنة الحمل الداخلي من الطبقة 4 في REGION_1
- جهاز افتراضي يشغّل خادم ويب Apache في REGION_1
مصادر النسخ الاحتياطي -
- جهاز موازنة الحمل الداخلي من الطبقة 4 في REGION_2
- جهاز افتراضي يشغّل خادم ويب Apache في REGION_2
يتم الإعداد على النحو الموضّح أدناه:

ما ستتعلمه
- كيفية إنشاء سياسة توجيه تجاوز الفشل
- بدء عملية تجاوز تعذُّر نظام أسماء النطاقات
- كيفية توجيه عدد قليل من الزيارات إلى مجموعة النسخ الاحتياطية
المتطلبات
- معرفة أساسية بنظام أسماء النطاقات
- معرفة أساسية بخدمة Google Compute Engine
- معرفة أساسية بجهاز موازنة الحمل الداخلي من الطبقة 4
2. الإعداد والمتطلبات
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
- يجب أن يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud، كما أنّه غير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه
PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. ولا يمكن تغييرها بعد هذه الخطوة وستبقى سارية طوال مدة المشروع. - للعلم، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن وُجدت تكلفة على الإطلاق. لإيقاف الموارد كي لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بأكمله. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. لست بحاجة إلى تثبيت أي تطبيق.
3- إصدار Google Cloud SDK
في وقت كتابة هذا المستند، كان الإصدار 401.0.0 هو أحدث إصدار من Google Cloud SDK. تم اختبار جميع الأوامر في هذا الدرس التطبيقي باستخدام أحدث إصدار من Google Cloud SDK. قبل المتابعة، يُرجى التأكّد من أنّ Cloud Shell يستخدم أحدث إصدار من حزمة SDK.
التحقّق من إصدار حزمة تطوير البرامج (SDK)
استخدِم الأمر gcloud version للتحقّق من إصدار حزمة تطوير البرامج (SDK). نفِّذ الأوامر التالية في Cloud Shell
Command
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 بشكلٍ صحيح وتفعيل جميع واجهات برمجة التطبيقات المطلوبة.
إعداد معرّف المشروع
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك. إذا كانت مطالبة Cloud Shell تبدو مثل الناتج أدناه ولم تكن تخطّط لتغيير رقم تعريف المشروع، يمكنك الانتقال إلى الخطوة التالية (ضبط متغيّرات البيئة).
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 لتفعيل واجهات برمجة التطبيقات Compute وDNS. نفِّذ الأوامر التالية في Cloud Shell
تفعيل Compute API
Command
gcloud services enable compute.googleapis.com
تفعيل DNS API
Command
gcloud services enable dns.googleapis.com
التحقّق
بعد تفعيل الخدمات، لننتحقق من ذلك باستخدام الأمر gcloud services list لعرض قائمة بجميع واجهات برمجة التطبيقات المفعّلة.
Command
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.
Command
gcloud compute networks create my-vpc --subnet-mode custom
إنشاء شبكات فرعية
استخدِم الأمر gcloud compute networks subnets create لإنشاء شبكتَين فرعيتَين، إحداهما في REGION_1 والأخرى في REGION_2. نفِّذ الأوامر التالية في Cloud Shell
الشبكة الفرعية REGION_1
Command
gcloud compute networks subnets create ${REGION_1}-subnet \
--network my-vpc \
--range 10.1.0.0/24 \
--region $REGION_1
الشبكة الفرعية REGION_2
Command
gcloud compute networks subnets create ${REGION_2}-subnet \
--network my-vpc \
--range 10.2.0.0/24 \
--region $REGION_2
إنشاء قواعد جدار الحماية
عليك السماح بزيارات بيانات المنفذ 80 من الشبكات الفرعية لشبكة VPC ومن نطاقات عناوين IP الخاصة بفحص صحة موازن التحميل.
بالإضافة إلى ذلك، عليك أيضًا إنشاء قاعدة جدار الحماية للسماح بمرور بيانات بروتوكول النقل الآمن (SSH) على الأجهزة الافتراضية للعميل.
استخدِم الأمر gcloud compute firewall-rules create لإنشاء قواعد جدار الحماية. نفِّذ الأوامر التالية في Cloud Shell
السماح بحركة المرور على المنفذ 80
Command
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) على الجهاز الظاهري للعميل
Command
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 في كلتا المنطقتين لتتمكّن الأجهزة الافتراضية الخاصة من تنزيل الحِزم وتثبيتها من الإنترنت.
- ستحتاج الأجهزة الافتراضية لخادم الويب إلى تنزيل خادم ويب Apache وتثبيته.
- يجب أن تنزّل الآلة الافتراضية للعميل حزمة dnsutils وتثبّتها، وهي الحزمة التي سنستخدمها في الاختبار.
يرتبط كلّ مدخل Cloud NAT بشبكة VPC واحدة ومنطقة واحدة وCloud Router واحد. لذا، قبل إنشاء بوابات NAT، علينا إنشاء أجهزة توجيه Cloud Router في كل منطقة.
إنشاء أجهزة توجيه Cloud Router
استخدِم الأمر gcloud compute routers create لإنشاء أجهزة توجيه Cloud في منطقتَي us-west1 وus-east4. نفِّذ الأوامر التالية في Cloud Shell.
Region_1 Cloud Router
الأوامر
gcloud compute routers create "${REGION_1}-cloudrouter" \
--region $REGION_1 --network=my-vpc --asn=65501
Region_2 Cloud Router
الأوامر
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 في المنطقة 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. إنشاء أجهزة Compute Engine الافتراضية
في هذا القسم، ستنشئ خوادم الويب ومجموعات المثيلات غير المُدارة لخوادم الويب والجهاز الظاهري للعميل.
إنشاء أجهزة افتراضية لخادم الويب
استخدِم الأمر gcloud compute instances create لإنشاء خوادم الويب. علينا إنشاء خادمَي ويب، أحدهما في REGION_1 والآخر في REGION_2. نستخدم نصوصًا برمجية عند بدء التشغيل لتثبيت Apache وضبطه على خوادم الويب.
خادم الويب في المنطقة 1
نفِّذ الأمر التالي في Cloud Shell
Command
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
Command
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'
إنشاء مجموعات مثيلات غير مُدارة
في هذا القسم، سننشئ مجموعتَي مثيلات غير مُدارة. سنستخدم مجموعات الأجهزة الافتراضية هذه في القسم التالي لإعداد خدمات الخلفية لموازنة التحميل الداخلي. بعد إنشاء مجموعات الأجهزة الافتراضية، سنضيف أجهزة افتراضية لخادم الويب إلى مجموعات الأجهزة الافتراضية هذه.
إنشاء مجموعات الأجهزة الافتراضية غير المُدارة
استخدِم الأمر gcloud compute instance-groups unmanaged create لإنشاء مجموعتَي مثيلات غير مُدارة، واحدة لخادم الويب us-west1 والأخرى لخادم الويب us-east4.
Region_1 Instance Group
الأوامر
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 Instance Group
الأوامر
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
إنشاء جهاز افتراضي للعميل
سنستخدم هذه الآلة الافتراضية لإجراء الاختبارات والتحقّق من إعدادات نظام أسماء النطاقات. نستخدم نصًا برمجيًا للتشغيل لتثبيت حزمة dnsutils. نفِّذ الأوامر التالية في Cloud Shell.
Command
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. إنشاء أجهزة موازنة حمل داخلية من الطبقة 4
لإنشاء موازن تحميل داخلي من الطبقة 4، علينا إنشاء عملية فحص سلامة وخدمة خلفية وقاعدة إعادة توجيه.
إنشاء عملية تحقّق من الصحة
استخدِم الأمر gcloud compute health-checks create لإنشاء عملية التحقّق من الصحة. نحن بصدد إنشاء عملية تحقّق أساسية من سلامة http، والمنفذ المستهدف هو المنفذ 80. نفِّذ الأوامر التالية في Cloud Shell
Command
gcloud compute health-checks create http http-hc --port 80
ضبط خدمات الخلفية
استخدِم الأمر gcloud compute backend-services create لإنشاء خدمة الخلفية. بعد إنشاء خدمات الخلفية، سنضيف مجموعات المثيلات غير المُدارة إلى خدمات الخلفية باستخدام الأمر gcloud compute backend-services add-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
إضافة الخلفية
Command
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. إعداد نظام أسماء النطاقات
في هذا القسم، سننشئ المنطقة الخاصة ومجموعة سجلات نظام أسماء النطاقات باستخدام سياسة توجيه تجاوز الفشل.
إنشاء منطقة نظام أسماء نطاقات خاص
استخدِم الأمر gcloud dns managed-zones create لإنشاء منطقة خاصة للنطاق example.com. سنستخدم هذه المنطقة لإنشاء مجموعة سجلات موارد مع سياسة توجيه تجاوز الفشل. نفِّذ الأمر التالي في Cloud Shell
الأوامر
gcloud dns managed-zones create example-com \ --dns-name example.com. --description="My private zone" \ --visibility=private --networks my-vpc
إنشاء سجلّ نظام أسماء نطاقات باستخدام سياسة التوجيه الاحتياطي
استخدِم الأمر gcloud dns record-sets create لإنشاء سجلّ نظام أسماء نطاقات باستخدام سياسة توجيه تجاوز الفشل. الهدف الأساسي هو أداة موازنة الحمل في REGION_1. لا يتيح Cloud DNS سوى استخدام أهداف احتياطية مستندة إلى الموقع الجغرافي، ومجموعة النسخ الاحتياطية هي سياسة تحديد الموقع الجغرافي مع موازنة تحميل REGION_2 كهدف لكل من REGION_1 وREGION_2. نفِّذ الأوامر التالية في Cloud Shell
Command
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. اختبار التحويل باستخدام نظام أسماء النطاقات
قبل اختبار إعداد تجاوز الفشل، لنحتفظ بعناوين IP لكلّ من موازنات الحمل الداخلية. نفِّذ الأوامر التالية في Cloud Shell.
Command
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 | الآلات الافتراضية".

انقر على زر SSH لتسجيل الدخول إلى مثيل العميل من وحدة التحكّم.

بعد الانتقال إلى الجهاز الظاهري للعميل، استخدِم الأمر dig لحلّ اسم النطاق failover.example.com.
تم ضبط التكرار لتنفيذ الأمر عشر مرات مع مؤقّت إيقاف التشغيل لمدة 6 ثوانٍ.
Command
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
بما أنّ مدة البقاء (TTL) في سجلّ نظام أسماء النطاقات مضبوطة على 5 ثوانٍ، تمت إضافة موقّت إيقاف التشغيل مدته 6 ثوانٍ. سيضمن موقّت إيقاف التشغيل حصولك على استجابة غير مخزّنة مؤقتًا من نظام أسماء النطاقات لكل طلب من نظام أسماء النطاقات. سيستغرق تنفيذ هذا الأمر دقيقة واحدة تقريبًا.
في الناتج، سيظهر لك عنوان IP الخاص بجهاز موازنة الحمل في المجموعة الأساسية لسجلّ الموارد. في عملية الإعداد، سيكون هذا هو عنوان IP لجهاز موازنة الحمل في منطقة us-west1.
11. اختبار تجاوز الفشل
سنحاكي عملية تجاوز الفشل من خلال إزالة علامة الشبكة من الجهاز الظاهري REGION_1. سيؤدي ذلك إلى حظر الوصول إلى المنفذ 80، ونتيجةً لذلك، ستبدأ عمليات التحقّق من الصحة في التعذُّر.
إزالة علامة الشبكة
استخدِم الأمر gcloud compute instances remove-tags لإزالة علامة الشبكة من الجهاز الظاهري. نفِّذ الأمر التالي في Cloud Shell
Command
gcloud compute instances remove-tags $REGION_1-instance \ --zone=$REGION_1_ZONE --tags=allow-http
سيتعذّر إجراء فحص السلامة بعد 10 ثوانٍ. أعِد إجراء اختبار التحويل باستخدام نظام أسماء النطاقات.
التحويل باستخدام نظام أسماء النطاقات
من مثيل العميل، شغِّل الأمر التالي
Command
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
في الناتج، سيظهر لك عنوان IP لجهاز موازنة الحمل في مجموعة النسخ الاحتياطية لسجلّ الموارد. في عملية الإعداد، سيكون هذا هو عنوان IP لجهاز موازنة الحمل في المنطقة us-east4.
12. اختبار تدفّق الزيارات
بشكلٍ تلقائي، تعرض سياسة التبديل التلقائي عنوان IP لنقطة النهاية الأساسية لجميع طلبات نظام أسماء النطاقات، ولا تعرض عناوين IP الاحتياطية إلا إذا لم تجتَز نقطة النهاية الأساسية عمليات التحقّق من الصحة. تسمح خدمة Cloud DNS للمستخدمين بإعداد "نسبة التوزيع التدريجي" التي تتيح لخدمة Cloud DNS إرسال جزء من عدد الزيارات إلى الأهداف الاحتياطية، حتى عندما تكون الأهداف الأساسية سليمة. يجب أن تكون النسبة قيمة بين 0 و1. القيمة التلقائية هي 0
لاختبار ذلك، لنضِف علامة الشبكة مرة أخرى إلى خادم الويب REGION_1.
إضافة علامة شبكة
أضِف العلامة مرة أخرى إلى الجهاز الافتراضي لخادم الويب للسماح بنقل بيانات http إلى الجهاز الافتراضي للمنطقة الأساسية. نفِّذ الأمر التالي في Cloud Shell.
Command
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
سيتم اجتياز عمليات التحقّق من الصحة في غضون 10 ثوانٍ
تأكَّد من أنّ التحويل باستخدام نظام أسماء النطاقات (DNS) يشير إلى موازن التحميل الأساسية. في عملية الإعداد، سيكون هذا هو عنوان IP لجهاز موازنة الحمل في منطقة us-west1.
من مثيل العميل، شغِّل الأمر التالي
Command
dig +short failover.example.com
تعديل سجلّ نظام أسماء النطاقات
الآن، سنعدّل سجلّ نظام أسماء النطاقات الخاص بـ failover.example.com لتوجيه% 30 من الزيارات إلى المجموعة الاحتياطية حتى عندما تكون المجموعة الأساسية سليمة. نفِّذ الأمر التالي في Cloud Shell
Command
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
التحويل باستخدام نظام أسماء النطاقات
نفِّذ الأمر التالي من الجهاز الظاهري للعميل. ستلاحظ أنّ سجلّ نظام أسماء النطاقات 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
- اختبار تجاوز تعذُّر نظام أسماء النطاقات
- كيفية توجيه عدد قليل من الزيارات إلى مجموعة النسخ الاحتياطية
ما هي الخطوات التالية؟
- محاولة إعداد عناوين IP متعددة للمجموعات النشطة والاحتياطية
- جرِّب إضافة العديد من الأجهزة الافتراضية الخلفية إلى مجموعات الأجهزة الافتراضية غير المُدارة
- حاوِل إعداد عدّة موازنات تحميل في مناطق مختلفة لسياسة الموقع الجغرافي في مجموعة النسخ الاحتياطية.
مزيد من المعلومات
https://cloud.google.com/dns/docs/zones/manage-routing-policies