۱. مقدمه
اتصال سرویس خصوصی (PSC) نحوهی استفادهی ایمن و خصوصی از سرویسها را ساده میکند. این مدل با فراهم کردن امکان اتصال خصوصی مصرفکنندگان سرویس به تولیدکنندگان سرویس در سازمانها و حذف نیاز به همتاسازی ابر خصوصی مجازی، معماری شبکه را به طرز چشمگیری آسانتر میکند. شکل 1 همتاسازی VPC و ویژگیهای PSC را نشان میدهد.
شکل ۱. 
به عنوان یک مصرفکننده سرویس، این به شما امکان میدهد تا انعطافپذیری انتخاب نحوه تخصیص IPهای خصوصی خود به سرویسها را داشته باشید، در حالی که بار مدیریت محدودههای زیرشبکه را برای VPCهای تولیدکننده از بین میبرد. اکنون میتوانید به سادگی با استفاده از یک اتصال سرویس، یک IP مجازی انتخاب شده را از VPC خود به چنین سرویسی اختصاص دهید.
در این آزمایشگاه کد، شما یک معماری جامع Private Service Connect خواهید ساخت که استفاده از دسترسی سراسری PSC را با MongoDB atlas نشان میدهد.
دسترسی سراسری به کلاینتها اجازه میدهد تا به سرویس خصوصی (PSC) در سراسر مرزهای منطقهای متصل شوند. این امر برای ایجاد دسترسی بالا در سرویسهای مدیریتشده میزبانیشده در چندین منطقه یا برای دسترسی کلاینتها به سرویسی که در همان منطقه کلاینت نیست، مفید است.
۲. فعال کردن دسترسی جهانی
دسترسی سراسری یک ویژگی اختیاری است که در قانون ارسال سمت مصرفکننده پیکربندی میشود. دستور زیر نحوه پیکربندی آن را نشان میدهد:
gcloud beta compute forwarding-rules create psc-west \
--region=us-west1 \
--network=consumer-vpc \
--address=psc-west-address \
--target-service-attachment=projects/.../serviceAttachments/sa-west \
--allow-psc-global-access
- پرچم
--allow-psc-global-access دسترسی سراسری را در یک نقطه پایانی Private Service Connect فعال میکند. - دسترسی سراسری به کلاینت اجازه میدهد تا در منطقهای متفاوت از قانون ارسال Private Service Connect باشد، اما قانون ارسال همچنان باید در همان منطقهای باشد که ضمیمه سرویس به آن متصل است.
- هیچ پیکربندی در پیوست سرویس تولیدکننده برای فعال کردن دسترسی سراسری لازم نیست. این صرفاً یک گزینه سمت مصرفکننده است.
همچنین میتوان دسترسی سراسری را در هر زمانی برای نقاط انتهایی موجود فعال یا غیرفعال کرد. هنگام فعال کردن دسترسی سراسری در یک نقطه انتهایی موجود، هیچ اختلالی در ترافیک برای اتصالات فعال وجود ندارد. دسترسی سراسری با دستور زیر بر روی یک forwarding-rule موجود فعال میشود:
gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access
غیرفعال کردن دسترسی سراسری
همچنین میتوان دسترسی سراسری را در قوانین ارسال موجود با استفاده از پرچم --no-allow-psc-global-access غیرفعال کرد. توجه داشته باشید که هرگونه ترافیک فعال بین منطقهای پس از اجرای این دستور خاتمه مییابد.
gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access
۳. آنچه خواهید ساخت
- یک کلاستر چند منطقهای MongoDB Atlas (توپولوژی شرح داده شده در شکل ۲) با یک گره در مناطق us-west1 و دو گره در مناطق us-west2 ایجاد خواهد شد.
- یک VPC مصرفکننده و ماشین مجازی مرتبط برای دسترسی به خوشههای MongoDB در us-west1 و us-west2.
- یک VPC و دو زیرشبکه به ترتیب در مناطق us-west1 و us-west2 با حداقل ۶۴ آدرس IP آزاد در هر زیرشبکه (زیرشبکههایی با /۲۶ و کمتر ایجاد کنید).
کلاینت MongoDB روی vm1 در vpc مصرفکننده نصب خواهد شد. هنگامی که گره اصلی در us-west1 از کار بیفتد، کلاینت قادر به خواندن/نوشتن از طریق گره اصلی جدید در us-west2 خواهد بود.
شکل ۲. 
آنچه یاد خواهید گرفت
- نحوه ایجاد یک VPC و زیرشبکههای مستقر در دو منطقه
- نحوه استقرار یک خوشه اطلس MongoDB چند منطقهای
- نحوه ایجاد یک نقطه پایانی خصوصی
- نحوه اتصال به MongoDB
- نحوه انجام و اعتبارسنجی failover چند منطقهای MongoDB
آنچه نیاز دارید
- پروژه ابری گوگل
- ارائه یک زیرشبکه /26 برای هر منطقه
- دسترسی مالک پروژه یا مالک سازمان به MongoDB Atlas برای ایجاد یک کلاستر MongoDB با سطح کلاستر M10 یا بالاتر. (لطفاً از GETATLAS برای دریافت اعتبار رایگان برای اجرای PoV استفاده کنید)
۴. قبل از شروع
پروژه را برای پشتیبانی از codelab بهروزرسانی کنید
این Codelab از $variables برای کمک به پیادهسازی پیکربندی gcloud در Cloud Shell استفاده میکند.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
۵. تنظیمات مصرفکننده
ایجاد VPC مصرفکننده
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
زیرشبکههای مصرفکننده را ایجاد کنید
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1
درون Cloud Shell، نقطه پایانی مصرفکننده را برای us-west1 ایجاد کنید:
gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1
درون Cloud Shell، نقطه پایانی مصرفکننده را برای us-west2 ایجاد کنید:
gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2
پیکربندی روتر ابری و NAT
از آنجایی که نمونههای ماشین مجازی آدرس IP خارجی ندارند، در codelab برای نصب بستههای نرمافزاری از Cloud NAT استفاده میشود.
درون Cloud Shell، روتر ابری را ایجاد کنید.
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
درون Cloud Shell، دروازه NAT را ایجاد کنید.
gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
پیکربندی نمونه vm1
در بخش بعدی، نمونهی Compute Engine، یعنی vm1، را ایجاد خواهید کرد.
درون پوسته ابری، نمونه vm1 را ایجاد کنید.
gcloud compute instances create vm1 \
--project=$projectname \
--zone=us-west1-a \
--machine-type=e2-micro \
--network-interface=subnet=vm-subnet,no-address \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
برای اینکه به IAP اجازه دهید به ماشینهای مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونههای ماشین مجازی که میخواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال میشود.
- اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را میدهد. این محدوده شامل تمام آدرسهای IP است که IAP برای ارسال TCP استفاده میکند.
در داخل Cloud Shell، قانون فایروال IAP را ایجاد کنید.
gcloud compute firewall-rules create ssh-iap-consumer-vpc \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
۶. ایجاد خوشه چند منطقهای MongoDB Atlas
- قبل از شروع راهاندازی PSC، باید یک کلاستر Atlas راهاندازی کنیم. میتوانید به یکی از دو روش زیر در MongoDB Atlas مشترک شوید:
- از طریق بازار ابری گوگل (Google Cloud Marketplace) در صورت داشتن حساب کاربری گوگل کلود. برای تنظیم اشتراک خود به مستندات مراجعه کنید.
- با صفحه ثبت نام اطلس .
- پس از عضویت در اطلس، مطابق شکل زیر روی دکمه ساخت پایگاه داده کلیک کنید.

- ایجاد خوشه جدید → اختصاصی

- ارائه دهنده و منطقه ابری → گوگل کلود
- ایزولهسازی چند ابری، چند منطقهای و حجم کاری → انتخاب شده (تیک آبی)

- گرههای قابل انتخاب → us-west1 (1 گره)، us-west2 (2 گره)

- ردیف خوشه → M10، سایر تنظیمات را به صورت پیشفرض رها کنید

- نام خوشه → psc-mongodb-uswest1-uswest2

- انتخاب → ایجاد خوشه

- ایجاد پایگاه داده 7-10 دقیقه طول می کشد

نمای کلاستر پس از استقرار

۷. ایجاد نقطه پایانی خصوصی برای us-west1
- وارد حساب کاربری Atlas خود شوید و به پروژه خود بروید.
یک کاربر جدید ایجاد کنید تا دسترسی خواندن/نوشتن به هر پایگاه دادهای را فراهم کند.
امنیت → دسترسی به پایگاه داده، گزینه افزودن کاربر جدید به پایگاه داده را انتخاب کنید. در زیر یک مثال آمده است که نام کاربری و رمز عبور آن به صورت codelab پیکربندی شده است. مطمئن شوید که نقش داخلی خواندن و نوشتن در هر پایگاه داده را انتخاب میکنید.

- در بخش امنیت → دسترسی به شبکه، فهرست دسترسی به IP نیازی به وارد کردن ندارد.
آمادهسازی نقاط پایانی خصوصی در MongoDB Atlas
- انتخاب، دسترسی به شبکه → نقاط پایانی خصوصی → خوشه اختصاصی → افزودن نقطه پایانی خصوصی

ارائه دهنده ابر
- Google Cloud را انتخاب کنید، سپس بعدی

پیوست خدمات
- منطقه، us-west1، و سپس next را انتخاب کنید

نقاط پایانی
- برای ایجاد یک نقطه پایانی اتصال سرویس خصوصی، موارد زیر را ارائه دهید:
- شناسه پروژه ابری گوگل: برای جزئیات بیشتر، «نمایش دستورالعملها» را انتخاب کنید.
- نام VPC: vpc-مصرف کننده
- نام زیرشبکه: psc-endpoint-us-west1
- پیشوند نقطه پایانی اتصال سرویس خصوصی: psc-endpoint-us-west1

نقاط پایانی را تنظیم کنید
در بخش بعدی، یک اسکریپت پوسته ایجاد میشود که باید به صورت محلی با نام setup_psc.sh ذخیره شود. پس از ذخیره، اسکریپت پوسته را ویرایش کنید تا به psc دسترسی سراسری داده شود. میتوانید این کار را در پروژه ابری گوگل (Google Cloud Project Cloud Shell) انجام دهید.
- مثال اسکریپت پوسته، خروجی شما مقادیر متفاوتی خواهد داشت

- اسکریپت پوسته را از کنسول MongoBD کپی کنید و محتویات را در ترمینال Google Cloud Cloud Shell ذخیره کنید، مطمئن شوید که اسکریپت را با نام setup_psc.sh ذخیره میکنید.
مثال قبل از بروزرسانی:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
اسکریپت پوسته را برای پشتیبانی از دسترسی سراسری بهروزرسانی کنید
از ویرایشگر nano یا vi برای شناسایی و بهروزرسانی اسکریپت پوسته با استفاده از سینتکس زیر استفاده کنید:
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
مثال بعد از بروزرسانی:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
اسکریپت پوسته را اجرا کنید
اسکریپت setup_psc.sh را اجرا کنید، پس از تکمیل، فایلی به نام atlasEndpoints-psc-endpoint-us-west1.json ایجاد میشود. این فایل json شامل لیستی از آدرسهای IP و نامهای نقطه پایانی Private Service Connect مورد نیاز برای مرحله بعدی استقرار است.
در داخل Cloud Shell موارد زیر را انجام دهید:
sh setup_psc.sh
پس از اتمام اسکریپت، از ویرایشگر Cloud Shell برای دانلود atlasEndpoints-psc-endpoint-us-west1.json به صورت محلی استفاده کنید.


فایل JSON را آپلود کنید
فایل json ذخیره شده قبلی atlasEndpoints-psc-endpoint-us-west1.json را آپلود کنید.


ایجاد را انتخاب کنید
اعتبارسنجی نقاط پایانی اتصال سرویس خصوصی
در رابط کاربری MongoDB، به پروژه خود بروید و سپس به مسیر Security → Network access → Private endpoint بروید. با انتخاب تب dedicated cluster، انتقال endpoint به حالت available، 10 دقیقه طول خواهد کشید.
وضعیت موجود

در کنسول ابری گوگل، به مسیر Network services → Private Services Connect بروید، تب Connected endpoint را انتخاب کنید که در آن نقاط پایانی مصرفکننده در حال گذار → Pending → Accepted نمایش داده میشوند، مثال زیر:

۸. ایجاد نقطه پایانی خصوصی برای us-west2
- وارد حساب کاربری Atlas خود شوید و به پروژه خود بروید.
آمادهسازی نقاط پایانی خصوصی در MongoDB Atlas
- انتخاب، دسترسی به شبکه → نقاط پایانی خصوصی → خوشه اختصاصی → افزودن نقطه پایانی خصوصی

ارائه دهنده ابر
- Google Cloud را انتخاب کنید، سپس بعدی

پیوست خدمات
- منطقه، us-west2، و سپس next را انتخاب کنید

نقاط پایانی
- برای ایجاد یک نقطه پایانی اتصال سرویس خصوصی، موارد زیر را ارائه دهید:
- شناسه پروژه ابری گوگل: برای جزئیات بیشتر، «نمایش دستورالعملها» را انتخاب کنید.
- نام VPC: vpc-مصرف کننده
- نام زیرشبکه: psc-endpoint-us-west2
- پیشوند نقطه پایانی اتصال سرویس خصوصی: psc-endpoint-us-west2

نقاط پایانی را تنظیم کنید
در بخش بعدی، یک اسکریپت پوسته ایجاد میشود که باید به صورت محلی با نام setup_psc.sh ذخیره شود. پس از ذخیره، اسکریپت پوسته را ویرایش کنید تا به psc دسترسی سراسری داده شود. میتوانید این کار را در پروژه ابری گوگل (Google Cloud Project Cloud Shell) انجام دهید.
- مثال اسکریپت پوسته، خروجی شما مقادیر متفاوتی خواهد داشت

- اسکریپت پوسته را از کنسول MongoBD کپی کنید و محتویات را در ترمینال Google Cloud Cloud Shell ذخیره کنید، مطمئن شوید که اسکریپت را با نام setup_psc.sh ذخیره میکنید.
مثال قبل از بروزرسانی:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
اسکریپت پوسته را برای پشتیبانی از دسترسی سراسری بهروزرسانی کنید
از ویرایشگر nano یا vi برای شناسایی و بهروزرسانی اسکریپت پوسته با استفاده از سینتکس زیر استفاده کنید:
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
مثال بعد از بروزرسانی:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
اسکریپت پوسته را اجرا کنید
اسکریپت setup_psc.sh را اجرا کنید، پس از تکمیل، فایلی به نام atlasEndpoints-psc-endpoint-us-west2.json ایجاد میشود. این فایل json شامل لیستی از آدرسهای IP و نامهای نقطه پایانی Private Service Connect مورد نیاز برای مرحله بعدی استقرار است.
در داخل Cloud Shell موارد زیر را انجام دهید:
sh setup_psc.sh
پس از اتمام اسکریپت، از ویرایشگر Cloud Shell برای دانلود atlasEndpoints-psc-endpoint-us-west2.json به صورت محلی استفاده کنید.


فایل JSON را آپلود کنید
فایل json ذخیره شده قبلی atlasEndpoints-psc-endpoint-us-west2.json را آپلود کنید.


ایجاد را انتخاب کنید
اعتبارسنجی نقاط پایانی اتصال سرویس خصوصی
در رابط کاربری MongoDB، به پروژه خود بروید و سپس به مسیر Security → Network access → Private endpoint بروید. با انتخاب تب dedicated cluster، انتقال endpoint به حالت آماده به کار پس از 10 دقیقه امکانپذیر است.
وضعیت موجود:

در کنسول ابری گوگل، به Network services → Private Services Connect بروید، تب Connected endpoint را انتخاب کنید که در آن نقاط پایانی مصرفکننده در حال گذار → Pending → Accepted نمایش داده میشوند، مثال زیر. در مجموع ۱۰۰ نقطه پایانی در نقطه پایانی مصرفکننده مستقر شدهاند و قبل از رفتن به مرحله بعدی، باید به حالت پذیرفتهشده منتقل شوند.

۹. اتصال به MongoDB atlas از طریق نقاط انتهایی خصوصی
پس از پذیرش اتصالات سرویس خصوصی، زمان اضافی (10 تا 15 دقیقه) برای بهروزرسانی خوشه MongoDB مورد نیاز است. در رابط کاربری MongoDB، خط خاکستری نشاندهنده بهروزرسانی خوشه است، بنابراین اتصال به نقطه پایانی خصوصی امکانپذیر نیست.

استقرار را شناسایی کرده و Connect را انتخاب کنید (توجه داشته باشید که کادر خاکستری دیگر وجود ندارد)

نوع اتصال را انتخاب کنید → نقطه پایانی خصوصی، یک روش اتصال را انتخاب کنید

اتصال با پوسته MongoDB را انتخاب کنید

انتخاب کنید، من پوسته MongoDB را نصب ندارم، اوبونتو ۲۰.۴ و مطمئن شوید که محتویات مرحله ۱ و مرحله ۳ را در یک دفترچه یادداشت کپی میکنید.

۱۰. برنامهی mongosh را نصب کنید
قبل از نصب، باید یک رشته فرمان بر اساس مقادیر کپی شده قبلی که در مراحل ۱ و ۳ به دست آمده است، ایجاد کنید. پس از آن، با استفاده از Cloud Shell به vm1 از طریق ssh متصل میشوید و به دنبال آن برنامه mongosh نصب و در پایگاه داده اصلی (us-west1) اعتبارسنجی میشود. تصویر اوبونتو ۲۰.۴ هنگام ایجاد vm1 در consumer-vpc نصب شده است.
روش اتصال را انتخاب کنید: مرحله 1، کپی کردن آدرس دانلود

رشته دستور نمونه، با مقادیر دلخواه خود جایگزین کنید:
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
یک روش اتصال انتخاب کنید، مرحله ۳.

رشته دستور نمونه، با مقادیر دلخواه خود جایگزین کنید:
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
وارد vm1 شوید
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
با استفاده از IAP در Cloud Shell وارد vm1 شوید، در صورت وجود تایم اوت دوباره امتحان کنید.
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
نصب را از طریق سیستم عامل انجام دهید
نصب را از طریق ورود به سیستم عامل Cloud Shell انجام دهید، جزئیات بیشتر موجود است ، سینتکس زیر را با رشته دلخواه خود بهروزرسانی کنید.
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
این عملیات باید با یک پاسخ دهد
OK
.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update -y
wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
sudo dpkg -i mongodb-mongosh_1.7.1_amd64.deb
اتصال به استقرار MongoDB
در داخل سیستم عامل Cloud Shell، مراحل زیر را انجام دهید. نام کاربری و رمز عبور پیکربندی شده codelab است.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
مثال زیر:

اجرای دستورات روی پایگاه داده
در داخل لاگین سیستم عامل Cloud Shell، مراحل زیر را انجام دهید.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})
۱۱. منطقه فعال MongoDB در حال Failover، ایالات متحده-غرب ۱
قبل از انجام failover، بیایید اعتبارسنجی کنیم که us-west1 گره اصلی است و us-west2 دو گره ثانویه دارد.
به پایگاه داده بروید → psc-mongodb-uswest1-uswest2 → مرور کلی

در بخش بعدی، به ماشین مجازی ۱ واقع در us-west1 وارد شوید، ناحیه کلاستر اصلی MongoDB در us-west1 را failover کنید و تأیید کنید که پایگاه داده هنوز از کلاستر MongoDB در us-west2 قابل دسترسی است.
شما میتوانید هر دو نوع failover اولیه و منطقهای را از Atlas UI آزمایش کنید.
- وارد رابط کاربری اطلس شوید.
- روی [...] در کنار نام کلاستر خود، psc-mongodb-uswest1-uswest2 → Test Outage کلیک کنید.

- قطع برق منطقهای → انتخاب مناطق را انتخاب کنید.

- منطقه اصلی، us-west1 → Simulate Regional Outage را انتخاب کنید.

پس از انتخاب، خوشه پس از ۳-۴ دقیقه شبیهسازی قطعی برق را نمایش میدهد.
پنجره را ببندید


تأیید کنید که us-west1 از کار افتاده و us-west2 اکنون به عنوان سرور اصلی در اختیار گرفته شده است
به پایگاه داده بروید → psc-mongodb-uswest1-uswest2 → مرور کلی

اعتبارسنجی اتصال به کلاستر توسط سرور اصلی جدید، us-west2
وارد vm1 واقع در us-west1 شوید و به mongodb در us-west2 دسترسی پیدا کنید و اعتبارسنجی سرویس خصوصی را انجام دهید تا به دسترسی سراسری متصل شوید.
اگر جلسه Cloud Shell شما خاتمه یافت، موارد زیر را انجام دهید:
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
با استفاده از IAP در Cloud Shell وارد vm1 شوید، در صورت وجود تایم اوت دوباره امتحان کنید.
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
اتصال به استقرار MongoDB
در داخل لاگین سیستم عامل Cloud Shell، مراحل زیر را انجام دهید.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
مثال زیر:

اجرای دستورات روی پایگاه داده
در داخل لاگین سیستم عامل Cloud Shell، مراحل زیر را انجام دهید.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit

موفقیت: شما تأیید کردید که دسترسی سراسری PSC امکان اتصال یکپارچه نقطه پایانی مصرفکننده را در سراسر مناطق فراهم میکند تا به دسترسیپذیری بالا یا به دلیل قطعیهای منطقهای کمک کند. در آزمایشگاه کد، خرابی منطقهای MongoDB در گره اصلی واقع در us-west1 رخ داد، بنابراین ناحیه ثانویه us-west2 یک گره اصلی را به دست گرفت. اگرچه خوشه منجر به قطعی منطقهای شد، اما vm1 مصرفکننده واقع در us-west1 با موفقیت به خوشه اصلی جدید در us-west2 رسید.
۱۲. پاکسازی
از کنسول ابری، نقاط پایانی مصرفکننده را حذف کنید
به سرویسهای شبکه → اتصال سرویس خصوصی → نقاط پایانی متصل بروید
از فیلتر psc-endpoint برای جلوگیری از حذف احتمالی نقاط پایانی مصرفکننده غیر آزمایشگاهی استفاده کنید. همه نقاط پایانی را انتخاب کنید → حذف کنید

آدرسهای IP داخلی استاتیک مرتبط با نقاط پایانی مصرفکننده را حذف کنید.
به شبکه VPC بروید → consumer-vpc → آدرسهای IP داخلی استاتیک
از فیلتر psc-endpoint برای حذف احتمالی نقاط پایانی مصرفکننده غیر آزمایشگاهی و افزایش ردیفها در هر صفحه به ۱۰۰ استفاده کنید. همه نقاط پایانی را انتخاب کنید → انتشار

از Cloud Shell، کامپوننتهای codelab را حذف کنید.
gcloud compute instances delete vm1 --zone=us-west1-a --quiet
gcloud compute networks subnets delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete psc-endpoint-us-west2 --region=us-west2 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute routers delete consumer-cr --region=us-west1 --quiet
gcloud compute networks delete consumer-vpc --quiet
از رابط کاربری اطلس، خوشه psc-mongodb-uswest1-uswest2 را شناسایی کنید → پایان شبیهسازی

پایان شبیهسازی قطعی برق را انتخاب کنید —> خروج

اکنون کلاستر در حال بازگرداندن us-west1 به عنوان سرور اصلی است، این فرآیند ۳-۴ دقیقه طول خواهد کشید. پس از اتمام، کلاستر را خاتمه دهید، به خط خاکستری که نشان دهنده تغییر وضعیت است توجه کنید.


نام خوشه را وارد کنید → خاتمه دهید

نقطه پایانی خصوصی مرتبط با us-west1 و us-west2 را حذف کنید
از رابط کاربری Atlas به مسیر Security → Network Access → Private Endpoint بروید و گزینه Terminate را انتخاب کنید.

۱۳. تبریک
تبریک میگوییم، شما با موفقیت یک نقطه پایانی Private Service Connect را با دسترسی جهانی به MongoDB در سراسر مناطق پیکربندی و اعتبارسنجی کردید. شما با موفقیت یک VPC مصرفکننده، MongoDB چند منطقهای و نقاط پایانی مصرفکننده ایجاد کردید. یک ماشین مجازی واقع در us-west1 پس از failover منطقهای با موفقیت به MongoDB در هر دو us-west1 و us-west2 متصل شد.
کازموپاپ فکر میکند که کدلبها فوقالعاده هستند!!

بعدش چی؟
به برخی از این آزمایشگاههای کد نگاهی بیندازید...
- استفاده از Private Service Connect برای انتشار و مصرف سرویسها با GKE
- استفاده از Private Service Connect برای انتشار و مصرف سرویسها
- با استفاده از Private Service Connect و یک متعادلکننده بار داخلی TCP Proxy، از طریق شبکه ترکیبی به سرویسهای On-Premium متصل شوید.
- استفاده از Private Service Connect با پیکربندی خودکار DNS