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

۱. مقدمه

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

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

  • تقسیم ترافیک وزن‌دار
  • درخواست آینه‌سازی
  • تشخیص داده‌های پرت
  • درخواست تلاش مجدد
  • تزریق خطا
  • گزینه‌های اضافی وابستگی به جلسه در بک‌اند
  • گزینه‌های اضافی برای تبدیل هدر
  • اشتراک‌گذاری منابع بین مبدا (CORS)
  • الگوریتم‌های جدید متعادل‌سازی بار

آنچه یاد خواهید گرفت

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

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

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

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

dd8bd5e8e1341878.png

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

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

۲. تنظیمات و الزامات

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

شروع پوسته ابری

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه کد را می‌توان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.

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

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

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

پروژه مجموعه پیکربندی gcloud [نام پروژه شما]

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

اکو $PROJECT_ID

فعال کردن APIها

فعال کردن تمام سرویس‌های لازم

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

۳. شبکه VPC را ایجاد کنید

ایجاد شبکه VPC

از پوسته ابری

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 استفاده خواهد شد.

از پوسته ابری

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

۴. گروه‌های نمونه مدیریت‌شده را تنظیم کنید

شما باید گروه‌های نمونه مدیریت‌شده (Managed Instance Groups) را تنظیم کنید که شامل الگوهایی برای منابع backend مورد استفاده توسط HTTP Load Balancer باشد. ابتدا قالب‌های نمونه (Instance Templates) را ایجاد می‌کنیم که پیکربندی ماشین‌های مجازی (VM) ایجاد شده برای هر منطقه را تعریف می‌کنند. در مرحله بعد، برای یک backend در هر منطقه، یک گروه نمونه مدیریت‌شده (Managed Instance Group) ایجاد می‌کنیم که به یک قالب نمونه (Instance Template) ارجاع می‌دهد.

گروه‌های نمونه مدیریت‌شده می‌توانند از نظر دامنه، منطقه‌ای یا منطقه‌ای باشند. برای این تمرین آزمایشگاهی، سه گروه نمونه مدیریت‌شده منطقه‌ای ایجاد خواهیم کرد، یکی در us-east1، یکی در us-west1 و یکی در us-central1.

در این بخش، می‌توانید یک اسکریپت راه‌اندازی از پیش ایجاد شده را مشاهده کنید که هنگام ایجاد نمونه به آن ارجاع داده خواهد شد. این اسکریپت راه‌اندازی، قابلیت‌های وب سرور را نصب و فعال می‌کند که ما برای شبیه‌سازی یک برنامه وب از آنها استفاده خواهیم کرد. می‌توانید این اسکریپت را بررسی کنید.

ایجاد الگوهای نمونه شرقی، غربی و مرکزی

اولین قدم، ایجاد الگوی نمونه us-east-1 است.

از پوسته ابری

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 است.

از پوسته ابری

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 است.

از پوسته ابری

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 زیر، ایجاد موفقیت‌آمیز الگوهای نمونه ما را تأیید کنید:

از پوسته ابری

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

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

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

از پوسته ابری

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

از پوسته ابری

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

از پوسته ابری

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 زیر، ایجاد موفقیت‌آمیز گروه‌های نمونه خود را تأیید کنیم:

از پوسته ابری

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 اجرا کند که موارد زیر را رندر می‌کند:

c87ca81d3125ac61.png

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

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

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

۵. تنظیم متعادل‌کننده بار

ایجاد بررسی سلامت

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

از پوسته ابری

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

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

برای این مرحله، شما باید یک آدرس IP استاتیک جهانی رزرو کنید که بعداً به متعادل‌کننده بار متصل خواهد شد.

از پوسته ابری

gcloud compute addresses create lb-ipv4-2 \
    --ip-version=IPV4 \
    --global

حتماً آدرس IP رزرو شده را یادداشت کنید.

gcloud compute addresses describe lb-ipv4-2 \
    --format="get(address)" \
    --global

ایجاد سرویس‌های بک‌اند

حالا باید برای هر یک از گروه‌های نمونه مدیریت‌شده‌ای که قبلاً ایجاد کردیم، یک سرویس backend ایجاد کنیم. یکی برای East، West و Central.

ایجاد یک سرویس backend برای گروه نمونه مدیریت‌شده East.

از پوسته ابری

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

ایجاد یک سرویس backend برای گروه نمونه مدیریت‌شده در غرب.

از پوسته ابری

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

ایجاد یک سرویس backend برای گروه نمونه مدیریت‌شده Central.

از پوسته ابری

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 ها به سرویس های Backend

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

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

از پوسته ابری

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 به سرویس backend.

از پوسته ابری

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 به سرویس backend.

از پوسته ابری

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 تحت تأثیر این پیکربندی‌ها قرار خواهد گرفت. ما مشخص کرده‌ایم که ۵۰٪ از ترافیک باید به east-backend-service و ۵۰٪ از ترافیک باید به 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 را ذخیره می‌کنید، متفاوت خواهد بود.

از پوسته ابری

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

ایجاد رابط کاربری HTTP

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

از پوسته ابری

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

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

از پوسته ابری

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

۶. تأیید کنید که ویژگی‌های پیشرفته ترافیک کار می‌کنند

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

ایجاد قانون فایروال Allow SSH

برای اینکه بتوانیم از طریق SSH به ماشین مجازی که قرار است از آن ترافیک ایجاد کنیم، متصل شویم، ابتدا باید یک قانون فایروال ایجاد کنیم که امکان عبور ترافیک SSH را به ماشین مجازی فراهم کند.

از پوسته ابری

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 را ایجاد خواهید کرد که برای تولید بار از آن استفاده خواهید کرد.

از پوسته ابری

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 رزرو کرده‌اید، استفاده کنید.

از پوسته ابری

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 در حال اجرا است، زمان آن رسیده است که بررسی کنید ترافیک به طور مساوی بین گروه‌های نمونه مدیریت‌شده شرقی و غربی توزیع می‌شود، علاوه بر این می‌توانید بررسی کنید که آیا انعکاس ترافیک کار می‌کند و ترافیک به گروه نمونه مدیریت‌شده مرکزی ارسال می‌شود یا خیر.

در کنسول ابری، در منوی ناوبری، روی Network Services > Load balancing کلیک کنید. گزینه web-map-http را برای متعادل‌سازی بار انتخاب کنید. به تب Monitoring بروید تا نمودار زیر را مشاهده کنید.

f4d6803db44be253.png

شما قادر خواهید بود تقسیم ترافیک را به صورت بلادرنگ برای این MIG مشاهده کنید. ترافیک به طور مساوی تقسیم شده است زیرا شما تقسیم رابین را به صورت 50/50 چرخشی پیکربندی کرده‌اید.

برای بررسی اینکه سیاست انعکاس ترافیکی که ایجاد کرده‌اید کار می‌کند، باید میزان استفاده از گروه نمونه مدیریت‌شده central-backend-service را بررسی کنید. برای انجام این کار، به بخش compute، سپس compute engine، سپس instance groups بروید و us-central1-mig را انتخاب کنید. سپس، به تب monitoring بروید.

cf25e44d511529e7.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

۷. تمیز کردن آزمایشگاه

حالا که کارمان با محیط آزمایشگاهی تمام شد، وقت آن رسیده که آن را از بین ببریم. لطفاً دستورات زیر را برای حذف محیط آزمایشی اجرا کنید.

از پوسته ابری

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 

۸. تبریک می‌گویم!

شما دوره آموزشی External HTTPs LB را با Advanced Traffic Management (Envoy) Codelab به پایان رسانده‌اید!

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

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

مراحل بعدی

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