نقل جهاز موازنة حمل الشبكة من المجموعات المستهدفة إلى خدمات الخلفية الإقليمية

1. مقدمة

يقدّم هذا الدليل تعليمات لنقل برنامج موازنة حمل الشبكة الحالي من الخلفية لمجموعة مستهدَفة إلى خدمة خلفية إقليمية.

ما ستتعلمه

  • فهم مزايا خدمات الخلفية الإقليمية
  • إنشاء موازنة حمل الشبكة باستخدام مجموعات مستهدَفة
  • إجراء عملية التحقّق من صحة مجموعة المستخدمين المستهدَفة
  • إنشاء خدمة خلفية إقليمية باستخدام مجموعات مثيلات غير مُدارة
  • تنفيذ عملية نقل البيانات من مجموعة المثيلات الهدف إلى خدمة الخلفية
  • إجراء عملية التحقّق من صحة خدمات الخلفية

المتطلبات

  • خبرة في استخدام أجهزة موازنة الحمل

2. نظرة عامة على خدمات الخلفية الإقليمية لموازنة حمل الشبكة

من خلال خدمة موازنة الحمل على الشبكة، يتوفّر لعملاء Google Cloud أداة فعّالة لتوزيع عدد الزيارات الخارجية بين الأجهزة الافتراضية في إحدى مناطق Google Cloud. لتسهيل إدارة الزيارات الواردة على عملائنا والتحكّم في طريقة عمل جهاز موازنة الحمل، أضفنا مؤخرًا إمكانية استخدام الخدمات الخلفية في موازنة تحميل الشبكة. ويوفّر ذلك لعملائنا إمكانية توسيع نطاق عمليات النشر وتحسين سرعتها وأدائها ومرونتها، وكل ذلك بطريقة سهلة الإدارة.

نوفّر الآن خدمات الخلفية مع ميزة "موازنة حمل الشبكة"، ما يمثّل تحسينًا كبيرًا مقارنةً بالطريقة السابقة، وهي مجموعات الاستهداف. تحدّد خدمة الخلفية طريقة توزيع أجهزة موازنة الحمل للزيارات الواردة على الخلفيات المرفقة، وتوفّر تحكّمًا دقيقًا في طريقة عمل جهاز موازنة الحمل.

3- مزايا خدمات الخلفية الإقليمية

يوفّر اختيار خدمة خلفية إقليمية كبرنامج موازنة الحمل عددًا من المزايا لبيئتك.

267db35a58145be.png

توفّر خدمات الخلفية الإقليمية ما يلي:

  • التحقّق من الصحة بدقة عالية باستخدام ميزة التحقّق الموحّدة من الصحة: يمكنك الآن الاستفادة بشكل كامل من ميزات التحقّق من الصحة لموازنة الحمل مع خدمات الخلفية الإقليمية، ما يتيح لك التخلّص من قيود عمليات التحقّق القديمة من الصحة عبر HTTP. لأسباب تتعلق بالامتثال، كانت عمليات التحقّق من سلامة بروتوكول TCP التي تتوافق مع سلاسل الطلبات والاستجابات المخصّصة أو HTTPS من الطلبات الشائعة لعملاء Network Load Balancing.
  • مرونة أفضل مع مجموعات تجاوز الفشل: باستخدام مجموعات تجاوز الفشل، يمكنك تحديد مجموعة مثيلات كالمجموعة الأساسية وأخرى كالمجموعة الثانوية وتجاوز الفشل في الزيارات عندما تنخفض صحة المثيلات في المجموعة النشطة عن حدّ معيّن. للحصول على مزيد من التحكّم في آلية الاحتفاظ بنسخة احتياطية عند تعذّر الوصول إلى النسخة الأساسية، يمكنك استخدام وكيل مثل keepalived أو pacemaker وعرض عملية تحقّق من السلامة ناجحة أو فاشلة استنادًا إلى التغييرات في حالة مثيل الخلفية.
  • قابلية التوسّع والتوفّر العالي باستخدام مجموعات مثيلات مُدارة: تتيح خدمات الخلفية الإقليمية استخدام مجموعات المثيلات المُدارة كخلفيات. يمكنك الآن تحديد نموذج لمثيلات الأجهزة الافتراضية للخادم الخلفي والاستفادة من القياس التلقائي استنادًا إلى استخدام وحدة المعالجة المركزية أو مقاييس الرصد الأخرى.

بالإضافة إلى ما سبق، ستتمكّن من الاستفادة من ميزة "إيقاف الاتصال" لبروتوكول الاتصال (TCP) ووقت برمجة أسرع لعمليات النشر الكبيرة.

بنية شبكة الدرس التطبيقي حول الترميز

يقدّم هذا الدليل تعليمات لنقل برنامج موازنة حمل الشبكة الحالي من الخلفية لمجموعة مستهدَفة إلى خدمة خلفية إقليمية.

يتيح لك الانتقال إلى خدمة خلفية إقليمية الاستفادة من ميزات مثل عمليات التحقّق من السلامة غير القديمة (لبروتوكولات TCP وSSL وHTTP وHTTPS وHTTP/2) ومجموعات الأجهزة الافتراضية المُدارة وإيقاف الاتصالات تدريجيًا وسياسة تجاوز الفشل.

يرشدك هذا الدليل إلى كيفية نقل برنامج موازنة حمل الشبكة التالي المستند إلى مجموعة مستهدَفة نموذجية لاستخدام خدمة خلفية إقليمية بدلاً من ذلك

b2ac8a09e53e27f8.png

قبل: موازنة حمل الشبكة باستخدام مجموعة مستهدَفة

سيبدو نشر برنامج موازنة حمل الشبكة المستند إلى خدمة الخلفية الناتج على النحو التالي.

f628fdad64c83af3.png

بعد: موازنة حمل الشبكة مع خدمة خلفية إقليمية

يفترض هذا المثال أنّ لديك موازنة حمل شبكة تقليدية مستندة إلى مجموعة مستهدَفة مع مثيلَين في المنطقة us-central-1a ومثيلَين في المنطقة us-central-1c.

في ما يلي الخطوات رفيعة المستوى المطلوبة لإجراء عملية نقل من هذا النوع:

  1. جمِّع مثيلات مجموعة الاستهداف في مجموعات مثيلات. لا تعمل خدمات الخلفية إلا مع مجموعات مثيلات مُدارة أو غير مُدارة. يُرجى العِلم أنّه على الرغم من عدم وجود حدّ لعدد المثيلات التي يمكن وضعها في مجموعة مستهدَفة واحدة، إلا أنّ مجموعات المثيلات لها حجم أقصى. إذا كان عدد الأجهزة الافتراضية في مجموعة الاستهداف يتجاوز هذا الحد الأقصى، عليك تقسيم الخلفيات على عدة مجموعات من الأجهزة الافتراضية. إذا كان النشر الحالي يتضمّن مجموعة احتياطية من الأهداف، أنشئ مجموعة مثيلات منفصلة لهذه المثيلات. سيتم ضبط مجموعة الأجهزة الافتراضية هذه كمجموعة احتياطية.
  2. إنشاء خدمة خلفية إقليمية إذا كان النشر يتضمّن مجموعة احتياطية من الأهداف، عليك تحديد نسبة تجاوز الفشل أثناء إنشاء خدمة الخلفية. يجب أن تتطابق هذه القيمة مع نسبة تجاوز الفشل التي تم ضبطها مسبقًا لنشر مجموعة الاستهداف.
  3. أضِف مجموعات الأجهزة الافتراضية (التي تم إنشاؤها سابقًا) إلى خدمة الخلفية. إذا كان النشر يتضمّن مجموعة احتياطية من الأهداف، ضَع علامة –failover على مجموعة مثيلات تجاوز الفشل المقابلة عند إضافتها إلى خدمة الخلفية.
  4. اضبط قاعدة إعادة توجيه تشير إلى خدمة الخلفية الجديدة. أمامك خياران:
  • (يُنصح به) عدِّل قاعدة إعادة التوجيه الحالية للإشارة إلى خدمة الخلفية. أو
  • أنشئ عملية إعادة توجيه جديدة تشير إلى خدمة الخلفية. يتطلّب ذلك إنشاء عنوان IP جديد للواجهة الأمامية لموازنة التحميل. بعد ذلك، عدِّل إعدادات نظام أسماء النطاقات (DNS) للانتقال بسلاسة من عنوان IP القديم لموازن التحميل المستند إلى مجموعة الاستهداف إلى عنوان IP الجديد.

إعداد البيئة بالسرعة التي تناسبك

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.

لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن وُجدت تكلفة على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي حول الترميز Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا التمرين المعملي باستخدام متصفّح فقط.

تسجيل الدخول إلى Cloud Shell وتحديد projectid

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

4. إنشاء شبكة VPC

شبكة VPC

من Cloud Shell

gcloud compute networks create network-lb --subnet-mode custom

إنشاء شبكة فرعية

من Cloud Shell

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

إنشاء قواعد جدار الحماية

من Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

إنشاء أجهزة افتراضية غير مُدارة

إنشاء مثيلَين لكل منطقة، us-central1-a وus-central1-c

إنشاء المثيل 1 من Cloud Shell

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

إنشاء الجهاز الظاهري 2 من Cloud Shell

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

إنشاء الجهاز الظاهري 3 من Cloud Shell

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

إنشاء الجهاز الظاهري 4 من Cloud Shell

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

إنشاء قاعدة جدار حماية للسماح للزيارات الخارجية بالوصول إلى مثيلات الأجهزة الافتراضية هذه

من Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

إنشاء عنوان IP خارجي ثابت لجهاز موازنة الحمل

من Cloud Shell

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

إضافة مورد فحص سلامة HTTP قديم

من Cloud Shell

gcloud compute http-health-checks create basic-check

5- إنشاء قاعدة إعادة توجيه ومجموعة استهداف

إنشاء مجموعة مستهدَفة

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

أضِف مثيلاتك إلى مجموعة الاستهداف us-central1-a

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

أضِف مثيلاتك إلى مجموعة الاستهداف us-central1-c

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

إضافة قاعدة إعادة توجيه

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

التحقّق من وظائف مجموعة الاستهداف

تحديد عنوان IP للواجهة الأمامية من خلال اختيار "موازنات التحميل" (Load Balancers) → "الواجهات الأمامية" (Frontends) (قاعدة www)

استخدِم أمر curl من وحدة طرفية في محطة العمل للوصول إلى عنوان IP الخارجي ومراقبة موازنة الحمل على مستوى أربعة مثيلات مستهدَفة. أغلِق الوحدة الطرفية بعد إثبات صحة الرمز.

while true; do curl -m1 IP_ADDRESS; done

6. نقل برنامج موازنة حمل الشبكة من مجموعة مستهدَفة إلى خدمة خلفية

إنشاء عمليات فحص موحّدة للحالة الصحية لخدمة الخلفية

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

إنشاء مجموعات مثيلات من مثيلات حالية من مجموعة الاستهداف

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

إنشاء مجموعات مثيلات من مثيلات حالية من مجموعة الاستهداف

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

إنشاء خدمة خلفية وربطها بعمليات التحقّق من الصحة التي تم إنشاؤها حديثًا

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

ضبط خدمة الخلفية وإضافة مجموعات المثيلات

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

تعديل قاعدة إعادة التوجيه الحالية لتتوافق مع الخدمات الخلفية

دوِّن اسم قاعدة إعادة التوجيه "www-rule" وعنوان IP المرتبط بها من خلال تنفيذ ما يلي:

اختَر "موازنة الحمل" (Load Balancer) → "الواجهات الأمامية" (Frontends)

تم أيضًا تحديد أربع مجموعات مستهدَفة

اختَر Load Balancer → اختَر www-pool

توجيه الزيارات إلى الخدمات الخلفية من خلال تعديل قاعدة إعادة التوجيه الحالية

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

تأكَّد من أنّه لم يعُد يتم ضبط موازن التحميل "www-pool" باستخدام الواجهة الأمامية "www-rule" (راجِع لقطة الشاشة أدناه).

اختَر Load Balancer → www-pool

9a393b3ca4e0942c.png

تأكَّد من أنّ قاعدة إعادة التوجيه في الواجهة الأمامية مرتبطة الآن بموازن التحميل "my-backend-service".

اختَر "موازنة الحمل" (Load Balancer) → "الواجهات الأمامية" (Frontends)

دوِّن اسم القاعدة "www-rule"، وسيتم الاحتفاظ بعنوان IP، وسيتم الآن استخدام أداة موازنة الحمل "my-backend-service".

استخدِم الأمر curl من وحدة طرفية في محطة العمل للوصول إلى عنوان IP الخارجي ومراقبة موازنة التحميل في خدمة الخلفية المرتبطة حديثًا. أغلِق الوحدة الطرفية بعد إثبات صحة الرمز.

while true; do curl -m1 IP_ADDRESS; done

7. خطوات إعادة الضبط

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. تهانينا!

تهانينا على إكمال درس البرمجة.

المواضيع التي تناولناها

  • فهم مزايا خدمات الخلفية الإقليمية
  • إنشاء موازنة حمل الشبكة باستخدام مجموعات مستهدَفة
  • إجراء عملية التحقّق من صحة مجموعة المستخدمين المستهدَفة
  • إنشاء خدمة خلفية إقليمية باستخدام مجموعات مثيلات غير مُدارة
  • تنفيذ عملية نقل البيانات من مجموعة المثيلات الهدف إلى خدمة الخلفية
  • إجراء عملية التحقّق من صحة خدمات الخلفية