1. مقدمة
مرحبًا بك في الدرس التطبيقي حول الترميز External HTTPs LB مع Advanced Traffic Management (Envoy)
يحتوي أحدث إصدار من جهاز موازنة الحمل الخارجي HTTP(S) مع الإدارة المتقدّمة لعدد الزيارات على جميع ميزات جهاز موازنة الحمل العالمي لبروتوكول HTTP(S) الخارجي الكلاسيكي، بالإضافة إلى قائمة متزايدة من إمكانات الإدارة المتقدّمة لعدد الزيارات. بعض هذه الإمكانات جديدة بالنسبة إلى أجهزة موازنة الحمل، بينما يوفّر بعضها ميزات محسَّنة للإمكانات الحالية. تشمل القائمة الجزئية لهذه الإمكانات ما يلي:
- تقسيم الزيارات المرجَّح
- طلب النسخ المطابق
- اكتشاف القيم الاستثنائية
- طلب إعادة المحاولة
- حقن الصدأ
- خيارات إضافية لتقارب الجلسة الخلفية
- خيارات إضافية لتحويل العنوان
- مشاركة الموارد المتعدّدة المصادر (CORS)
- خوارزميات جديدة لموازنة الحمل
المعلومات التي ستطّلع عليها
- كيفية إعداد مجموعة مثيل مُدار وقواعد جدار الحماية وسحابة VPC المرتبطة
- كيفية استخدام ميزات إدارة الزيارات المتقدّمة في جهاز موازنة الحمل الجديد
- كيفية التحقّق من أنّ الميزات المتقدّمة لإدارة عدد الزيارات تعمل على النحو المطلوب
المتطلبات
- الشبكات الأساسية والمعرفة ببروتوكول HTTP
- معرفة سطر أوامر Unix/Linux الأساسي
طوبولوجيا مختبر الترميز حالة الاستخدام
الشكل 1 - طوبولوجيا توجيه جهاز موازنة حمل HTTP
خلال هذا التمرين المعملي، ستُعِدّ ثلاث مجموعات مثيلات مُدارة في الشرق والغرب والوسط. ستنشئ جهازًا خارجيًا لموازنة حمل https الخارجي. سيستخدم جهاز موازنة الحمل العديد من الميزات من قائمة القدرات المتقدمة التي يعتمدها جهاز موازنة الحمل المستند إلى المرسِل. بعد النشر، سيتم إنشاء بعض عمليات التحميل التي تمت محاكاتها والتحقق من أنّ الإعدادات التي ضبطتها تعمل بشكل مناسب.
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 Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بالبيئة بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك شيء مثل هذا:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا التمرين من خلال متصفح.
قبل البدء
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
صدى $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". سننشئ أولاً نماذج Instance Template التي تحدد إعدادات الأجهزة الافتراضية التي سيتم إنشاؤها لكل منطقة. بعد ذلك، بالنسبة إلى خلفية في كل منطقة، سننشئ مجموعة مثيلات مُدارة تشير إلى نموذج مثيل.
يمكن أن تكون المجموعات الافتراضية المُدارة ضمن نطاق مناطق أو مناطق معيَّنة. خلال هذا التمرين المعملي، سننشئ ثلاث مجموعات إقليمية للمثيلات المُدارة، مجموعة في 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-9 \ --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-9 \ --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-9 \ --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) وفقًا لتعريفات مجموعات المثيل.
والآن، قدِّم طلب ويب إليه في متصفحك للتأكد من تشغيل خادم الويب (قد يستغرق بدء ذلك دقيقة واحدة). في صفحة مثيلات الأجهزة الافتراضية ضمن 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
إضافة MIG إلى خدمات الخلفية
الآن وبعد أن أنشأنا خدمات الخلفية المناسبة لكل مجموعة تطبيقات، علينا الآن إضافة المجموعات الافتراضية المُدارة التي أنشأناها سابقًا إلى كل خدمة خلفية.
إضافة 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
إضافة 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% من عدد الزيارات يجب أن توجّه إلى خدمة الخلفية الشرقية و50% من الزيارات إلى الواجهة الغربية. لقد أضفنا أيضًا قيمة عنوان الاستجابة:{test} والتي ستظهر في جميع الردود. وأخيرًا، أضفنا ضرورة انعكاس جميع الزيارات على خدمة الخلفية المركزية. يتم تكرار عدد الزيارات وإرسالها هنا لأغراض الاختبار فقط.
احفظ المثال كملف 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"
لإدخال بروتوكول النقل الآمن في الجهاز الافتراضي الذي سننشئ حركة عليه، عليك أولاً إنشاء قاعدة جدار حماية تتيح حركة مرور بروتوكول النقل الآمن إلى الجهاز الافتراضي.
من 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 الذي ستستخدمه لإنشاء Load
من 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، ضمن قائمة "التنقل"، انقر على "خدمات الشبكة" > توزيع الحمل اختَر web-map-http لجهاز موازنة الحمل. انتقل إلى علامة التبويب "المراقبة" وستتمكن من رؤية الرسم البياني التالي.
ستتمكن من رؤية تقسيم حركة المرور في الوقت الفعلي على MIG. يتم تقسيم عدد الزيارات بالتساوي لأنك ضبطت تقسيمًا مستديرًا بنسبة 50/50.
للتأكّد من عمل سياسة النسخ المطابق للزيارات التي أنشأتها، عليك التحقّق من استخدام مجموعة المثيلات المُدارة للخدمة الخلفية المركزية. للقيام بذلك، انتقل إلى الحوسبة، ومحرك الحوسبة، ومجموعات المثيلات، وحدد us-central1-mig. بعد ذلك، انتقِل إلى علامة التبويب "المراقبة".
ستظهر لك رسوم بيانية مُكتمِلة لتوضيح أنّ الزيارات قد تم عكسها إلى مجموعة المثيلات المُدارة هذه.
إيقاف الحصار
الآن بعد أن أوضحت نجاح العملية المتقدمة لتقسيم الزيارات، حان الوقت لإيقاف الحصار. لإجراء ذلك، ارجع إلى محطة بروتوكول النقل الآمن في 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. تهانينا!
لقد أكملت الدرس التطبيقي حول الترميز External HTTPs LB مع "إدارة عدد الزيارات المتقدمة" (Envoy).
النقاط التي تناولناها
- كيفية إعداد مجموعة مثيل مُدار وقواعد جدار الحماية وسحابة VPC المرتبطة
- كيفية استخدام ميزات إدارة الزيارات المتقدّمة في جهاز موازنة الحمل الجديد
- كيفية التحقّق من أنّ الميزات المتقدّمة لإدارة عدد الزيارات تعمل على النحو المطلوب
الخطوات التالية
- تجربة بعض ميزات التوجيه المتقدمة الأخرى، مثل إعادة كتابة عناوين URL وإضافة عناوين CORS وغيرها ( رابط)