1. مقدمه
یک استراتژی ترکیبی یک راه حل عملی برای سازگاری شما با تقاضاهای در حال تغییر بازار و مدرن سازی تدریجی برنامه های خود است. پشتیبانی ترکیبی برای متعادلکنندههای بار HTTP(های) خارجی و داخلی Google Cloud، توازن بار ابری را به پشتیبانهایی که در داخل پرم و در دیگر ابرها قرار دارند گسترش میدهد و یک عامل کلیدی برای استراتژی ترکیبی شما است. این ممکن است موقتی باشد تا امکان مهاجرت به یک راه حل مبتنی بر ابر مدرن یا یک تعمیر دائمی زیرساخت فناوری اطلاعات سازمان شما را فراهم کند.
در این آزمایشگاه، نحوه ایجاد یک گروه نقطه پایانی شبکه (NEG) با استفاده از دو ماشین مجازی قابل دسترسی از یک HTTP(ها) خارجی Global Load Balancer را خواهید آموخت. اگرچه NEG در آزمایشگاه در GCP است، اما از همین رویه برای برقراری ارتباط با منابع عمومی یا داخلی با قابلیت دسترسی IP استفاده میشود.
چیزی که یاد خواهید گرفت
- یک VPC سفارشی ایجاد کنید
- ایجاد دو ماشین مجازی (VM) که به عنوان یک گروه نقطه پایانی شبکه (NEG) استفاده می شود.
- ایجاد تعادل بار هیبریدی، خدمات باطن و بررسی سلامت مرتبط
- یک قانون فایروال ایجاد کنید که اجازه دسترسی به Load Balancer را می دهد
- Cloud Router و NAT ایجاد خواهند شد تا امکان به روز رسانی بسته از اینترنت را فراهم کنند
- قابلیت دسترسی گروه نقطه پایانی شبکه را تأیید کنید
آنچه شما نیاز دارید
- آشنایی با بار متعادل کننده ها
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه شناسه شخصی شما برای این پروژه است. تا زمانی که از قراردادهای نامگذاری آن پیروی کنید، می توانید از هر چیزی که می خواهید استفاده کنید و می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). کنسول Cloud به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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) را شناسایی کنید و روی «شروع پیکربندی» کلیک کنید
در تصویر زیر «از اینترنت به ماشینهای مجازی من» را انتخاب کنید که امکان دسترسی عمومی به ماشین مجازی شما را فراهم میکند
«xlb» را بهعنوان نام متعادلکننده بار وارد کنید و سرویس پشتیبان ایجاد شده قبلی «on-prem-backend-service» را انتخاب کنید و سپس «ok» را در اسکرین شات ارائه شده انتخاب کنید.
پیکربندی Frontend را انتخاب کنید، نام "xlb-fe" را بهروزرسانی کنید و آدرس IPv4 ثابت ایجاد شده قبلی را انتخاب کنید، اطمینان حاصل کنید که اسکرین شات ارائه شده را منعکس میکنید.
برای مطابقت با اسکرین شات ارائه شده، «بازبینی و نهایی کردن» را انتخاب کنید و ایجاد را انتخاب کنید
اعتبار سنجی سلامت Backend
از کنسول ابری اطمینان حاصل کنید که پشتیبان "xlb" سالم، سبز در اسکرین شات ارائه شده است
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 را انتخاب کنید. پس از انتخاب، «سرویس پشتیبان داخلی» و «بررسی سلامت در محل» را علامت بزنید و سپس حذف را انتخاب کنید.
از Cloud Console UI به Compute Engine → Network Endpoint Groups بروید. پس از انتخاب، «on-prem-neg-1» و «on-prem-neg-2» را علامت بزنید و سپس حذف را انتخاب کنید.
از پوسته ابر اجزای آزمایشگاه را حذف کنید
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