1. مقدمة
مرحبًا بك في الدرس التطبيقي حول الترميز الخاص بجهاز موازنة الحمل لبروتوكولات HTTP الخارجي مع ميزة "إدارة حركة المرور المتقدّمة" (Envoy).
يحتوي أحدث إصدار من جهاز موازنة حمل HTTP(S) الخارجي مع "إدارة حركة المرور المتقدّمة" على جميع ميزات "جهاز موازنة حمل HTTP(S) الخارجي الشامل" الكلاسيكي الحالي، ولكن مع قائمة متزايدة من إمكانات "إدارة حركة المرور المتقدّمة". بعض هذه الإمكانات جديدة في موازنات التحميل، وبعضها يوفّر ميزات محسّنة للإمكانات الحالية. في ما يلي قائمة جزئية بهذه الإمكانات:
- تقسيم عدد الزيارات حسب الأوزان
- طلب النسخ المطابق
- رصد القيم الشاذة
- طلب إعادة المحاولة
- إدخال الأخطاء
- خيارات إضافية لربط الجلسة بالخادم الخلفي
- خيارات إضافية لتحويل العناوين
- مشاركة الموارد المتعدّدة المصادر (CORS)
- خوارزميات جديدة لموازنة الحمل
ما ستتعلمه
- كيفية إعداد مجموعة مثيلات مُدارة وشبكة VPC وقواعد جدار الحماية المرتبطة بها
- كيفية استخدام ميزات إدارة الزيارات المتقدّمة في موازن التحميل الجديد
- كيفية التأكّد من أنّ ميزات إدارة الزيارات المتقدّمة تعمل على النحو المطلوب
المتطلبات
- أساسيات الشبكات ومعرفة بروتوكول HTTP
- معرفة أساسية بسطر الأوامر في نظامَي Unix وLinux
الطوبولوجيا وحالة الاستخدام في الدرس التطبيقي حول الترميز
الشكل 1: مخطط طوبولوجيا توجيه جهاز موازنة حمل HTTP
خلال هذا الدرس التطبيقي، ستعمل على إعداد ثلاث مجموعات مثيلات مُدارة، واحدة في الشرق والغرب والوسط. ستنشئ جهاز موازنة حمل HTTPS خارجيًا شاملاً. سيستخدم جهاز موازنة الحمل عدة ميزات من قائمة الإمكانات المتقدّمة التي يتيحها جهاز موازنة الحمل المستند إلى Envoy. بعد نشرها، ستنشئ بعض عمليات التحميل المحاكية وتتأكّد من أنّ الإعدادات التي ضبطتها تعمل بشكلٍ مناسب.
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، ما يحسّن بشكل كبير أداء الشبكة والمصادقة. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. ليس عليك تثبيت أي تطبيق.
قبل البدء
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID
تفعيل واجهات برمجة التطبيقات
تفعيل جميع الخدمات اللازمة
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3- إنشاء شبكة السحابة VPC
إنشاء شبكة VPC
من Cloud Shell
gcloud compute networks create httplbs --subnet-mode=auto
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs]. NAME: httplbs SUBNET_MODE: AUTO BGP_ROUTING_MODE: REGIONAL IPV4_RANGE: GATEWAY_IPV4:
إنشاء قواعد جدار الحماية لشبكة VPC
بعد إنشاء شبكة VPC، عليك إنشاء قواعد جدار الحماية. سيتم استخدام قاعدة جدار الحماية للسماح لجميع عناوين IP بالوصول إلى عنوان IP الخارجي لموقع الويب الخاص بتطبيق الاختبار على المنفذ 80 لحركة بيانات http.
من Cloud Shell
gcloud compute firewall-rules create httplb-allow-http-rule \ --allow tcp:80 \ --network httplbs \ --source-ranges 0.0.0.0/0 \ --priority 700
الناتج
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule]. Creating firewall...done. NAME: httplb-allow-http-rule NETWORK: httplbs DIRECTION: INGRESS PRIORITY: 700 ALLOW: tcp:80 DENY: DISABLED: False
4. إعداد "مجموعات الأجهزة الافتراضية المُدارة"
عليك إعداد "مجموعات مثيلات مُدارة" تتضمّن أنماط موارد الخلفية التي تستخدمها "موازنة الحمل HTTP". سننشئ أولاً "نماذج الأجهزة الافتراضية" التي تحدّد إعدادات الأجهزة الافتراضية التي سيتم إنشاؤها لكل منطقة. بعد ذلك، سننشئ مجموعة مثيلات مُدارة لكل منطقة تشير إلى نموذج مثيل.
يمكن أن تكون مجموعات مثيلات مُدارة على مستوى المنطقة أو النطاق. بالنسبة إلى هذا التمرين العملي، سننشئ ثلاث مجموعات إقليمية من "مجموعات مثيلات مُدارة"، واحدة في us-east1، وواحدة في us-west1، وواحدة في us-central1.
في هذا القسم، يمكنك الاطّلاع على نص برمجي مُعدّ مسبقًا سيتم الرجوع إليه عند إنشاء الجهاز الظاهري. يثبّت نص بدء التشغيل هذا إمكانات خادم الويب ويفعّلها، وسنستخدمها لمحاكاة تطبيق ويب. يمكنك استكشاف هذا النص البرمجي.
إنشاء نماذج الأجهزة الافتراضية في الشرق والغرب والوسط
تتمثّل الخطوة الأولى في إنشاء نموذج الجهاز الظاهري us-east-1.
من Cloud Shell
gcloud compute instance-templates create us-east1-template \ --region=us-east1 \ --network=httplbs \ --tags=http-server, \ --image-family=debian-12 \ --image-project=debian-cloud \ --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'
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template]. NAME: us-east1-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00
الخطوة التالية هي إنشاء نموذج الجهاز الافتراضي us-west-1.
من Cloud Shell
gcloud compute instance-templates create us-west1-template \ --region=us-west1 \ --network=httplbs \ --tags=http-server, \ --image-family=debian-12 \ --image-project=debian-cloud \ --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'
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template]. NAME: us-west1-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00
الخطوة التالية هي إنشاء نموذج الجهاز الافتراضي us-central-1.
من Cloud Shell
gcloud compute instance-templates create us-central1-template \ --region=us-central1 \ --network=httplbs \ --tags=http-server, \ --image-family=debian-12 \ --image-project=debian-cloud \ --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'
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template]. NAME: us-central1-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00
يمكنك الآن التأكّد من أنّه تم إنشاء نماذج الآلات الافتراضية بنجاح باستخدام أمر gcloud التالي:
من Cloud Shell
gcloud compute instance-templates list
الناتج
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP us-central1-template n1-standard-1 2021-11-09T09:25:37.263-08:00 us-east1-template n1-standard-1 2021-11-09T09:24:35.275-08:00 us-west1-template n1-standard-1 2021-11-09T09:25:08.016-08:00
إنشاء مجموعات مثيلات مُدارة في الشرق والغرب والوسط
علينا الآن إنشاء مجموعة مثيلات مُدارة من نماذج المثيلات التي أنشأناها سابقًا.
من Cloud Shell
gcloud compute instance-groups managed create us-east1-mig \ --base-instance-name=us-east1-mig \ --size=1 \ --template=us-east1-template \ --zone=us-east1-b
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig]. NAME: us-east1-mig LOCATION: us-east1-b SCOPE: zone BASE_INSTANCE_NAME: us-east1-mig SIZE: 0 TARGET_SIZE: 1 INSTANCE_TEMPLATE: us-east1-template AUTOSCALED: no
من Cloud Shell
gcloud compute instance-groups managed create us-west1-mig \ --base-instance-name=us-west1-mig \ --size=1 \ --template=us-west1-template \ --zone=us-west1-a
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig]. NAME: us-west1-mig LOCATION: us-west1-a SCOPE: zone BASE_INSTANCE_NAME: us-west1-mig SIZE: 0 TARGET_SIZE: 1 INSTANCE_TEMPLATE: us-west1-template AUTOSCALED: no
من Cloud Shell
gcloud compute instance-groups managed create us-central1-mig \ --base-instance-name=us-central1-mig \ --size=1 \ --template=us-central1-template \ --zone=us-central1-a
الناتج
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig]. NAME: us-central1-mig LOCATION: us-central1-a SCOPE: zone BASE_INSTANCE_NAME: us-central1-mig SIZE: 0 TARGET_SIZE: 1 INSTANCE_TEMPLATE: us-central1-template AUTOSCALED: no
يمكننا التحقّق من إنشاء مجموعات الأجهزة الافتراضية بنجاح باستخدام أمر gcloud التالي:
من Cloud Shell
gcloud compute instance-groups list
الناتج
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES us-central1-mig us-central1 zone httplbs Yes 1 us-west1-mig us-west1 zone httplbs Yes 1 us-east1-mig us-east1 zone httplbs Yes 1
التحقّق من وظائف خادم الويب
تم ضبط كل مثيل لتشغيل خادم ويب Apache باستخدام نص برمجي بسيط بلغة PHP يعرض ما يلي:
لضمان عمل خوادم الويب بشكلٍ صحيح، انتقِل إلى Compute Engine -> مثيلات الأجهزة الافتراضية. تأكَّد من إنشاء مثيلاتك الجديدة (مثل us-east1-mig-xxx) وفقًا لتعريفات مجموعات المثيلات.
الآن، أرسِل طلب ويب في المتصفّح للتأكّد من أنّ خادم الويب يعمل (قد يستغرق ذلك دقيقة واحدة للبدء). في صفحة "أجهزة VM" ضِمن Compute Engine، اختَر جهازًا افتراضيًا أنشأته مجموعة الأجهزة الافتراضية وانقر على عنوان IP الخارجي (العام).
أو في المتصفّح، انتقِل إلى http://<IP_Address>
5- إعداد موازن الحمل
إنشاء فحص صحي
أولاً، يجب إنشاء فحص أساسي للحالة الصحية للتأكّد من أنّ خدماتنا تعمل بنجاح. سننشئ فحصًا أساسيًا للصحة، ولكن تتوفّر العديد من خيارات التخصيص المتقدّمة.
من Cloud Shell
gcloud compute health-checks create http http-basic-check \ --port 80
حجز عنوان IP خارجي
في هذه الخطوة، عليك حجز عنوان IP ثابت متاح على مستوى العالم سيتم ربطه لاحقًا بـ "موازنة الحمل".
من Cloud Shell
gcloud compute addresses create lb-ipv4-2 \ --ip-version=IPV4 \ --global
احرص على تدوين عنوان IP الذي تم حجزه.
gcloud compute addresses describe lb-ipv4-2 \ --format="get(address)" \ --global
إنشاء خدمات الخلفية
الآن، علينا إنشاء خدمة خلفية لكل مجموعة من مجموعات الأجهزة الافتراضية المُدارة التي أنشأناها سابقًا. واحد للشرق والغرب والوسط
إنشاء خدمة خلفية لمجموعة مثيلات مُدارة في المنطقة الشرقية
من Cloud Shell
gcloud compute backend-services create east-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
إنشاء خدمة خلفية لمجموعة مثيلات مُدارة في المنطقة الغربية
من Cloud Shell
gcloud compute backend-services create west-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
إنشاء خدمة خلفية لمجموعة مثيلات مُدارة مركزية
من Cloud Shell
gcloud compute backend-services create central-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
إضافة مجموعات مثيلات مُدارة إلى "خدمات الخلفية"
بعد أن أنشأنا خدمات الخلفية الخاصة بكل مجموعة تطبيقات، علينا الآن إضافة "مجموعات الأجهزة الافتراضية المُدارة" التي أنشأناها سابقًا إلى كل خدمة خلفية.
أضِف East MIG إلى خدمة الخلفية.
من Cloud Shell
gcloud compute backend-services add-backend east-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-east1-mig \ --instance-group-zone=us-east1-b \ --global
أضِف West MIG إلى خدمة الخلفية.
من Cloud Shell
gcloud compute backend-services add-backend west-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-west1-mig \ --instance-group-zone=us-west1-a \ --global
أضِف Central MIG إلى خدمة الخلفية.
من Cloud Shell
gcloud compute backend-services add-backend central-backend-service \ --balancing-mode='UTILIZATION' \ --instance-group=us-central1-mig \ --instance-group-zone=us-central1-a \ --global
إنشاء خريطة عناوين URL
خريطة عناوين URL هي المكان الذي ستتوفّر فيه ميزات إدارة الزيارات المتقدّمة في هذا المختبر. يجب إنشاء ملف .yaml يحتوي على الإعدادات. ضمن ملف .yaml، أنشأنا تطابق بادئة على /roundrobbin، لذا لن تتأثر بهذه الإعدادات سوى الزيارات التي تتطابق مع /roundrobbin. لقد حدّدنا أنّه يجب توجيه% 50 من الزيارات إلى east-backend-service و% 50 من الزيارات إلى west-backend-service. أضفنا أيضًا قيمة عنوان الاستجابة:{test} التي ستظهر في جميع الاستجابات. أخيرًا، أضفنا شرطًا يقضي بنسخ كل حركة البيانات إلى central-backend-service. يتم تكرار الزيارات وإرسالها إلى هنا لأغراض الاختبار فقط.
احفظ المثال كملف .yaml على جهازك.
defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service kind: compute #urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: matcher1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service name: matcher1 routeRules: - matchRules: - prefixMatch: /roundrobbin priority: 2 headerAction: responseHeadersToAdd: - headerName: test headerValue: value replace: True routeAction: weightedBackendServices: - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service weight: 50 - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service weight: 50 retryPolicy: retryConditions: ['502', '504'] numRetries: 3 perTryTimeout: seconds: 1 nanos: 50 requestMirrorPolicy: backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service
أنشئ "خريطة عناوين URL" من خلال استيراد المستند من جهازك. يُرجى العِلم أنّ مسار المصدر سيختلف حسب المكان الذي تحفظ فيه ملف .yaml.
من Cloud Shell
gcloud compute url-maps import web-map-http \ --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \ --global
إنشاء واجهة أمامية HTTP
الخطوة الأخيرة في إنشاء أداة موازنة الحمل هي إنشاء الواجهة الأمامية. سيؤدي ذلك إلى ربط عنوان IP الذي حجزته سابقًا بخريطة عناوين URL لموازنة التحميل التي أنشأتها.
من Cloud Shell
gcloud compute target-http-proxies create http-lb-proxy-adv \ --url-map=web-map-http
بعد ذلك، عليك إنشاء قاعدة إعادة توجيه عامة تربط عنوان IP المحجوز سابقًا بخادم وكيل HTTP.
من Cloud Shell
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme EXTERNAL_MANAGED \ --address=lb-ipv4-2 \ --global \ --target-http-proxy=http-lb-proxy-adv \ --ports=80
6. التأكّد من أنّ "ميزات المرور المتقدّمة" تعمل
للتأكّد من أنّ ميزة تقسيم الزيارات التي تم تنفيذها تعمل بشكل صحيح، عليك إنشاء بعض الأحمال. لإجراء ذلك، سننشئ جهازًا افتراضيًا جديدًا لمحاكاة التحميل.
إنشاء قاعدة جدار حماية للسماح ببروتوكول SSH
لإجراء اتصال SSH بالجهاز الظاهري الذي سننشئ منه الزيارات، عليك أولاً إنشاء قاعدة جدار حماية تسمح لزيارات SSH بالوصول إلى الجهاز الظاهري.
من Cloud Shell
gcloud compute firewall-rules create fw-allow-ssh \ --network=httplbs \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
الناتج
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED fw-allow-ssh httplbs INGRESS 1000 tcp:22 False
إنشاء Siege-vm
الآن، عليك إنشاء siege-vm الذي ستستخدمه لإنشاء الحمل
من Cloud Shell
gcloud compute instances create siege-vm \ --network=httplbs \ --zone=us-east4-c \ --machine-type=e2-medium \ --tags=allow-ssh,http-server \ --metadata=startup-script='sudo apt-get -y install siege'
الناتج
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS siege-vm us-east4-c e2-medium 10.150.0.3 34.85.218.119 RUNNING
بعد ذلك، يمكنك استخدام SSH للوصول إلى الجهاز الظاهري الذي أنشأته. بعد إنشائه، انقر على SSH لتشغيل نافذة طرفية والاتصال.
بعد إتمام الاتصال، شغِّل الأمر التالي لإنشاء الحمل. استخدِم عنوان IP الذي حجزته سابقًا لموازنة الحمل الخارجية عبر http.
من Cloud Shell
siege -c 250 http://[$lb-ipv4-2]/roundrobbin
الناتج
New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file [alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory ** SIEGE 4.0.2 ** Preparing 250 concurrent users for battle. The server is now under siege...
التحقّق من توزيع الحمل
بعد تشغيل Siege، حان الوقت للتأكّد من توزيع الزيارات بالتساوي على مجموعات مثيلات شرق وغرب المُدارة، بالإضافة إلى ذلك، يمكنك التأكّد من أنّ ميزة "مطابقة الزيارات" تعمل ويتم إرسال الزيارات إلى مجموعة المثيلات المُدارة المركزية.
في Cloud Console، انقر على "خدمات الشبكة" > "موازنة الحمل" في قائمة التنقّل. اختَر load balancer web-map-http. انتقِل إلى علامة التبويب "المراقبة"، وسيظهر لك الرسم البياني أدناه.
ستتمكّن من الاطّلاع على تقسيم الزيارات في الوقت الفعلي إلى هذا الموقع الإلكتروني المتعدد المناطق. يتم تقسيم عدد الزيارات بالتساوي لأنّك ضبطت تقسيمًا بنسبة 50/50 باستخدام جدولة Round robin.
للتأكّد من أنّ سياسة نسخ الزيارات التي أنشأتها تعمل، عليك التحقّق من استخدام مجموعة مثيلات مُدارة central-backend-service. لإجراء ذلك، انتقِل إلى Compute Engine، ثم إلى مجموعات المثيلات، واختَر us-central1-mig. بعد ذلك، انتقِل إلى علامة التبويب "المراقبة".
ستظهر لك الرسومات البيانية التي تمّت تعبئتها لتوضيح أنّه تمّت مطابقة عدد الزيارات مع مجموعة مثيلات مُدارة هذه.
Stop the Siege
بعد أن أثبتّ أنّ تقسيم الزيارات المتقدّم يعمل بشكل صحيح، حان الوقت لإيقاف عملية المحاكاة. لإجراء ذلك، ارجع إلى وحدة SSH الطرفية الخاصة بـ siege-vm واضغط على CTRL+C لإيقاف عملية التشغيل.
التحقّق من إرسال عنوان الاستجابة
قبل إجراء عملية التنظيف، يمكنك التأكّد بسرعة من أنّ موازن التحميل عبر بروتوكول HTTP يرسل عنوان الاستجابة المناسب. لقد ضبطتَها لإرسال اختبار العنوان مع قيمة المحتوى. سيؤدي تشغيل أمر curl من Cloud Shell إلى تقديم الردّ المتوقّع.
من Cloud Shell
curl -svo /dev/null http://lb-ipv4-2/roundrobbin
الناتج
* Trying lb-ipv4-2.. * TCP_NODELAY set * Connected to lb-ipv4-2 ( lb-ipv4-2) port 80 (#0) > GET /roundrobbin HTTP/1.1 > Host: lb-ipv4-2 > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 404 Not Found < date: Wed, 10 Nov 2021 17:05:27 GMT < server: envoy < Content-Length: 273 < content-type: text/html; charset=iso-8859-1 < via: 1.1 google < test: value < { [273 bytes data] * Connection #0 to host 34.149.2.26 left intact * Closing connection 0
7. إعادة تنظيم المختبر
بعد الانتهاء من بيئة المختبر، حان الوقت لإيقافها. يُرجى تنفيذ الأوامر التالية لحذف البيئة التجريبية.
من Cloud Shell
gcloud compute instances delete siege-vm --zone=us-east4-c gcloud compute forwarding-rules delete http-content-rule --global gcloud compute target-http-proxies delete http-lb-proxy-adv gcloud compute url-maps delete web-map-http gcloud compute backend-services delete east-backend-service --global gcloud compute backend-services delete west-backend-service --global gcloud compute backend-services delete central-backend-service --global gcloud compute addresses delete lb-ipv4-2 --global gcloud compute health-checks delete http-basic-check gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a gcloud compute instance-templates delete "us-east1-template" gcloud compute instance-templates delete "us-west1-template" gcloud compute instance-templates delete "us-central1-template" gcloud compute firewall-rules delete httplb-allow-http-rule gcloud compute firewall-rules delete fw-allow-ssh gcloud compute networks delete httplbs
8. تهانينا!
لقد أكملت الدرس التطبيقي حول الترميز الخاص بموازنة حمل HTTPs الخارجية مع إدارة حركة المرور المتقدّمة (Envoy).
المواضيع التي تناولناها
- كيفية إعداد مجموعة مثيلات مُدارة وشبكة VPC وقواعد جدار الحماية المرتبطة بها
- كيفية استخدام ميزات إدارة الزيارات المتقدّمة في موازن التحميل الجديد
- كيفية التأكّد من أنّ ميزات إدارة الزيارات المتقدّمة تعمل على النحو المطلوب
الخطوات التالية
- جرِّب بعض ميزات التوجيه المتقدّمة الأخرى، مثل إعادة كتابة عناوين URL وإضافة عناوين CORS وغيرها الكثير ( رابط).