استفاده از HTTP(های) خارجی متعادل کننده بار هیبریدی برای رسیدن به یک گروه نقطه پایانی شبکه

1. معرفی

یک استراتژی ترکیبی یک راه حل عملی برای سازگاری شما با تقاضاهای در حال تغییر بازار و مدرن سازی تدریجی برنامه های خود است. پشتیبانی ترکیبی برای متعادل‌کننده‌های بار HTTP(های) خارجی و داخلی Google Cloud، توازن بار ابری را به پشتیبان‌هایی که در داخل پرم و در دیگر ابرها قرار دارند گسترش می‌دهد و یک عامل کلیدی برای استراتژی ترکیبی شما است. این ممکن است موقتی باشد تا امکان مهاجرت به یک راه حل مبتنی بر ابر مدرن یا یک تعمیر دائمی زیرساخت فناوری اطلاعات سازمان شما را فراهم کند.

3312e69c63b02f73.png

در این آزمایشگاه، نحوه ایجاد یک گروه نقطه پایانی شبکه (NEG) با استفاده از دو ماشین مجازی قابل دسترسی از یک HTTP(ها) خارجی Global Load Balancer را خواهید آموخت. اگرچه NEG در آزمایشگاه در GCP است، اما از همین رویه برای برقراری ارتباط با منابع عمومی یا داخلی با قابلیت دسترسی IP استفاده می‌شود.

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

  • یک VPC سفارشی ایجاد کنید
  • ایجاد دو ماشین مجازی (VM) که به عنوان یک گروه نقطه پایانی شبکه (NEG) استفاده می شود.
  • ایجاد تعادل بار هیبریدی، خدمات باطن و بررسی سلامت مرتبط
  • یک قانون فایروال ایجاد کنید که اجازه دسترسی به Load Balancer را می دهد
  • Cloud Router و NAT ایجاد خواهند شد تا امکان به روز رسانی بسته از اینترنت را فراهم کنند
  • قابلیت دسترسی گروه نقطه پایانی شبکه را تأیید کنید

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

  • آشنایی با بار متعادل کننده ها

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • نام پروژه شناسه شخصی شما برای این پروژه است. تا زمانی که از قراردادهای نامگذاری آن پیروی کنید، می توانید از هر چیزی که می خواهید استفاده کنید و می توانید آن را در هر زمان به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). کنسول 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 اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.

2. قبل از شروع

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

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

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

3. یک شبکه VPC حالت سفارشی جدید ایجاد کنید

در این کار، یک ابر خصوصی مجازی (VPC)، پایه و اساس شبکه ایجاد خواهید کرد.

شبکه VPC

از Cloud Shell

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

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

از Cloud Shell

gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1

نمونه Cloud NAT را ایجاد کنید

اگرچه برای شبکه های ترکیبی الزامی نیست، نمونه محاسباتی به اتصال اینترنت برای دانلود برنامه ها و به روز رسانی ها نیاز دارد.

در این کار، یک نمونه Cloud Router و NAT ایجاد می کنید که امکان اتصال اینترنت به نمونه های VM را فراهم می کند.

ایجاد Cloud Router

از Cloud Shell

gcloud compute routers create crnat --network hybrid-network-lb --region us-west1

Cloud NAT را ایجاد کنید

از Cloud Shell

gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1

4. دو نمونه VM ایجاد کنید

در این کار، دو نمونه VM در حال اجرا Apache ایجاد می‌کنید، بعداً در آزمایشگاه، این نمونه‌های VM به یک Network Endpoint Group (NEG) تبدیل می‌شوند.

از Cloud Shell اولین نمونه on-prem، on-prem-neg-1 ایجاد کنید

gcloud compute instances create on-prem-neg-1 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

از Cloud Shell اولین نمونه on-prem، on-prem-neg-2 ایجاد کنید

gcloud compute instances create on-prem-neg-2 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

5. یک NEG حاوی نقطه پایانی خود را ایجاد کنید

ابتدا یک NEG با نام های on-prem-neg-1 و on-prem-neg-2 ایجاد کنید. همچنین مشخص خواهید کرد که LB باید در نظر داشته باشد که برای اهداف مسیریابی و تعادل بار، این نقاط پایانی در منطقه us-west1-a GCP هستند. ما توصیه می‌کنیم که منطقه پیکربندی‌شده با هر ناحیه مرتبط با ناحیه اتصال Interconnect/Gateway VPN برای اندازه‌گیری‌های تعادل بار مبتنی بر مجاورت که برای متعادل کردن بار استفاده می‌شود، مطابقت داشته باشد.

از Cloud Shell on-prem-neg-1 ایجاد کنید

gcloud compute network-endpoint-groups create on-prem-neg-1 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

از Cloud Shell on-prem-neg-2 ایجاد کنید

gcloud compute network-endpoint-groups create on-prem-neg-2 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

در Codelab، گروه نقطه پایانی شبکه یک نمونه GCE است که Apache را در GCP اجرا می کند. از طرف دیگر، می توانید یک نقطه پایانی داخلی یا اینترنتی را به عنوان نقطه پایانی شبکه خود تعیین کنید

از Cloud Shell آدرس های IP GCE را شناسایی کنید

gcloud compute instances list | grep -i on-prem

گروه نقطه پایانی شبکه را به آدرس IP نمونه GCE که قبلاً در مرحله قبل شناسایی شده بود مرتبط کنید. برای هر نگ، on-prem-neg-1 & on-prem-neg-2.

از Cloud Shell Associate on-prem-neg-1، xxxx را با IP شناسایی شده خود به روز کنید

gcloud compute network-endpoint-groups update on-prem-neg-1 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

از Cloud Shell Associate on-prem-neg-2، xxxx را با IP شناسایی شده خود به روز کنید

gcloud compute network-endpoint-groups update on-prem-neg-2 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

6. http Health-check، سرویس Backend و فایروال را ایجاد کنید

در این مرحله یک سرویس باطن جهانی با نام on-prem-backend-service ایجاد خواهید کرد. این سرویس باطن تعریف می کند که چگونه هواپیمای داده شما ترافیک را به NEG شما ارسال می کند.

ابتدا، یک بررسی سلامت به نام بررسی اولیه سلامتی ایجاد کنید تا سلامت هر نقطه پایانی متعلق به این NEG (یعنی نقطه پایانی در محل شما) را بررسی کنید.

از Cloud Shell

gcloud compute health-checks create http on-prem-health-check

یک سرویس پشتیبان به نام on-prem-backend-service ایجاد کنید و آن را با بررسی سلامت مرتبط کنید.

از Cloud Shell

gcloud compute backend-services create on-prem-backend-service \
    --global \
    --load-balancing-scheme=EXTERNAL \
    --health-checks on-prem-health-check

متعادل کننده بار خارجی HTTP(S) و باطن بررسی های سلامت را از زیرشبکه های 35.191.0.0/16 و 130.211.0.0/22 ​​انجام می دهند. بنابراین، یک قانون فایروال برای اجازه دادن به load-balancer برای مسیریابی باطن مورد نیاز است.

از Cloud Shell

gcloud compute firewall-rules create fw-allow-health-check \
    --network=hybrid-network-lb \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

7. NEG و سرویس Backend را مرتبط کنید

on-prem-neg-1 NEG را به این سرویس backend اضافه کنید

از Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-1 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

on-prem-neg-2 NEG را به این سرویس backend اضافه کنید

از Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-2 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

یک آدرس IP ثابت IPv4 که برای دسترسی به نقطه پایانی شبکه خود استفاده می شود، رزرو کنید

از Cloud Shell

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

ما با پیکربندی CLI تمام شده ایم. بیایید پیکربندی را از Cloud Console تمام کنیم.

8. تعادل بار خارجی HTTP را ایجاد کنید و خدمات باطن را مرتبط کنید

از کنسول ابری به Load Balancing بروید و Create load balancer را انتخاب کنید

تعادل بار HTTP(S) را شناسایی کنید و روی «شروع پیکربندی» کلیک کنید

70ccd168957e89d9.png

در تصویر زیر «از اینترنت به ماشین‌های مجازی من» را انتخاب کنید که امکان دسترسی عمومی به ماشین مجازی شما را فراهم می‌کند

a55cd31dbeadfecc.png

«xlb» را به‌عنوان نام متعادل‌کننده بار وارد کنید و سرویس پشتیبان ایجاد شده قبلی «on-prem-backend-service» را انتخاب کنید و سپس «ok» را در اسکرین شات ارائه شده انتخاب کنید.

f1589df43bf9e3e8.png

پیکربندی Frontend را انتخاب کنید، نام "xlb-fe" را به‌روزرسانی کنید و آدرس IPv4 ثابت ایجاد شده قبلی را انتخاب کنید، اطمینان حاصل کنید که اسکرین شات ارائه شده را منعکس می‌کنید. b47cd48c7c1ccfc3.png

برای مطابقت با اسکرین شات ارائه شده، «بازبینی و نهایی کردن» را انتخاب کنید و ایجاد را انتخاب کنید

bfa39f7dc3ad91e1.png

اعتبار سنجی سلامت Backend

از کنسول ابری اطمینان حاصل کنید که پشتیبان "xlb" سالم، سبز در اسکرین شات ارائه شده است

131bbfc955d6166c.png

9. اعتبار NEG از طریق اینترنت قابل دسترسی است

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

از Cloud Shell

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

خروجی (آدرس IP شما متفاوت خواهد بود)

خروجی از پوسته ابری

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

با استفاده از آدرس IP جلویی بار متعادل کننده جهانی، می توانید به پایانه پایانی شبکه دسترسی پیدا کنید. توجه داشته باشید، در codelab، نقطه پایانی یک نمونه GCE است، اما شما می‌توانید از آن برای مثال در نقاط پایانی داخلی استفاده کنید.

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

از ایستگاه کاری خود یک پیچ در برابر آدرس IP frontend انجام دهید. OK 200 و جزئیات صفحه شامل نام و منطقه نمونه neg را رعایت کنید.

myworkstation$ curl -v 34.96.103.132

* Trying 34.96.103.132...

* TCP_NODELAY set

* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)

> GET / HTTP/1.1

> Host: 34.96.103.132

> User-Agent: curl/7.64.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Tue, 10 Aug 2021 01:21:54 GMT

< Server: Apache/2.4.25 (Debian)

< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT

< ETag: "24-5c929ae7384f4"

< Accept-Ranges: bytes

< Content-Length: 36

< Content-Type: text/html

< Via: 1.1 google

<

Page on on-prem-neg-2 in us-west1-a

* Connection #0 to host 34.96.103.132 left intact

* Closing connection 0

تبریک می گوییم، شما با موفقیت یک متعادل کننده بار هیبریدی L7 را با NEG به کار گرفته اید

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

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

  • یک VPC سفارشی ایجاد کنید
  • ایجاد دو ماشین مجازی (VM) که به عنوان یک گروه نقطه پایانی شبکه (NEG) استفاده می شود.
  • ایجاد تعادل بار هیبریدی، خدمات باطن و بررسی سلامت مرتبط
  • یک قانون فایروال ایجاد کنید که اجازه دسترسی به Load Balancer را می دهد
  • قابلیت دسترسی گروه نقطه پایانی شبکه را تأیید کنید

10. مراحل پاکسازی

از رابط کاربری Cloud Console، متعادل کننده بار "xlb" را شناسایی کرده و علامت بزنید و حذف از طریق خدمات شبکه ← Load Balancing را انتخاب کنید. پس از انتخاب، «سرویس پشتیبان داخلی» و «بررسی سلامت در محل» را علامت بزنید و سپس حذف را انتخاب کنید.

53d7463fe354fe66.png

از Cloud Console UI به Compute Engine → Network Endpoint Groups بروید. پس از انتخاب، «on-prem-neg-1» و «on-prem-neg-2» را علامت بزنید و سپس حذف را انتخاب کنید.

4d8f04264b44d03c.png

از پوسته ابر اجزای آزمایشگاه را حذف کنید

gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet

gcloud compute routers delete crnat  --region us-west1 --quiet

gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet

gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet

gcloud compute firewall-rules delete fw-allow-health-check --quiet

gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet

gcloud compute networks delete hybrid-network-lb --quiet

gcloud compute addresses delete hybrid-lb-ip --global --quiet