HTTP های خارجی LB با Codelab مدیریت ترافیک پیشرفته (Envoy).

1. معرفی

به LB HTTP های خارجی با Codelab مدیریت ترافیک پیشرفته (Envoy) خوش آمدید!

آخرین نسخه HTTP(S) External Load Balancer با مدیریت ترافیک پیشرفته شامل تمام ویژگی‌های Load Balancer خارجی HTTP(S) کلاسیک ما است، اما با فهرستی از قابلیت‌های مدیریت ترافیک پیشرفته. برخی از این قابلیت‌ها برای Load Balancers جدید هستند و برخی ویژگی‌های پیشرفته‌تر را برای قابلیت‌های موجود فراهم می‌کنند. فهرست جزئی از این قابلیت ها عبارتند از:

چیزی که یاد خواهید گرفت

  • نحوه راه اندازی یک گروه نمونه مدیریت شده و قوانین VPC و فایروال مرتبط
  • نحوه استفاده از ویژگی های پیشرفته مدیریت ترافیک بار متعادل کننده جدید
  • چگونه می توان تأیید کرد که ویژگی های پیشرفته مدیریت ترافیک همانطور که در نظر گرفته شده است کار می کنند.

آنچه شما نیاز دارید

  • شبکه های اولیه و دانش HTTP
  • دانش اولیه خط فرمان یونیکس/لینوکس

توپولوژی Codelab و مورد استفاده

bfc43fd0ca39047a.png

شکل 1 - توپولوژی مسیریابی بار متعادل کننده بار HTTP

در طول این آزمایشگاه کد، سه گروه نمونه مدیریت شده، یکی در شرق، غرب و مرکزی راه اندازی خواهید کرد. شما یک بار متعادل کننده جهانی https خارجی ایجاد خواهید کرد. متعادل کننده بار از چندین ویژگی از لیست قابلیت های پیشرفته ای که متعادل کننده بار مبتنی بر فرستاده پشتیبانی می کند استفاده می کند. پس از استقرار، مقداری بار شبیه سازی شده ایجاد می کنید و بررسی می کنید که تنظیماتی که تنظیم کرده اید به درستی کار می کنند.

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
  • یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعمل‌های «پاک‌سازی» را که در انتهای Codelab یافت می‌شود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

bce75f34b2c53987.png

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

f6ef2b5f13479f3a.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.

قبل از اینکه شروع کنی

در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

پروژه لیست پیکربندی gcloud

پروژه مجموعه پیکربندی gcloud [YOUR-PROJECT-NAME]

PROJECT_ID=[نام پروژه شما]

پژواک $PROJECT_ID

API ها را فعال کنید

تمام خدمات لازم را فعال کنید

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 خارجی وب سایت برنامه آزمایشی در پورت 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 Load Balancer باشد. ابتدا نمونه‌هایی را ایجاد می‌کنیم که پیکربندی ماشین‌های مجازی را برای هر منطقه تعریف می‌کنند. در مرحله بعد، برای یک Backend در هر منطقه، یک Managed Instance Group ایجاد می کنیم که به یک 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

بررسی عملکرد وب سرور

هر نمونه برای اجرای یک وب سرور آپاچی با یک اسکریپت ساده PHP پیکربندی شده است که رندر می کند:

a6ab2f8c3b5d5680.png

برای اطمینان از اینکه سرورهای وب شما به درستی کار می کنند، به Compute Engine -> Instances VM بروید. اطمینان حاصل کنید که نمونه های جدید شما (به عنوان مثال us-east1-mig-xxx) مطابق با تعاریف گروه نمونه آنها ایجاد شده است.

اکنون، یک درخواست وب در مرورگر خود از آن بنویسید تا مطمئن شوید که سرور وب در حال اجرا است (این ممکن است یک دقیقه طول بکشد تا شروع شود). در صفحه نمونه های VM در زیر Compute Engine، نمونه ای را انتخاب کنید که توسط گروه نمونه خود ایجاد شده است و روی IP خارجی (عمومی) آن کلیک کنید.

یا در مرورگر خود به http://<IP_Address> بروید

5. Load Balancer را راه اندازی کنید

ایجاد چک سلامت

ابتدا باید یک بررسی بهداشتی اساسی ایجاد کنیم تا مطمئن شویم که خدمات ما با موفقیت راه اندازی و اجرا می شود. ما یک بررسی اولیه سلامت ایجاد خواهیم کرد، سفارشی سازی های پیشرفته تری در دسترس است.

از Cloud Shell

gcloud compute health-checks create http http-basic-check \
    --port 80

رزرو آدرس IP خارجی

برای این مرحله باید یک آدرس IP ثابت جهانی را رزرو کنید که بعداً به Load Balancer متصل می شود.

از 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

خدمات Backend ایجاد کنید

اکنون باید برای هر یک از گروه‌های نمونه مدیریت شده که قبلا ایجاد کرده‌ایم یک سرویس Backend ایجاد کنیم. یکی برای شرق، غرب و مرکز.

ایجاد یک سرویس پشتیبان برای گروه نمونه مدیریت شده شرق.

از Cloud Shell

gcloud beta 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 beta 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 beta compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

MIG ها را به خدمات Backend اضافه کنید

اکنون که خدمات پشتیبان مربوطه را برای هر خوشه برنامه ایجاد کرده‌ایم، اکنون باید گروه‌های نمونه مدیریت شده را که قبلاً ایجاد کرده‌ایم به هر سرویس باطنی اضافه کنیم.

East MIG را به سرویس Backend اضافه کنید.

از Cloud Shell

gcloud beta 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 را به سرویس Backend اضافه کنید.

از Cloud Shell

gcloud beta compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

West MIG را به سرویس Backend اضافه کنید.

از Cloud Shell

gcloud beta 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 و 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 beta compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

HTTP Frontend ایجاد کنید

آخرین مرحله در ایجاد تعادل بار، ایجاد قسمت جلویی است. این نشانی IP را که قبلا رزرو کرده بودید به نقشه URL متعادل کننده بار که ایجاد کردید نگاشت می کند.

از Cloud Shell

gcloud beta compute target-http-proxies create http-lb-proxy-adv \
    --url-map=web-map-http

در مرحله بعد باید یک قانون حمل و نقل جهانی ایجاد کنید که آدرس IP رزرو شده قبلی را به پروکسی HTTP ترسیم می کند.

از Cloud Shell

gcloud beta 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. بررسی کنید که ویژگی های پیشرفته ترافیک کار می کنند

برای تأیید اینکه ویژگی تقسیم ترافیک پیاده سازی شده کار می کند، باید مقداری بار ایجاد کنید. برای این کار ما یک VM جدید برای شبیه سازی بار ایجاد می کنیم.

قانون Allow SSH Firewall را ایجاد کنید

برای SSH به VM که ما از شما ترافیک تولید می کنیم، ابتدا باید یک قانون فایروال ایجاد کنید که به ترافیک 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 را در VMی که ایجاد کرده اید 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، در منوی Navigation، روی Network Services > Load Balance کلیک کنید. روی Backends کلیک کنید. همانطور که در تصویر زیر مشاهده می کنید، روی منوی پیشرفته کلیک کنید.

b40b0a9f0373f907.png

به تب Backend Services بروید و east-backend-service را انتخاب کنید

6972d9d311ed2b5c.png

شما می توانید تقسیم ترافیک را در زمان واقعی به این MIG مشاهده کنید. به نرخ توجه داشته باشید، می توانید در یک لحظه آن را با سرویس West-backend-Service مقایسه کنید.

b1301b304c461069.png

به طور مشابه به سرویس west-backend-service بروید. همچنین باید شاهد جریان یافتن ترافیک به این سرویس باشید. نرخ باید مشابه چیزی باشد که در سرویس east-backend-service مشاهده کردید، زیرا یک تقسیم ترافیک 50/50 را پیکربندی کرده اید.

1674c04b73ea2e00.png

برای بررسی اینکه آیا خط مشی انعکاسی ترافیکی که ایجاد کرده اید کار می کند، باید میزان استفاده از گروه نمونه مدیریت شده با سرویس مرکزی پشتیبان را بررسی کنید. برای انجام این کار، به محاسبات، موتور محاسباتی، گروه‌های نمونه بروید و us-central1-mig را انتخاب کنید. در مرحله بعد به برگه مانیتورینگ بروید.

4cf569efb3ba3c2b.png

نمودارهای پر شده را خواهید دید که نشان می دهد ترافیک به این گروه نمونه مدیریت شده منعکس شده است.

محاصره را متوقف کنید

اکنون که نشان دادید تقسیم ترافیک پیشرفته کار می کند، زمان توقف محاصره فرا رسیده است. برای انجام این کار به ترمینال SSH siege-vm برگردید و CTRL+C را فشار دهید تا عملیات محاصره متوقف شود.

تایید هدر پاسخ در حال ارسال

قبل از تمیز کردن، می توانید به سرعت تأیید کنید که سرصفحه پاسخ مناسب توسط متعادل کننده بار http ارسال شده است. شما آن را برای ارسال تست سرصفحه با مقدار محتوا پیکربندی کرده بودید. اجرای دستور curl از پوسته ابری پاسخ مورد انتظار را خواهد داد.

از 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

gcloud alpha compute forwarding-rules delete http-content-rule --global
gcloud alpha compute target-http-proxies delete http-lb-proxy-adv
gcloud alpha compute url-maps delete web-map-http
gcloud alpha compute backend-services delete east-backend-service --global
gcloud alpha compute backend-services delete west-backend-service --global
gcloud alpha 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. تبریک!

شما LB HTTP های خارجی را با Advanced Traffic Management (Envoy) Codelab تکمیل کرده اید!

آنچه را پوشش داده ایم

  • نحوه راه اندازی یک گروه نمونه مدیریت شده و قوانین VPC و فایروال مرتبط
  • نحوه استفاده از ویژگی های پیشرفته مدیریت ترافیک بار متعادل کننده جدید
  • چگونه می توان تأیید کرد که ویژگی های پیشرفته مدیریت ترافیک همانطور که در نظر گرفته شده است کار می کنند.

مراحل بعدی

  • برخی از دیگر ویژگی های مسیریابی پیشرفته مانند بازنویسی URL، افزودن سرصفحه CORS و بسیاری موارد دیگر را امتحان کنید ( پیوند )