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

1. مقدمه

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

شکل 1. 4f9551fc32ed83f5.png

به عنوان یک مصرف کننده خدمات، این امکان را به شما می دهد تا در انتخاب نحوه تخصیص IP های خصوصی خود به سرویس ها انعطاف پذیر باشید، در حالی که بار مدیریت محدوده های زیرشبکه را برای VPC های تولید کننده از بین می برد. اکنون می توانید به سادگی با استفاده از یک سرویس اتصال، یک IP مجازی انتخابی از VPC خود را به چنین سرویسی اختصاص دهید.

در این نرم‌افزار، شما یک معماری جامع Private Service Connect ایجاد می‌کنید که استفاده از دسترسی سراسری PSC را با اطلس MongoDB نشان می‌دهد.

دسترسی جهانی به مشتریان این امکان را می دهد تا به Private Service Connect (PSC) در سراسر مرزهای منطقه متصل شوند. این برای ایجاد دسترسی بالا در سرویس‌های مدیریت‌شده که در چندین منطقه میزبانی می‌شوند یا به مشتریان اجازه دسترسی به سرویسی را که در همان منطقه مشتری نیست، مفید است.

2. فعال کردن دسترسی جهانی

دسترسی سراسری یک ویژگی اختیاری است که بر روی قانون حمل و نقل سمت مصرف کننده پیکربندی شده است. دستور زیر نحوه پیکربندی آن را نشان می دهد:

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

دسترسی سراسری را نیز می توان در هر زمان برای نقاط پایانی موجود روشن یا خاموش کرد. هنگام فعال کردن دسترسی سراسری در یک نقطه پایانی موجود، هیچ اختلالی در ترافیک برای اتصالات فعال وجود ندارد. دسترسی جهانی در یک قانون حمل و نقل موجود با دستور زیر فعال می شود:

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

3. آنچه می سازید

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

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

شکل 2. ab6c2791514c4481.png

چیزی که یاد خواهید گرفت

  • نحوه ایجاد VPC و زیر شبکه های مستقر در دو منطقه
  • نحوه استقرار یک خوشه اطلس MongoDB چند منطقه ای
  • نحوه ایجاد یک نقطه پایانی خصوصی
  • نحوه اتصال به MongoDB
  • نحوه انجام و اعتبار سنجی خطای MongoDB چند منطقه ای

آنچه شما نیاز دارید

  • پروژه Google Cloud
  • برای هر منطقه یک زیرشبکه /26 ارائه دهید
  • دسترسی مالک پروژه یا مالک سازمان به MongoDB Atlas برای ایجاد یک خوشه MongoDB با ردیف کلاستر M10 یا بالاتر. (لطفا از GETATLAS برای دریافت اعتبار رایگان برای اجرای PoV استفاده کنید)

4. قبل از شروع

پروژه را برای پشتیبانی از Codelab به روز کنید

این Codelab از متغیرهای $ برای کمک به پیاده سازی پیکربندی gcloud در Cloud Shell استفاده می کند.

در داخل Cloud Shell موارد زیر را انجام دهید:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

5. راه اندازی مصرف کننده

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

Cloud NAT در کد لبه برای نصب بسته نرم افزاری استفاده می شود زیرا نمونه های VM آدرس IP خارجی ندارند.

در داخل 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 اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های VM که می خواهید با استفاده از 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

6. خوشه MongoDB Atlas چند منطقه ای را ایجاد کنید

  • قبل از شروع راه اندازی PSC باید یک خوشه Atlas راه اندازی کنیم. می توانید به یکی از دو روش زیر در MongoDB Atlas مشترک شوید:
  • اگر حساب Google Cloud دارید، از طریق Google Cloud Marketplace . برای تنظیم اشتراک خود به مستندات مراجعه کنید.
  • با صفحه ثبت نام اطلس .
  • پس از عضویت در Atlas روی دکمه Build a Database مطابق شکل زیر کلیک کنید.

796f5bda844bf400.png

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

56c340661d86962c.png

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

6c10293ffd9814ae.png

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

e652bd944d785871.png

  • Cluster Tier → M10، تمام تنظیمات دیگر را به عنوان پیش فرض بگذارید

ffa0195b96c2c5ff.png

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

3720fb8c15ba5cc2.png

  • ← Create Cluster را انتخاب کنید

ec5e3e6983c02e27.png

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

d75778d5abf484aa.png

نمای خوشه پس از استقرار

1f0ec6a401578650.png

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

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

یک کاربر جدید ایجاد کنید تا اجازه دسترسی خواندن/نوشتن به هر پایگاه داده را بدهد

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

f622ab14ddc96fc7.png

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

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

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

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

  • Google Cloud و سپس next را انتخاب کنید

5503248bf4019a35.png

پیوست سرویس

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

cb31aea7cad182f9.png

نقاط پایانی

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

21d76af5367832f4.png

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

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

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

5c80cf7315a05c25.png

  • اسکریپت پوسته را از کنسول MongoBD کپی کنید و محتویات را در ترمینال Google 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 و نام‌های نقطه پایانی اتصال سرویس خصوصی است که برای مرحله بعدی استقرار لازم است.

Inside Cloud Shell موارد زیر را انجام می دهد:

sh setup_psc.sh

پس از تکمیل اسکریپت، از ویرایشگر Cloud Shell برای دانلود atlasEndpoints-psc-endpoint-us-west1.json به صورت محلی استفاده کنید.

2856802dd6497f51.pngb0059dc8e1558891.png

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

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

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

اعتبار سنجی نقاط پایانی Private Service Connect

در MongoDB UI، به پروژه خود و سپس امنیت → دسترسی به شبکه → نقطه پایانی خصوصی بروید. با انتخاب برگه، خوشه اختصاصی، انتقال نقطه پایانی به موجود 10 دقیقه طول می کشد.

وضعیت موجود

972aff09d180d9de.png

در کنسول ابری Google، به خدمات شبکه ← Private Services Connect بروید، برگه نقطه پایانی متصل را انتخاب کنید که نقاط پایانی مصرف کننده را در حال انتقال در انتظار → پذیرفته شده نشان می دهد، مثال زیر:

5472dd938604b3.png

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

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

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

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

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

  • Google Cloud و سپس next را انتخاب کنید

5503248bf4019a35.png

پیوست سرویس

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

fc0b7a8e4274be3b.png

نقاط پایانی

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

17b5a056587ede8a.png

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

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

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

b021821e7d59f450.png

  • اسکریپت پوسته را از کنسول MongoBD کپی کنید و محتویات را در ترمینال Google 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 و نام‌های نقطه پایانی اتصال سرویس خصوصی است که برای مرحله بعدی استقرار لازم است.

Inside Cloud Shell موارد زیر را انجام می دهد:

sh setup_psc.sh

پس از تکمیل اسکریپت، از ویرایشگر Cloud Shell برای دانلود atlasEndpoints-psc-endpoint-us-west2.json به صورت محلی استفاده کنید.

2856802dd6497f51.png6e3d944944718f13.png

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

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

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

اعتبار سنجی نقاط پایانی Private Service Connect

در MongoDB UI، به پروژه خود و سپس امنیت → دسترسی به شبکه → نقطه پایانی خصوصی بروید. انتخاب برگه، خوشه اختصاصی، انتقال نقطه پایانی به پس از 10 دقیقه در دسترس است.

وضعیت موجود:

8801df4f6b39d20a.png

در کنسول ابری Google، به خدمات شبکه ← Private Services Connect بروید، برگه نقطه پایانی متصل را انتخاب کنید که نقاط پایانی مصرف کننده را در حال انتقال در انتظار → پذیرفته شده، به عنوان مثال در زیر نشان می دهد. در مجموع 100 نقطه پایانی در نقطه پایانی مصرف‌کننده مستقر شده‌اند و باید قبل از حرکت به مرحله بعدی به مرحله پذیرش تبدیل شوند.

6131abcdef5c1f49.png

9. از نقاط پایانی خصوصی به اطلس MongoDB متصل شوید

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

Connect with the MongoDB Shell را انتخاب کنید

35e422af16cb5ce0.png

انتخاب کنید، من MongoDB Shell، اوبونتو 20.4 را نصب نکرده‌ام و مطمئن شوید که محتویات مرحله 1 و مرحله 3 را در دفترچه یادداشت کپی کنید.

51be47403c00bab4.png

10. اپلیکیشن mongosh را نصب کنید

قبل از نصب، باید یک رشته فرمان بر اساس مقادیر کپی شده قبلی به دست آمده در مراحل 1 و 3 ایجاد کنید. پس از آن، با استفاده از Cloud Shell به vm1 وارد می‌شوید و سپس برنامه mongosh را نصب و اعتبار سنجی در پایگاه داده اولیه (us-west1) خواهید داشت. تصویر اوبونتو 20.4 هنگام ایجاد vm1 در consumer-vpc نصب شد.

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

5da980ff86265dd8.png

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

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

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

698286bdf3dee3c7.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"})

11. منطقه MongoDB فعال Failover، us-west1

قبل از انجام failover، اجازه دهید اعتبار سنجی کنیم که us-west1 اولیه است و us-west2 دارای دو گره ثانویه است.

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

64ca0395807bb3ac.png

در بخش زیر وارد vm1 واقع در us-west1 شوید، منطقه خوشه MongoDB اولیه us-west1 را خراب کنید و بررسی کنید که پایگاه داده هنوز از خوشه MongoDB در us-west2 قابل دسترسی است.

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

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

3a50da4381817975.png

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

b8dfff376477bcbb.png

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

76494a750a040bc5.png

پس از انتخاب، خوشه پس از 3-4 دقیقه شبیه سازی خاموشی را نشان می دهد

پنجره را ببند

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 امکان اتصال یکپارچه نقطه پایانی مصرف‌کننده را در سراسر مناطق برای کمک به دسترسی بالا یا به دلیل قطعی‌های منطقه‌ای فراهم می‌کند. در Codelab، خطای منطقه‌ای MongoDB در گره اولیه واقع در us-west1 رخ داد، بنابراین منطقه ثانویه us-west2 یک اولیه را گرفت. اگرچه خوشه منجر به قطع منطقه ای شد، مصرف کننده vm1 واقع در us-west1 با موفقیت به خوشه اولیه جدید در us-west2 رسید.

12. پاکسازی

از Cloud Console نقاط پایانی مصرف کننده را حذف کنید

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

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

192548e374b444a1.png

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

به شبکه VPC → مصرف کننده-vpc → آدرس های IP داخلی استاتیک بروید

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

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

از رابط کاربری Atlas خوشه psc-mongodb-uswest1-uswest2 را شناسایی کنید → شبیه سازی پایان

f82e28ac984d9e20.png

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

38feaf055abdceea.png

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

f249a61bcc966d41.png

9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

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

از رابط کاربری Atlas به امنیت → دسترسی به شبکه → نقطه پایانی خصوصی → خاتمه را انتخاب کنید.

56415ea954b2fec9.png

13. تبریک می گویم

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

Cosmopup فکر می کند که نرم افزارهای کدنویسی عالی هستند!!

8c2a10eb841f7b01.jpeg

بعدش چی؟

برخی از این کدها را بررسی کنید...

ادامه مطلب و ویدیوها

اسناد مرجع