انتقال متعادل کننده بار شبکه از استخرهای هدف به خدمات باطنی منطقه ای

1. مقدمه

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

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

  • مزایای خدمات پشتیبان منطقه ای را درک کنید
  • یک متعادل کننده بار شبکه با استخرهای هدف ایجاد کنید
  • اعتبار سنجی استخر هدف را انجام دهید
  • با استفاده از گروه های نمونه مدیریت نشده، یک سرویس باطن منطقه ای ایجاد کنید
  • انتقال سرویس Pool به Backend را انجام دهید
  • اعتبار سنجی خدمات باطن را انجام دهید

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

  • تجربه با بار متعادل کننده ها

2. خدمات باطن منطقه ای برای شبکه Load Balancing نمای کلی

با Network Load Balancing ، مشتریان Google Cloud ابزار قدرتمندی برای توزیع ترافیک خارجی بین ماشین‌های مجازی در منطقه Google Cloud دارند. به منظور آسان‌تر کردن مدیریت ترافیک ورودی و کنترل نحوه رفتار متعادل‌کننده بار، ما اخیراً پشتیبانی از خدمات پشتیبان را به Network Load Balancing اضافه کرده‌ایم. این مقیاس، سرعت، عملکرد و انعطاف‌پذیری بهبود یافته‌ای را برای مشتریان ما در استقرار آنها فراهم می‌کند - همه به روشی آسان برای مدیریت.

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

3. مزایای خدمات پشتیبان منطقه ای

انتخاب یک سرویس پشتیبان منطقه ای به عنوان متعادل کننده بار، مزایای زیادی را برای محیط شما به ارمغان می آورد.

267db35a58145be.png

خارج از دروازه، خدمات پشتیبان منطقه ای ارائه می دهند:

  • بررسی سلامت با وفاداری بالا با بررسی سلامت یکپارچه - با خدمات باطن منطقه‌ای، اکنون می‌توانید از ویژگی‌های بررسی سلامت متعادل‌سازی بار استفاده کنید و خود را از محدودیت‌های بررسی‌های بهداشتی قدیمی HTTP رها کنید. به دلایل انطباق، بررسی‌های سلامت TCP با پشتیبانی از رشته‌های درخواست سفارشی و پاسخ یا HTTPS یک درخواست متداول برای مشتریان شبکه Load Balancing بود.
  • انعطاف‌پذیری بهتر با گروه‌های شکست - با گروه‌های شکست، می‌توانید یک گروه نمونه را به‌عنوان اولیه و دیگری را به‌عنوان ثانویه تعیین کنید و زمانی که سلامت نمونه‌های گروه فعال از آستانه خاصی پایین‌تر رفت، ترافیک را با شکست مواجه کنید. برای کنترل بیشتر بر روی مکانیسم شکست، می‌توانید از عاملی مانند نگهدارنده یا ضربان ساز استفاده کنید و یک بررسی سلامت سالم یا ناموفق را بر اساس تغییرات وضعیت نمونه پشتیبان در معرض نمایش قرار دهید.
  • مقیاس پذیری و در دسترس بودن بالا با گروه های نمونه مدیریت شده - خدمات باطن منطقه ای از گروه های نمونه مدیریت شده به عنوان باطن پشتیبانی می کنند. اکنون می‌توانید یک الگو برای نمونه‌های ماشین مجازی پشتیبان خود تعیین کنید و از مقیاس خودکار بر اساس استفاده از CPU یا سایر معیارهای نظارتی استفاده کنید.

علاوه بر موارد فوق، شما می توانید از مزایای Connection Draining برای پروتکل اتصال گرا (TCP) و زمان برنامه نویسی سریعتر برای استقرارهای بزرگ استفاده کنید.

توپولوژی شبکه Codelab

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

انتقال به یک سرویس پشتیبان منطقه‌ای به شما امکان می‌دهد از ویژگی‌هایی مانند بررسی‌های سلامت غیر قدیمی (برای TCP، SSL، HTTP، HTTPS، و HTTP/2)، گروه‌های نمونه مدیریت‌شده، تخلیه اتصال ، و خط‌مشی failover بهره ببرید.

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

b2ac8a09e53e27f8.png

قبل: تعادل بار شبکه با یک استخر هدف

استقرار متعادل کننده بار شبکه مبتنی بر خدمات باطن شما به این شکل خواهد بود.

f628fdad64c83af3.png

بعد: تعادل بار شبکه با یک سرویس باطن منطقه ای

این مثال فرض می کند که شما یک متعادل کننده بار شبکه مبتنی بر استخر هدف سنتی با دو نمونه در منطقه us-central-1a و 2 نمونه در منطقه us-central-1c دارید.

مراحل سطح بالا مورد نیاز برای چنین انتقالی عبارتند از:

  1. نمونه های استخر هدف خود را در گروه های نمونه گروه بندی کنید. سرویس های Backend فقط با گروه های نمونه مدیریت شده یا مدیریت نشده کار می کنند. توجه داشته باشید که در حالی که هیچ محدودیتی برای تعداد نمونه‌هایی که می‌توانند در یک مجموعه هدف قرار گیرند وجود ندارد، گروه‌های نمونه دارای حداکثر اندازه هستند. اگر استخر هدف شما بیش از این حداکثر تعداد نمونه دارد، باید باطن آن را در چند گروه نمونه تقسیم کنید. اگر استقرار فعلی شما شامل یک مجموعه هدف پشتیبان است، یک گروه نمونه جداگانه برای آن نمونه ها ایجاد کنید. این گروه نمونه به عنوان یک گروه شکستی پیکربندی خواهد شد.
  2. یک سرویس باطن منطقه ای ایجاد کنید. اگر استقرار شما شامل یک مخزن هدف پشتیبان است، باید هنگام ایجاد سرویس Backend نسبت Failover را مشخص کنید. این باید با نسبت شکستی که قبلاً برای استقرار استخر هدف پیکربندی شده است مطابقت داشته باشد.
  3. گروه های نمونه (ایجاد شده قبلی) را به سرویس پشتیبان اضافه کنید. اگر استقرار شما شامل یک استخر هدف پشتیبان است، هنگام افزودن آن به سرویس باطن، گروه نمونه خطای مربوطه را با یک پرچم –failover علامت بزنید.
  4. یک قانون حمل و نقل را پیکربندی کنید که به سرویس باطن جدید اشاره می کند. شما در اینجا 2 گزینه دارید:
  • (توصیه می شود) قانون حمل و نقل موجود را برای اشاره به سرویس backend به روز کنید. یا
  • یک فوروارد جدید ایجاد کنید که به سرویس Backend اشاره می کند. این امر مستلزم ایجاد یک آدرس IP جدید برای قسمت جلویی load balancer است. سپس تنظیمات DNS خود را تغییر دهید تا به طور یکپارچه از آدرس IP قدیمی متعادل کننده بار مبتنی بر استخر به آدرس IP جدید منتقل شوید.

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID نامیده خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورت‌حساب را در Cloud Console فعال کنید .

اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعمل‌های موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه می‌کند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورت‌حساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

وارد cloudshell شوید و 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

نمونه های مدیریت نشده ایجاد کنید

ایجاد 2 نمونه در هر منطقه، us-central1-a و us-central1-c

از Cloud Shell نمونه 1 را ایجاد کنید

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"

از Cloud Shell نمونه 2 را ایجاد کنید

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"

از Cloud Shell نمونه 3 را ایجاد کنید

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"

از Cloud Shell نمونه 4 را ایجاد کنید

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"

یک قانون فایروال ایجاد کنید تا ترافیک خارجی به این نمونه های VM مجاز شود

از 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 frontend را با انتخاب Load Balancers → Frontends (www-rule) شناسایی کنید.

از دستور 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

اعتبارسنجی قانون حمل و نقل frontend اکنون با متعادل کننده بار "my-backend-service" مرتبط است

Load Balancer → Frontends را انتخاب کنید

توجه داشته باشید که آدرس IP نام قانون "www-rule" حفظ شده است و متعادل کننده بار "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. تبریک می گویم!

برای تکمیل کد لبه تبریک می گویم.

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

  • مزایای خدمات پشتیبان منطقه ای را درک کنید
  • یک متعادل کننده بار شبکه با استخرهای هدف ایجاد کنید
  • اعتبار سنجی استخر هدف را انجام دهید
  • با استفاده از گروه های نمونه مدیریت نشده، یک سرویس باطن منطقه ای ایجاد کنید
  • انتقال سرویس Pool به Backend را انجام دهید
  • اعتبار سنجی خدمات باطن را انجام دهید