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 هو أحدث إصدار من حزمة تطوير البرامج (SDK) من Google Cloud. تم اختبار جميع الأوامر في هذا المختبر باستخدام أحدث إصدار من 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.
Region_1 NAT Gateway
الأوامر
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 وضبطه على خوادم الويب.
REGION_1 Web Server
نفِّذ الأمر التالي في 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 Instance Group
الأوامر
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 Instance Group
الأوامر
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 ثوانٍ. سيضمن موقّت إيقاف التشغيل حصولك على استجابة غير مخزّنة مؤقتًا لكل طلب DNS. سيستغرق تنفيذ هذا الأمر دقيقة واحدة تقريبًا.
في الناتج، سيظهر لك عنوان 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