1. مقدمه
با Private Service Connect، تولیدکنندگان خدمات می توانند خدمات را در یک محیط VPC از طریق یک سرویس پیوست ارائه دهند و به مصرف کنندگان در یک محیط VPC دیگر اجازه دهند از طریق یک نقطه پایانی Private Service Connect به آن خدمات دسترسی داشته باشند. گاهی اوقات این سرویسهای تولیدکننده بهعنوان خوشههایی از ماشینهای مجازی طراحی میشوند، که هر ماشین مجازی همان خدمات را روی شماره پورتهای یکسانی ارائه میکند. پیش از این، این طرحهای سرویس نیازمند استقرار چندین نقطه پایانی Private Service Connect در سمت مصرفکننده، یا استفاده از ارسال IP در سمت تولیدکننده برای اطمینان از هدفگیری صحیح VM تولیدکننده بود.
Private Service Connect اکنون می تواند به صورت بومی مقصد صحیح را با استفاده از Port Mapping هدف قرار دهد. در این آزمایشگاه، با موارد استفاده که در آن این ویژگی مورد نیاز است و نحوه استقرار Port Mapping NEG در یک بار کاری Private Service Connect آشنا خواهید شد.
چیزی که یاد خواهید گرفت
- موارد استفاده از نگاشت پورت اتصال سرویس خصوصی
- مزایای کلیدی نقشه برداری پورت PSC
- الزامات شبکه
- یک سرویس تولید کننده Private Service Connect با استفاده از نقشه پورت ایجاد کنید.
- یک نقطه پایانی Private Service Connect ایجاد کنید
- از طریق یک سرویس خصوصی تماس بگیرید، نقطه پایانی را به یک سرویس تولید کننده متصل کنید
آنچه شما نیاز دارید
- پروژه Google Cloud با مجوزهای مالک
2. موارد استفاده از خدمات خصوصی Connect Port Mapping
ویژگی Port Mapping از یک Port Mapping NEG (گروه نقطه پایانی شبکه) استفاده می کند که مخصوص موارد استفاده PSC است.
رایج ترین انواع تولیدکنندگانی که می توانند از استفاده از Port Mapping بهره مند شوند، تولیدکنندگان پایگاه داده NoSQL و تولیدکنندگان کافکا هستند. با این حال، هر تولیدکنندهای که به مجموعهای از ماشینهای مجازی نیاز دارد که خدمات مشابهی را در پورتهای یکسان با الزامات نقشهبرداری VM خاص ارائه میکنند، میتوانند از این ویژگی استفاده کنند.
Producer نگاشت بین پورت مشتری و پورت مقصد + VM تولید کننده را تعریف می کند. سپس تولید کننده باید این اطلاعات را با مصرف کننده به اشتراک بگذارد. مصرف کننده از پورت های از پیش تعریف شده برای شناسایی منحصر به فرد VM + پورت مقصد استفاده می کند. پورت مورد استفاده مصرف کننده پورت متفاوتی است که توسط تولید کننده استفاده می شود.
مزایای کلیدی PSC Port Mapping
- ساده: تولیدکنندگان اجزای PSC را با یک نقشه پورت، و مصرف کنندگان یک نقطه پایانی PSC را مستقر می کنند. PSC ترجمه آدرس شبکه را بطور خودکار انجام می دهد.
- مقرون به صرفه: به منابع PSC اضافی یا چرخه های CPU VM تولید کننده نیاز ندارد. قیمت گذاری مشابه انواع دیگر استقرار PSC است
- عملکرد بالا: نگاشت پورت همان توان عملیاتی نرخ خط و تأخیر کم را مانند سایر حالت های PSC ارائه می دهد.
- مقیاس پذیر و دارای IP کارآمد: یک آدرس IP از VPC مصرف کننده می تواند به 1000 ماشین مجازی تولید کننده و 1000 نگاشت پورت دسترسی داشته باشد.
3. الزامات شبکه
- نقشهبرداری پورت به استفاده از متعادلکننده بار عبوری شبکه داخلی به عنوان متعادلکننده بار تولیدکننده نیاز دارد.
- فقط نقاط پایانی PSC را می توان با Port Mapping استفاده کرد (نه PSC Backends یا PSC Interface).
- NEG های نگاشت بندر سازه های منطقه ای هستند.
- NEG های نگاشت پورت فقط در یک اتصال PSC قابل استفاده هستند. اگر VM مشتری مستقیماً قانون حمل و نقل بار متعادل کننده تولید کننده را فراخوانی کند، کار نمی کنند. این در روشی که سرویس تولیدکننده در این کد لبه آزمایش می شود منعکس می شود.
- نقطه پایانی PSC و پشته سرویس تولید کننده باید در VPC های مختلف باشند.
4. توپولوژی Codelab
در VPC تولید کننده، دو ماشین مجازی ایجاد می شود که هر کدام دو سرور وب را اجرا می کنند، یکی روی پورت 1000 و دیگری در پورت 2000 اجرا می شود. ما هر سرویس را قبل از راه اندازی Portmap NEG، Internal Network Passthrough Load Balancer، و پیوست سرویس.
در VPC مصرفکننده، یک نقطه پایانی PSC را راهاندازی میکنیم و اتصال به سرویس تولیدکننده را از VM مشتری آزمایش میکنیم.
5. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع/APIهای Cloud باید صورتحساب را در کنسول Cloud فعال کنید . اجرا از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.
6. قبل از شروع
API ها را فعال کنید
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone
تمام خدمات لازم را فعال کنید
gcloud services enable compute.googleapis.com
7. Producer VPC Network ایجاد کنید
شبکه VPC
از Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
ایجاد زیرشبکه
از Cloud Shell
gcloud compute networks subnets create producer-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --purpose=PRIVATE_SERVICE_CONNECT
زیرشبکه PSC به منظور ترجمه آدرس شبکه با پیوست سرویس PSC مرتبط خواهد شد. برای موارد استفاده تولید، این زیرشبکه باید اندازه مناسبی داشته باشد تا از میزان ترافیک ورودی از تمام نقاط پایانی PSC متصل شده پشتیبانی کند. برای اطلاعات بیشتر به اسناد اندازهگیری زیرشبکه PSC NAT مراجعه کنید.
خط مشی فایروال شبکه و قوانین فایروال را ایجاد کنید
از Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy producer-vpc-policy --network producer-vpc --name network-producer-vpc --global-firewall-policy
برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
- به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.
از Cloud Shell
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy producer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
قانون فایروال زیر اجازه می دهد تا ترافیک روی پورت های TCP 1000-2000 از زیرشبکه PSC به تمام نمونه های شبکه انجام شود. در یک محیط تولید، این قانون فایروال باید فقط به موارد مرتبط با سرویس تولیدکننده خاص محدود شود.
از Cloud Shell
gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
قانون فایروال زیر به تمام ترافیک درون زیرشبکه خدمات در پورت های TCP 1000-2000 اجازه می دهد. این قانون برای آزمایش اینکه سرویس تولیدکننده ما به درستی کار می کند استفاده می شود.
از Cloud Shell
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
VMهای تولید کننده را ایجاد و پیکربندی کنید
VM ها را ایجاد کنید
از Cloud Shell
gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address
در بخش زیر سرور http را روی پورت 1000 و 2000 در هر Producer VM راه اندازی کنید.
VM ها را پیکربندی کنید
از Cloud Shell
gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project
در Cloud Shell از جلسه portmap-vm1
mkdir 1000 cd 1000 echo "portmap-vm1 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm1 2000">index.html sudo python3 -m http.server 2000 &
یک پنجره Cloud Shell جدید باز کنید
با تنظیم مجدد متغیرها شروع کنید. در Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project
در Cloud Shell از جلسه portmap-vm2
mkdir 1000 cd 1000 echo "portmap-vm2 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm2 2000">index.html sudo python3 -m http.server 2000 &
8. خدمات تولید کننده تست
ابتدا باید آدرس های IP نمونه های portmap را بدست آوریم. به هر دوی این آدرس های IP توجه داشته باشید.
یک پنجره Cloud Shell جدید باز کنید
با تنظیم مجدد متغیرها شروع کنید. در Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute instances describe portmap-vm1 \ --format='get(networkInterfaces[0].networkIP)' --zone $zone gcloud compute instances describe portmap-vm2\ --format='get(networkInterfaces[0].networkIP)' --zone $zone
وارد نمونه آزمایشی شوید. در Cloud Shell
gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project curl [portmap-vm1 IP]:1000
خروجی مورد انتظار
portmap-vm1 1000
در Cloud Shell
curl [portmap-vm1 IP]:2000
خروجی مورد انتظار
portmap-vm1 2000
در Cloud Shell
curl [portmap-vm2 IP]:1000
خروجی مورد انتظار
portmap-vm2 1000
در Cloud Shell
curl [portmap-vm2 IP]:2000
خروجی مورد انتظار
portmap-vm2 2000
خروج از test-client-vm
9. خدمات تولید کننده را با Portmap NEG ایجاد کنید
اجزای Load Balancer را ایجاد کنید
از Cloud Shell
gcloud beta compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP
نقاط پایانی را به Portmap NEG اضافه کنید تا نقشه برداری از پورت مشتری به پورت سازنده ایجاد شود. تولید کننده این نقشه برداری را ایجاد می کند و روش خاص خود را برای انتقال این اطلاعات به مصرف کنندگان خواهد داشت. نگاشت پورت خاص از طریق PSC به اشتراک گذاشته نمی شود.
در Cloud Shell
gcloud beta compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000
ساخت متعادل کننده بار را کامل کنید.
در Cloud Shell
gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes
ایجاد پیوست سرویس
از Cloud Shell
gcloud compute service-attachments create portmap-service-attachment --region=$region --producer-forwarding-rule=portmap-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet
سپس، سرویس URI پیوست را بازیابی و یادداشت کنید تا نقطه پایانی PSC را در محیط مصرف کننده پیکربندی کنید.
در Cloud Shell
gcloud compute service-attachments describe portmap-service-attachment --region=$region
نمونه خروجی مورد انتظار
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2024-07-19T10:02:29.432-07:00' description: '' enableProxyProtocol: false fingerprint: LI8D6JNQsLA= id: '6207474793859982026' kind: compute#serviceAttachment name: portmap-service-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: '94288091358954472' low: '6207474793859982026' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/portmap-service-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-fr
10. شبکه Consumer VPC ایجاد کنید
شبکه VPC
از Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
ایجاد زیر شبکه
از Cloud Shell
gcloud compute networks subnets create consumer-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access
خط مشی فایروال شبکه و قوانین فایروال را ایجاد کنید
از Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
فقط SSH از دسترسی IAP برای شبکه مصرف کننده مورد نیاز است.
11. VM، PSC Endpoint و Test Connectivity را ایجاد کنید
در این مرحله، باید سه پنجره Cloud Shell باز باشد. باید یک جلسه باز با portmap-vm1 داشته باشید. یکی باید یک جلسه باز با portmap-vm2 داشته باشد و یکی باید جلسه کاری باشد.
تست VM را ایجاد کنید
از Cloud Shell
gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address
نقطه پایانی PSC ایجاد کنید
از Cloud Shell
gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10 gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]
تست اتصال
از Cloud Shell
gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project curl 10.0.0.10:1001
خروجی مورد انتظار
portmap-vm1 1000
از Cloud Shell
curl 10.0.0.10:1002
خروجی مورد انتظار
portmap-vm1 2000
از Cloud Shell
curl 10.0.0.10:1003
خروجی مورد انتظار
portmap-vm2 1000
از Cloud Shell
curl 10.0.0.10:1004
خروجی مورد انتظار
portmap-vm2 2000
12. مراحل پاکسازی
خروج از نمونه VM (همه ویندوز)
exit
از یک ترمینال Cloud Shell، اجزای آزمایشگاه را حذف کنید
gcloud compute forwarding-rules delete psc-portmap-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy=consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-client-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete portmap-service-attachment --region=$region -q gcloud compute forwarding-rules delete portmap-fr --region=$region -q gcloud compute backend-services delete portmap-bes --region=$region -q gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q gcloud compute instances delete test-client-vm --zone=$zone -q gcloud compute instances delete portmap-vm2 --zone=$zone -q gcloud compute instances delete portmap-vm1 --zone=$zone -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-service-subnet --region $region -q gcloud compute networks delete producer-vpc -q
13. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- موارد استفاده از نگاشت پورت اتصال سرویس خصوصی
- مزایای کلیدی نقشه برداری پورت PSC
- الزامات شبکه
- یک سرویس تولید کننده Private Service Connect با استفاده از نقشه پورت ایجاد کنید.
- یک نقطه پایانی Private Service Connect ایجاد کنید
- از طریق یک سرویس خصوصی تماس بگیرید، نقطه پایانی را به یک سرویس تولید کننده متصل کنید