1. مقدمه
Private Service Connect با پیکربندی خودکار DNS از فهرست خدمات و Cloud DNS برای ایجاد خودکار رکوردهای DNS استفاده می کند که با آدرس های IP نقطه پایانی Private Service Connect مصرف کننده برنامه ریزی شده اند.
چیزی که خواهی ساخت
در این نرم افزار کد، شما یک معماری جامع Private Service Connect ایجاد می کنید که استفاده از DNS خودکار را همانطور که در شکل 1 نشان داده شده است، نشان می دهد.
DNS خودکار با موارد زیر امکان پذیر می شود:
- پیوست سرویس تولیدکننده با ارائه یک دامنه عمومی متعلق به مالکیت با پرچم «– نامهای دامنه» هنگام ایجاد پیوست سرویس Private Service Connect، DNS خودکار ایجاد میکند.
- مصرف کننده یک نام نقطه پایانی را تعریف می کند.
- DNS خودکار هم یک DNS Zone goog-psc-default-us-central1 و هم نام DNS cosmopup.net را ایجاد می کند، علاوه بر آن یک ورودی دایرکتوری خدمات متشکل از نام نقطه پایانی مصرف کننده.
مزایای DNS خودکار در (4) نشان داده شده است که در آن کاربر نهایی می تواند با نقطه پایانی مصرف کننده از طریق DNS، FQDN stargazer.cosmopup.net ارتباط برقرار کند.
شکل 1
چیزی که یاد خواهید گرفت
- نحوه ایجاد تعادل بار داخلی HTTP(S).
- نحوه ایجاد پیوست سرویس با DNS خودکار
- نحوه ایجاد سرویس Private Service Connect Producer
- نحوه دسترسی به نقطه پایانی مصرف کننده با استفاده از DNS خودکار
آنچه شما نیاز دارید
- پروژه Google Cloud
- یک دامنه عمومی که شما مالک آن هستید
2. قبل از شروع
پروژه را برای پشتیبانی از Codelab به روز کنید
این Codelab از متغیرهای $ برای کمک به پیاده سازی پیکربندی gcloud در Cloud Shell استفاده می کند.
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. راه اندازی تولید کننده
VPC سازنده را ایجاد کنید
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute networks create producer-vpc --project=$projectname --subnet-mode=custom
زیر شبکه های تولید کننده را ایجاد کنید
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute networks subnets create gce-subnet --project=$projectname --range=172.16.20.0/28 --network=producer-vpc --region=us-central1
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute networks subnets create load-balancer-subnet --project=$projectname --range=172.16.10.0/28 --network=producer-vpc --region=us-central1
یک آدرس IP برای متعادل کننده بار داخلی رزرو کنید
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute addresses create lb-ip \
--region=us-central1 \
--subnet=load-balancer-subnet \
--purpose=GCE_ENDPOINT
آدرس IP اختصاص داده شده را مشاهده کنید
برای مشاهده آدرس IP اختصاص داده شده از دستور compute addresses describe استفاده کنید
gcloud compute addresses describe lb-ip --region=us-central1 | grep address:
زیرشبکه های پراکسی منطقه ای را ایجاد کنید
تخصیص پروکسی در سطح شبکه VPC است، نه در سطح متعادل کننده بار. شما باید در هر ناحیه از شبکه مجازی (VPC) یک زیرشبکه فقط پروکسی ایجاد کنید که در آن از متعادل کننده بار مبتنی بر Envoy استفاده می کنید. اگر چندین بار متعادل کننده را در یک منطقه و شبکه VPC یکسان مستقر کنید، آنها از یک زیرشبکه فقط پروکسی برای تعادل بار استفاده می کنند.
- یک کلاینت به آدرس IP و پورت قانون حمل و نقل بار متعادل کننده متصل می شود.
- هر پروکسی به آدرس IP و پورت مشخص شده توسط قانون حمل و نقل بار متعادل کننده مربوطه گوش می دهد. یکی از پراکسی ها اتصال شبکه مشتری را دریافت و قطع می کند.
- پروکسی یک اتصال به پشتیبان VM مناسب تعیین شده توسط نقشه URL و خدمات باطن بارگذاری متعادل کننده برقرار می کند.
بدون توجه به اینکه شبکه VPC شما حالت خودکار است یا حالت سفارشی، باید زیرشبکه های فقط پروکسی ایجاد کنید. یک زیرشبکه فقط پروکسی باید ۶۴ آدرس IP یا بیشتر را ارائه دهد. این مربوط به طول پیشوند 26/ یا کوتاهتر است. اندازه زیر شبکه پیشنهادی 23/ است (512 آدرس فقط پروکسی).
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute networks subnets create proxy-subnet-us-central \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-central1 \
--network=producer-vpc \
--range=172.16.0.0/23
زیرشبکه های Private Service Connect NAT را ایجاد کنید
یک یا چند زیرشبکه اختصاصی برای استفاده با Private Service Connect ایجاد کنید . اگر از کنسول Google Cloud برای انتشار یک سرویس استفاده میکنید، میتوانید زیرشبکهها را در طول آن رویه ایجاد کنید. زیرشبکه را در همان ناحیه با متعادل کننده بار سرویس ایجاد کنید. شما نمی توانید یک زیرشبکه معمولی را به یک زیرشبکه Private Service Connect تبدیل کنید.
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute networks subnets create psc-nat-subnet \
--project $projectname \
--network producer-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
قوانین فایروال تولید کننده را ایجاد کنید
قوانین فایروال را پیکربندی کنید تا ترافیک بین زیرشبکه Private Service Connect NAT و فقط زیرشبکه پراکسی ILB مجاز باشد.
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute --project=$projectname firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24
در داخل Cloud Shell، قانون فایروال fw-allow-health-check را ایجاد کنید تا بررسیهای سلامت Google Cloud به سرویس تولیدکننده (سرویس پشتیبان) در پورت TCP 80 دسترسی پیدا کند.
gcloud compute firewall-rules create fw-allow-health-check \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:80
یک قانون فایروال اجازه ورود برای زیرشبکه فقط پروکسی ایجاد کنید تا به بار متعادل کننده اجازه دهد با نمونه های پشتیبان در پورت TCP 80 ارتباط برقرار کند.
gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=172.16.0.0/23 \
--rules=tcp:80
روتر ابری و پیکربندی NAT
از آنجایی که نمونه VM یک آدرس IP خارجی ندارد، از Cloud NAT برای نصب بسته نرم افزاری در کد لبه استفاده می شود.
در داخل Cloud Shell، روتر ابری را ایجاد کنید.
gcloud compute routers create cloud-router-for-nat --network producer-vpc --region us-central1
در داخل Cloud Shell، دروازه NAT را ایجاد کنید.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
پیکربندی گروه نمونه
در بخش زیر، گروه نمونه موتور محاسباتی و نمونه های مدیریت نشده را ایجاد می کنید. در مراحل بعدی از گروه نمونه به عنوان سرویس باطن متعادل کننده بار استفاده می شود.
در داخل Cloud Shell، بررسی سلامت منطقهای را ایجاد کنید که به سرویس تولیدکننده ارسال شده است.
gcloud compute instances create app-server-1 \
--project=$projectname \
--machine-type=e2-micro \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=gce-subnet \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'Welcome to App-Server-1 !!' | tee /var/www/html/index.html
EOF"
در داخل Cloud Shell، گروه نمونه مدیریت نشده را ایجاد کنید.
gcloud compute instance-groups unmanaged create psc-instance-group --zone=us-central1-a
gcloud compute instance-groups unmanaged set-named-ports psc-instance-group --project=$projectname --zone=us-central1-a --named-ports=http:80
gcloud compute instance-groups unmanaged add-instances psc-instance-group --zone=us-central1-a --instances=app-server-1
بار متعادل کننده را پیکربندی کنید
در مراحل زیر، متعادل کننده بار داخلی HTTP را پیکربندی خواهید کرد که در مرحله بعد به عنوان پیوست سرویس منتشر خواهد شد.
در داخل Cloud Shell، بررسی سلامت منطقه ای را ایجاد کنید.
gcloud compute health-checks create http http-health-check \
--region=us-central1 \
--use-serving-port
در داخل Cloud Shell، سرویس Backend را ایجاد کنید.
gcloud compute backend-services create l7-ilb-backend-service \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=http-health-check \
--health-checks-region=us-central1 \
--region=us-central1
در داخل Cloud Shell، Backendها را به سرویس Backend اضافه کنید.
gcloud compute backend-services add-backend l7-ilb-backend-service \
--balancing-mode=UTILIZATION \
--instance-group=psc-instance-group \
--instance-group-zone=us-central1-a \
--region=us-central1
در داخل Cloud Shell، نقشه URL را برای هدایت درخواستهای دریافتی به سرویس باطن ایجاد کنید.
gcloud compute url-maps create l7-ilb-map \
--default-service l7-ilb-backend-service \
--region=us-central1
پروکسی هدف HTTP را ایجاد کنید.
gcloud compute target-http-proxies create l7-ilb-proxy\
--url-map=l7-ilb-map \
--url-map-region=us-central1 \
--region=us-central1
یک قانون حمل و نقل ایجاد کنید تا درخواست های دریافتی را به پروکسی هدایت کنید. برای ایجاد قانون حمل و نقل از زیرشبکه فقط پراکسی استفاده نکنید.
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=load-balancer-subnet \
--address=lb-ip \
--ports=80 \
--region=us-central1 \
--target-http-proxy=l7-ilb-proxy \
--target-http-proxy-region=us-central1
4. اعتبارسنجی بار متعادل کننده
از «کنسول ابر» به «خدمات شبکه» → «تعادل بار» → «موازنه بار» بروید. به بررسی موفقیت آمیز سلامتی سرویس باطن توجه کنید
انتخاب 'l7-ilb-map' آدرس IP frontend را به دست میدهد، که باید با آدرس IP که در مرحله قبل دریافت کردهاید مطابقت داشته باشد و سرویس Backend را مشخص میکند.
5. پیوست سرویس Private Service Connect را ایجاد کنید
پیوست سرویس را ایجاد کنید
در داخل Cloud Shell، پیوست سرویس را ایجاد کنید. حتما «.» را اضافه کنید. در انتهای نام دامنه
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet --domain-names=cosmopup.net.
اختیاری: در صورت استفاده از VPC مشترک، پیوست سرویس را در پروژه خدمات ایجاد کنید.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/us-central1/subnetworks/psc-nat-subnet --domain-names=cosmopup.net.
برای مشاهده پیوست سرویس جدید تاسیس شده، به خدمات شبکه ← Private Service Connect بروید
انتخاب سرویس منتشر شده جزئیات بیشتری را ارائه می دهد، از جمله URI پیوست سرویس که توسط مصرف کننده برای ایجاد یک اتصال سرویس خصوصی و نام دامنه استفاده می شود.
جزئیات پیوست سرویس:
projects/<نام پروژه>/regions/us-central1/serviceAttachments/published-service
6. راه اندازی مصرف کننده
فعال کردن API های مصرف کننده
در داخل Cloud، Shell کارهای زیر را انجام می دهد:
gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com
شبکه VPC مصرف کننده را ایجاد کنید
در داخل Cloud Shell موارد زیر را انجام دهید:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
زیرشبکه های مصرف کننده ایجاد کنید
در داخل Cloud Shell، زیر شبکه را برای نمونه آزمایشی ایجاد کنید.
gcloud compute networks subnets create db1-subnet --project=$projectname --range=10.20.0.0/28 --network=consumer-vpc --region=us-central1
در داخل Cloud Shell، یک زیرشبکه برای نقطه پایانی مصرف کننده ایجاد کنید.
gcloud compute networks subnets create consumer-ep-subnet --project=$projectname --range=10.10.0.0/28 --network=consumer-vpc --region=us-central1
ایجاد نقطه پایانی مصرف کننده (قانون حمل و نقل)
در داخل Cloud Shell، آدرس IP ثابتی را ایجاد کنید که برای نقطه پایانی مصرف کننده استفاده می شود.
gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=consumer-ep-subnet --addresses 10.10.0.10
ما از URI پیوست سرویس ایجاد شده قبلی برای ایجاد نقطه پایانی مصرف کننده استفاده می کنیم.
در داخل Cloud Shell، نقطه پایان مصرف کننده را ایجاد کنید.
gcloud compute forwarding-rules create stargazer --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$projectname/regions/us-central1/serviceAttachments/published-service
7. اعتبار اتصال در شبکه VPC مصرف کننده را تأیید کنید
از شبکه VPC مصرف کننده، با پیمایش به خدمات شبکه → اتصال سرویس خصوصی → نقاط پایانی متصل، اتصال موفقیت آمیز سرویس خصوصی را تأیید کنید. به اتصال stargazer ایجاد شده و آدرس IP مربوطه که قبلا ایجاد کردیم توجه کنید.
هنگام انتخاب psc-consumer-1 جزئیات از جمله URI پیوست سرویس ارائه می شود
8. اعتبار اتصال در شبکه VPC تولید کننده را تأیید کنید
از شبکه VPC سازنده، با پیمایش به خدمات شبکه → اتصال سرویس خصوصی → سرویس منتشر شده، اتصال موفق خدمات خصوصی را تأیید کنید. توجه داشته باشید که اتصال سرویس منتشر شده اکنون 1 قانون حمل و نقل (نقطه پایان اتصال) را نشان می دهد.
9. پیکربندی خودکار DNS را تأیید کنید
بیایید پیکربندی DNS و Service Directory را ارزیابی کنیم.
پیکربندی Cloud DNS
به خدمات شبکه → Cloud DNS → Zones بروید. نام منطقه goog-psc-default-us-central & DNS cosmopup.net. به صورت خودکار تولید می شود.
پیکربندی DNS و Service Directory را مشاهده کنید
انتخاب نام منطقه به ما این امکان را می دهد که ببینیم چگونه Service Directory با Cloud DNS یکپارچه شده است.
پیکربندی فهرست خدمات
به Network Services → Service Directory بروید
نام نقطه پایانی مصرف کننده " ستارهنگار " را به خاطر می آورید؟ به طور خودکار در فهرست خدمات برنامه ریزی شده است و به ما امکان می دهد با استفاده از FQDN به نقطه پایانی مصرف کننده برسیم stargazer.goog-psc-default–us-central1
10. اعتبار دسترسی مصرف کننده به خدمات تولیدکنندگان
از شبکه VPC مصرف کننده، یک VM برای آزمایش اتصال سرویس منتشر شده با دسترسی به نقطه پایانی مصرف کننده stargazer.cosmopup.net ایجاد خواهیم کرد.
Inside Cloud Shell نمونه آزمایشی را در vpc مصرف کننده ایجاد کنید.
gcloud compute instances create db1 \
--zone=us-central1-a \
--image-family=debian-10 \
--image-project=debian-cloud \
--subnet=db1-subnet \
--no-address
برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
- به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.
در داخل Cloud Shell، قانون فایروال IAP را ایجاد کنید.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
با استفاده از IAP در Cloud Shell وارد consumer-vm شوید تا با انجام یک چرخش، اتصال به سرویس تولیدکننده را تأیید کنید. اگر مهلت زمانی وجود دارد دوباره امتحان کنید.
gcloud compute ssh db1 --project=$projectname --zone=us-central1-a --tunnel-through-iap
اتصال به سرویس تولیدکننده را تأیید اعتبار کرل انجام دهید. پس از تأیید خروج از VM به درخواست Cloud Shell بازگشت
در داخل Cloud Shell یک پیچ در دامنه سفارشی خود انجام دهید، به عنوان مثال stargazer.[custom-domain.com]. در خروجی زیر، یک حلقه در برابر stargazer.cosmopup.net انجام شده است
user@db1:~$ curl -v stargazer.cosmopup.net
* Trying 10.10.0.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55d3aa8190f0)
* Connected to stargazer.cosmopup.net (10.10.0.10) port 80 (#0)
> GET / HTTP/1.1
> Host: stargazer.cosmopup.net
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< date: Thu, 22 Dec 2022 00:16:25 GMT
< server: Apache/2.4.38 (Debian)
< last-modified: Wed, 21 Dec 2022 20:26:32 GMT
< etag: "1b-5f05c5e43a083"
< accept-ranges: bytes
< content-length: 27
< content-type: text/html
< via: 1.1 google
<
Welcome to App-Server-1 !!
با بازگشت به Cloud Shell از VM خارج شوید تا کارهای پاکسازی را شروع کنید
11. پاکسازی کنید
از Cloud Shell، اجزای codelab را حذف کنید.
gcloud compute forwarding-rules delete stargazer --region=us-central1 --quiet
gcloud compute instances delete db1 --zone=us-central1-a --quiet
gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet
gcloud compute networks subnets delete consumer-ep-subnet db1-subnet --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute networks delete consumer-vpc --quiet
gcloud compute service-attachments delete published-service --region=us-central1 --quiet
gcloud compute forwarding-rules delete l7-ilb-forwarding-rule --region=us-central1 --quiet
gcloud compute target-http-proxies delete l7-ilb-proxy --region=us-central1 --quiet
gcloud compute url-maps delete l7-ilb-map --region=us-central1 --quiet
gcloud compute backend-services delete l7-ilb-backend-service --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-instance-group --zone=us-central1-a --quiet
gcloud compute instances delete app-server-1 --zone=us-central1-a --quiet
gcloud compute firewall-rules delete allow-to-ingress-nat-subnet fw-allow-health-check fw-allow-proxy-only-subnet --quiet
gcloud compute addresses delete lb-ip --region=us-central1 --quiet
gcloud compute networks subnets delete gce-subnet load-balancer-subnet psc-nat-subnet proxy-subnet-us-central --region=us-central1 --quiet
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet
gcloud compute networks delete producer-vpc --quiet
12. تبریک می گویم
تبریک میگوییم، شما با موفقیت یک نقطه پایانی Private Service Connect را با پیکربندی خودکار DNS پیکربندی و تأیید کردید.
زیرساخت تولیدکننده را ایجاد کردید و یک پیوست سرویس با ثبت دامنه عمومی اضافه کردید. شما یاد گرفتید که چگونه یک نقطه پایانی مصرف کننده در شبکه VPC مصرف کننده ایجاد کنید که امکان اتصال به سرویس داخلی را با استفاده از DNS تولید شده خودکار فراهم می کند.
Cosmopup فکر می کند که نرم افزارهای کدنویسی عالی هستند!!
بعدش چی؟
برخی از این کدها را بررسی کنید...
- استفاده از Private Service Connect برای انتشار و مصرف خدمات با GKE
- استفاده از Private Service Connect برای انتشار و مصرف خدمات
- با استفاده از Private Service Connect و یک متعادل کننده بار داخلی TCP Proxy از طریق شبکه هیبریدی به سرویس های اولیه متصل شوید.