1. مقدمة
تاريخ آخر تعديل: 22/09/2022
ما المقصود بسياسة توجيه نظام أسماء النطاقات؟
تتيح سياسات توجيه Cloud 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 على إشارات مباشرة لحالة الصحة من مثيلات الواجهة الخلفية الفردية. يمكنك الاطّلاع هنا على تفاصيل عمليات التحقّق من الصحة .
ما الذي ستنشئه
في هذا الدرس التطبيقي حول الترميز، ستنشئ موقعًا إلكترونيًا يعمل في منطقتَين وربط سياسة توجيه نظام أسماء النطاقات عند تجاوز الإخفاق عليه. ستنطبق عملية الإعداد على ما يلي:
الموارد النشطة -
- جهاز موازنة الحمل الداخلي في L4 في {/1}
- جهاز افتراضي (VM) يشغّل خادم ويب Apache في AR_1
موارد النسخ الاحتياطي -
- جهاز موازنة الحمل الداخلي في L4 في {/1}
- جهاز افتراضي (VM) يشغّل خادم ويب Apache في AR_2
تظهر عملية الإعداد أدناه:
المعلومات التي ستطّلع عليها
- طريقة إنشاء سياسة توجيه تجاوز الإخفاق
- تشغيل تجاوز إخفاق نظام أسماء النطاقات
- كيفية تحويل حركة المرور إلى مجموعة النسخ الاحتياطية
المتطلبات
- معرفة أساسية بنظام أسماء النطاقات
- معرفة أساسية بـ Google Compute Engine
- معرفة أساسية بجهاز موازنة الحمل الداخلي L4
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- إصدار حزمة تطوير البرامج (SDK) لخدمة Google Cloud
في وقت كتابة هذه الرسالة، كان 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 بشكلٍ صحيح وتفعيل جميع واجهات برمجة التطبيقات المطلوبة.
إعداد رقم تعريف المشروع
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك. إذا كان طلب Cloud Shell يشبه الناتج أدناه ولا تخطِّط لتغيير رقم تعريف المشروع، يمكنك التخطّي إلى الخطوة التالية (Set Environment Variables).
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
الأمر
gcloud services enable compute.googleapis.com
تفعيل DNS API
الأمر
gcloud services enable dns.googleapis.com
إثبات الملكية
والآن بعد أن تم تفعيل الخدمات، لنتحقق من ذلك باستخدام الأمر gcloud services list
لإدراج جميع واجهات برمجة التطبيقات المفعَّلة.
الأمر
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
إنشاء شبكات فرعية
استخدم الأمر 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
إنشاء قواعد جدار الحماية
يجب السماح بالزيارات على المنفذ 80 من الشبكات الفرعية لشبكة VPC ومن نطاقات عناوين IP الخاصة بالتحقق من صحة جهاز موازنة الحمل.
بالإضافة إلى ذلك، تحتاج أيضًا إلى إنشاء قاعدة جدار حماية للسماح بحركة مرور 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
السماح بزيارات بروتوكول النقل الآمن على الجهاز الافتراضي للعميل
الأمر
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- إنشاء ترجمة عنوان الشبكة في السحابة الإلكترونية
تحتاج إلى مداخل آلية ترجمة عنوان الشبكة في السحابة الإلكترونية في كلتا المنطقتين حتى تتمكّن الأجهزة الافتراضية الخاصة من تنزيل الحزم وتثبيتها من الإنترنت.
- ستحتاج الأجهزة الافتراضية لخادم الويب إلى تنزيل خادم الويب Apache وتثبيته.
- سيحتاج الجهاز الافتراضي (VM) الخاص بالعميل إلى تنزيل وتثبيت حزمة dnsutils التي سنستخدمها في اختبارنا.
ترتبط كل مدخل ترجمة عنوان الشبكة في السحابة الإلكترونية بشبكة 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_1 في Region
الأوامر
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_2
الأوامر
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 والآخر في بعد تتمّ المنشآت. نستخدم النصوص البرمجية لبدء التشغيل لتثبيت Apache وتهيئته على خوادم الويب.
خادم الويب 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
لإضافة المثيلات إلى مجموعات المثيلات التي أنشأناها للتو. إضافة خادم الويب بعد A
مجموعة المثيلات 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
إنشاء جهاز افتراضي للعميل
سنستخدم هذا الجهاز الافتراضي لإجراء الاختبارات والتحقّق من إعدادات نظام أسماء النطاقات. نستخدم نصًا برمجيًا لبدء التشغيل لتثبيت حزمة 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
لإنشاء خدمة الخلفية. بعد إنشاء خدمات الخلفية، سنضيف مجموعات المثيلات غير المُدارة إلى خدمات الخلفية باستخدام الأمر 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
إضافة خلفية
الأمر
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
لإنشاء سجلّ نظام أسماء النطاقات يتضمّن سياسة توجيه تجاوز الإخفاق. الهدف الأساسي هو جهاز موازنة الحمل في {/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)
قبل اختبار إعداد تجاوز الفشل، سندوّن عناوين IP لكل من أجهزة موازنة الحمل الداخلية. شغِّل الأوامر التالية في Cloud Shell.
الأمر
gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"
مثال على الناتج
في هذا المثال، يتضمّن us-west1-ilb
عنوان IP هو 10.1.0.4
وعنوان IP الخاص بالوحدة us-east4-ilb
هو 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 لتسجيل الدخول إلى مثيل العميل من وحدة التحكّم.
والآن بعد أن أصبحنا في الجهاز الافتراضي (VM) الخاص بالعميل، استخدِم الأمر dig
لحلّ اسم النطاق failover.example.com
.
يتم ضبط التكرار الحلقي لتشغيل الأمر عشر مرات مع موقّت إيقاف التشغيل لمدة 6 ثوانٍ.
الأمر
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
نظرًا لأنه تم تعيين مدة البقاء على سجل نظام أسماء النطاقات على 5 ثوانٍ، تمت إضافة مؤقت إيقاف التشغيل لمدة 6 ثوانٍ. سيتأكد موقّت إيقاف التشغيل من الحصول على استجابة نظام أسماء النطاقات (DNS) غير مخزَّنة مؤقتًا لكل طلب من طلبات نظام أسماء النطاقات. سيستغرق تنفيذ هذا الأمر دقيقة واحدة تقريبًا.
سيظهر لك في الناتج عنوان IP لجهاز موازنة الحمل في المجموعة الأساسية من سجلّ الموارد. في الإعداد لدينا، سيكون هذا هو عنوان IP لجهاز موازنة الحمل في منطقة us-west1.
11. اختبار تجاوز الأعطال
سنحاكي حدوث تجاوز لحالات الفشل من خلال إزالة علامة الشبكة من الجهاز الافتراضي Region_1. سيؤدي هذا الإجراء إلى حظر الوصول إلى المنفذ 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 ثوانٍ. شغِّل اختبار تحليل نظام أسماء النطاقات مرة أخرى.
تحليل نظام أسماء النطاقات
من مثيل العميل، شغّل الأمر التالي
الأمر
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
.
لاختبار ذلك، دعونا نضيف علامة الشبكة مرة أخرى إلى خادم الويب بعد جاز_1.
إضافة علامة شبكة
أضِف العلامة مرة أخرى إلى الجهاز الافتراضي (VM) لخادم الويب للسماح بزيارات بروتوكول http إلى الجهاز الافتراضي (VM) للمنطقة الأساسية. نفِّذ الأمر التالي في Cloud Shell.
الأمر
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
سيتم اجتياز عمليات التحقق من الصحة خلال 10 ثوانٍ
تحقق من أن تحليل نظام أسماء النطاقات يشير إلى جهاز موازنة الحمل الأساسي. في الإعدادات لدينا، سيكون هذا هو عنوان IP لجهاز موازنة الحمل في منطقة us-west1.
من مثيل العميل، شغّل الأمر التالي
الأمر
dig +short failover.example.com
تعديل سجلّ نظام أسماء النطاقات
سنُعدّل الآن سجلّ نظام أسماء النطاقات الخاص بـ 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
تحليل نظام أسماء النطاقات
نفِّذ الطلب التالي من الجهاز الافتراضي (VM) الخاص بالعميل. ستلاحظ أنّ سجلّ نظام أسماء النطاقات 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