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

۱. مقدمه

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

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

  • مزایای سرویس‌های بک‌اند منطقه‌ای را درک کنید
  • ایجاد یک متعادل‌کننده بار شبکه با استفاده از مخازن هدف
  • اعتبارسنجی استخر هدف را انجام دهید
  • ایجاد یک سرویس backend منطقه‌ای با استفاده از گروه‌های نمونه مدیریت نشده
  • انجام انتقال سرویس از مخزن هدف به سرویس بک‌اند
  • اعتبارسنجی سرویس‌های backend را انجام دهید

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

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

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

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

اکنون ما از سرویس‌های backend با Network Load Balancing پشتیبانی می‌کنیم - که پیشرفت قابل توجهی نسبت به رویکرد قبلی، target pools ، است. یک سرویس backend نحوه توزیع ترافیک ورودی توسط load balancerها را به backendهای متصل تعریف می‌کند و کنترل دقیقی بر نحوه رفتار load balancer ارائه می‌دهد.

۳. مزایای خدمات بک‌اند منطقه‌ای

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

267db35a58145be.png

سرویس‌های بک‌اند منطقه‌ای، از همان ابتدا موارد زیر را ارائه می‌دهند:

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

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

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

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

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

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

b2ac8a09e53e27f8.png

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

پیاده‌سازی متعادل‌کننده بار شبکه مبتنی بر سرویس در بک‌اند شما به این شکل خواهد بود.

f628fdad64c83af3.png

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

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

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

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

  1. در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .

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

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

وارد cloudshell شوید و projectid خود را تنظیم کنید

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

۴. ایجاد شبکه VPC

شبکه VPC

از پوسته ابری

gcloud compute networks create network-lb --subnet-mode custom

ایجاد زیرشبکه

از پوسته ابری

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

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

از پوسته ابری

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

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

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

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

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

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

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

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"

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

از پوسته ابری

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 خارجی استاتیک برای متعادل‌کننده بار خود ایجاد کنید

از پوسته ابری

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

یک منبع بررسی سلامت HTTP قدیمی اضافه کنید

از پوسته ابری

gcloud compute http-health-checks create basic-check

۵. ایجاد قانون ارسال و مخزن هدف

ایجاد یک مجموعه هدف

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

اعتبارسنجی عملکرد استخر هدف

با انتخاب Load Balancers → Frontends (www-rule) آدرس IP سمت سرور را شناسایی کنید.

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

while true; do curl -m1 IP_ADDRESS; done

۶. انتقال متعادل‌کننده بار شبکه از مخزن هدف به سرویس backend

بررسی‌های سلامت یکپارچه برای سرویس backend خود ایجاد کنید

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

یک سرویس backend ایجاد کنید و آن را با بررسی‌های سلامت تازه ایجاد شده مرتبط کنید.

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

سرویس backend خود را پیکربندی کنید و گروه‌های نمونه را اضافه کنید

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

به‌روزرسانی قانون ارسال موجود برای پشتیبانی از سرویس‌های backend

با انجام موارد زیر، نام قانون ارسال 'www-rule' و آدرس IP مرتبط را یادداشت کنید:

انتخاب متعادل‌کننده بار → فرانت‌اندها

همچنین، به چهار استخر هدف اشاره شد

متعادل‌کننده بار را انتخاب کنید → 'www-pool' را انتخاب کنید

با به‌روزرسانی قانون ارسال موجود، ترافیک را به سرویس‌های backend هدایت کنید

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

تأیید کنید که متعادل‌کننده بار «www-pool» دیگر با ظاهر «www-rule» پیکربندی نشده باشد (به تصویر زیر مراجعه کنید)

انتخاب متعادل‌کننده بار → www-pool

9a393b3ca4e0942c.png

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

انتخاب متعادل‌کننده بار → فرانت‌اندها

توجه داشته باشید که آدرس IP مربوط به نام قانون 'www-rule' حفظ شده و متعادل‌کننده بار 'my-backend-service' اکنون در حال استفاده است.

از دستور curl در ترمینال ایستگاه کاری خود برای دسترسی به آدرس IP خارجی و مشاهده‌ی تعادل بار در سرویس backend جدید مرتبط استفاده کنید. پس از تأیید، ترمینال را ببندید.

while true; do curl -m1 IP_ADDRESS; done

۷. مراحل تمیز کردن

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

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

تبریک می‌گویم که آزمایشگاه کد را تمام کردی.

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

  • مزایای سرویس‌های بک‌اند منطقه‌ای را درک کنید
  • ایجاد یک متعادل‌کننده بار شبکه با استفاده از مخازن هدف
  • اعتبارسنجی استخر هدف را انجام دهید
  • ایجاد یک سرویس backend منطقه‌ای با استفاده از گروه‌های نمونه مدیریت نشده
  • انجام انتقال سرویس از مخزن هدف به سرویس بک‌اند
  • اعتبارسنجی سرویس‌های backend را انجام دهید