دسترسی به MongoDB Atlas چند منطقه ای با Private Service Connect

۱. مقدمه

اتصال سرویس خصوصی (PSC) نحوه‌ی استفاده‌ی ایمن و خصوصی از سرویس‌ها را ساده می‌کند. این مدل با فراهم کردن امکان اتصال خصوصی مصرف‌کنندگان سرویس به تولیدکنندگان سرویس در سازمان‌ها و حذف نیاز به همتاسازی ابر خصوصی مجازی، معماری شبکه را به طرز چشمگیری آسان‌تر می‌کند. شکل 1 همتاسازی VPC و ویژگی‌های PSC را نشان می‌دهد.

شکل ۱. 4f9551fc32ed83f5.png

به عنوان یک مصرف‌کننده سرویس، این به شما امکان می‌دهد تا انعطاف‌پذیری انتخاب نحوه تخصیص 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

۳. آنچه خواهید ساخت

  1. یک کلاستر چند منطقه‌ای MongoDB Atlas (توپولوژی شرح داده شده در شکل ۲) با یک گره در مناطق us-west1 و دو گره در مناطق us-west2 ایجاد خواهد شد.
  2. یک VPC مصرف‌کننده و ماشین مجازی مرتبط برای دسترسی به خوشه‌های MongoDB در us-west1 و us-west2.
  3. یک VPC و دو زیرشبکه به ترتیب در مناطق us-west1 و us-west2 با حداقل ۶۴ آدرس IP آزاد در هر زیرشبکه (زیرشبکه‌هایی با /۲۶ و کمتر ایجاد کنید).

کلاینت MongoDB روی vm1 در vpc مصرف‌کننده نصب خواهد شد. هنگامی که گره اصلی در us-west1 از کار بیفتد، کلاینت قادر به خواندن/نوشتن از طریق گره اصلی جدید در us-west2 خواهد بود.

شکل ۲. ab6c2791514c4481.png

آنچه یاد خواهید گرفت

  • نحوه ایجاد یک 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) در صورت داشتن حساب کاربری گوگل کلود. برای تنظیم اشتراک خود به مستندات مراجعه کنید.
  • با صفحه ثبت نام اطلس .
  • پس از عضویت در اطلس، مطابق شکل زیر روی دکمه ساخت پایگاه داده کلیک کنید.

796f5bda844bf400.png

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

56c340661d86962c.png

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

6c10293ffd9814ae.png

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

e652bd944d785871.png

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

ffa0195b96c2c5ff.png

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

3720fb8c15ba5cc2.png

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

ec5e3e6983c02e27.png

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

d75778d5abf484aa.png

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

1f0ec6a401578650.png

۷. ایجاد نقطه پایانی خصوصی برای us-west1

  • وارد حساب کاربری Atlas خود شوید و به پروژه خود بروید.

یک کاربر جدید ایجاد کنید تا دسترسی خواندن/نوشتن به هر پایگاه داده‌ای را فراهم کند.

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

f622ab14ddc96f7.png

  • در بخش امنیت → دسترسی به شبکه، فهرست دسترسی به IP نیازی به وارد کردن ندارد.

آماده‌سازی نقاط پایانی خصوصی در MongoDB Atlas

  • انتخاب، دسترسی به شبکه → نقاط پایانی خصوصی → خوشه اختصاصی → افزودن نقطه پایانی خصوصی ۸۸f5c1d9ae7e46d9.png

ارائه دهنده ابر

  • Google Cloud را انتخاب کنید، سپس بعدی

5503248bf4019a35.png

پیوست خدمات

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

cb31aea7cad182f9.png

نقاط پایانی

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

۲۱d76af5367832f4.png

نقاط پایانی را تنظیم کنید

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

  • مثال اسکریپت پوسته، خروجی شما مقادیر متفاوتی خواهد داشت

5c80cf7315a05c25.png

  • اسکریپت پوسته را از کنسول 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 به صورت محلی استفاده کنید.

۲۸۵۶۸۰۲dd۶۴۹۷f۵۱.pngb0059dc8e1558891.png

فایل JSON را آپلود کنید

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

ایجاد را انتخاب کنید

اعتبارسنجی نقاط پایانی اتصال سرویس خصوصی

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

وضعیت موجود

۹۷۲aff09d180d9de.png

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

5472dd938604b3.png

۸. ایجاد نقطه پایانی خصوصی برای us-west2

  • وارد حساب کاربری Atlas خود شوید و به پروژه خود بروید.

آماده‌سازی نقاط پایانی خصوصی در MongoDB Atlas

  • انتخاب، دسترسی به شبکه → نقاط پایانی خصوصی → خوشه اختصاصی → افزودن نقطه پایانی خصوصی ۸۸f5c1d9ae7e46d9.png

ارائه دهنده ابر

  • Google Cloud را انتخاب کنید، سپس بعدی

5503248bf4019a35.png

پیوست خدمات

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

fc0b7a8e4274be3b.png

نقاط پایانی

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

17b5a056587ede8a.png

نقاط پایانی را تنظیم کنید

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

  • مثال اسکریپت پوسته، خروجی شما مقادیر متفاوتی خواهد داشت

b021821e7d59f450.png

  • اسکریپت پوسته را از کنسول 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 به صورت محلی استفاده کنید.

۲۸۵۶۸۰۲dd۶۴۹۷f۵۱.png6e3d944944718f13.png

فایل JSON را آپلود کنید

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

ایجاد را انتخاب کنید

اعتبارسنجی نقاط پایانی اتصال سرویس خصوصی

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

وضعیت موجود:

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

۹. اتصال به MongoDB atlas از طریق نقاط انتهایی خصوصی

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

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

35e422af16cb5ce0.png

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

51be47403c00bab4.png

۱۰. برنامه‌ی mongosh را نصب کنید

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

روش اتصال را انتخاب کنید: مرحله 1، کپی کردن آدرس دانلود

5da980ff86265dd8.png

رشته دستور نمونه، با مقادیر دلخواه خود جایگزین کنید:

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

یک روش اتصال انتخاب کنید، مرحله ۳.

۶۹۸۲۸۶bdf3dee3c7.png

رشته دستور نمونه، با مقادیر دلخواه خود جایگزین کنید:

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

مثال زیر:

d5d0324a273b4d5e.png

اجرای دستورات روی پایگاه داده

در داخل لاگین سیستم عامل 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 → مرور کلی

64ca0395807bb3ac.png

در بخش بعدی، به ماشین مجازی ۱ واقع در us-west1 وارد شوید، ناحیه کلاستر اصلی MongoDB در us-west1 را failover کنید و تأیید کنید که پایگاه داده هنوز از کلاستر MongoDB در us-west2 قابل دسترسی است.

شما می‌توانید هر دو نوع failover اولیه و منطقه‌ای را از Atlas UI آزمایش کنید.

  • وارد رابط کاربری اطلس شوید.
  • روی [...] در کنار نام کلاستر خود، psc-mongodb-uswest1-uswest2 → Test Outage کلیک کنید.

3a50da4381817975.png

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

b8dfff376477bcbb.png

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

۷۶۴۹۴a۷۵۰a۰۴۰bc۵.png

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

پنجره را ببندید

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

تأیید کنید که us-west1 از کار افتاده و us-west2 اکنون به عنوان سرور اصلی در اختیار گرفته شده است

به پایگاه داده بروید → psc-mongodb-uswest1-uswest2 → مرور کلی

86fd7d5230715645.png

اعتبارسنجی اتصال به کلاستر توسط سرور اصلی جدید، 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

مثال زیر:

d262800a557b41a3.png

اجرای دستورات روی پایگاه داده

در داخل لاگین سیستم عامل Cloud Shell، مراحل زیر را انجام دهید.

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()

exit

20c2571d84c0661d.png

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

۱۲. پاکسازی

از کنسول ابری، نقاط پایانی مصرف‌کننده را حذف کنید

به سرویس‌های شبکه → اتصال سرویس خصوصی → نقاط پایانی متصل بروید

از فیلتر psc-endpoint برای جلوگیری از حذف احتمالی نقاط پایانی مصرف‌کننده غیر آزمایشگاهی استفاده کنید. همه نقاط پایانی را انتخاب کنید → حذف کنید

۱۹۲۵۴۸e۳۷۴b۴۴۴a۱.png

آدرس‌های IP داخلی استاتیک مرتبط با نقاط پایانی مصرف‌کننده را حذف کنید.

به شبکه VPC بروید → consumer-vpc → آدرس‌های IP داخلی استاتیک

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

4cebf164c4fecd83.png

از 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 را شناسایی کنید → پایان شبیه‌سازی

f82e28ac984d9e20.png

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

38feaf055abdceea.png

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

f249a61bcc966d41.png

9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

نقطه پایانی خصوصی مرتبط با us-west1 و us-west2 را حذف کنید

از رابط کاربری Atlas به مسیر Security → Network Access → Private Endpoint بروید و گزینه Terminate را انتخاب کنید.

56415ea954b2fec9.png

۱۳. تبریک

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

کازموپاپ فکر می‌کند که کدلب‌ها فوق‌العاده هستند!!

8c2a10eb841f7b01.jpeg

بعدش چی؟

به برخی از این آزمایشگاه‌های کد نگاهی بیندازید...

مطالعه بیشتر و ویدیوها

اسناد مرجع