الوصول إلى برنامج MongoDB Versa 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 متعددة المناطق (الطوبولوجيا الموضحة في الشكل 2) بعقدة واحدة في us-west1 وعقدتين في مناطق us-west2 على التوالي.
  2. شبكة VPC خاصة بالمستهلكين والأجهزة الافتراضية ذات الصلة للوصول إلى مجموعات 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. قبل البدء

تعديل المشروع لدعم الدرس التطبيقي حول الترميز

يستخدم هذا الدرس التطبيقي حول الترميز $variables للمساعدة في تنفيذ إعدادات 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

ضبط Cloud Router وNAT

يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في الدرس التطبيقي حول الترميز لتثبيت حزمة البرامج بما أنّ مثيلات الأجهزة الافتراضية لا تحتوي على عنوان 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.

داخل Cloud Shell، يمكنك إنشاء مثيل 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"

للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:

  • ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
  • يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.

داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.

gcloud compute firewall-rules create ssh-iap-consumer-vpc \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6- إنشاء مجموعة MongoDB Versa Atlas متعددة المناطق

  • نحتاج إلى إعداد مجموعة Versa 3 قبل أن نبدأ في إعداد PSC. يمكنك الاشتراك في MongoDB Atlas بإحدى الطريقتين التاليتين:
  • من خلال Google Cloud Marketplace إذا كان لديك حساب على Google Cloud. يُرجى الرجوع إلى المستندات لإعداد اشتراكك.
  • مع صفحة التسجيل في Versa 3.
  • بمجرد الاشتراك في Versa 3 انقر على زر "Build a Database" (إنشاء قاعدة بيانات) كما هو موضح أدناه.

796f5bda844bf400.png

  • إنشاء مجموعة جديدة ← مخصّصة

56c340661d86962c.png

  • مقدّم خدمات السحابة الإلكترونية المنطقة ← Google Cloud
  • السُحب الإلكترونية المتعددة والمناطق المتعددة عزل تحميل العمل ← تم اختياره (علامة اختيار زرقاء)

6c10293ffd9814ae.png

  • العقد الكهربائي ← us-west1 (عقدة)، us-west2 (عقدتان)

e652bd944d785871.png

  • فئة المجموعة ← M10، مع ترك جميع الإعدادات الأخرى كإعداد تلقائي

ffa0195b96c2c5ff.png

  • اسم المجموعة ← psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • الاختيار ← إنشاء مجموعة

ec5e3e6983c02e27.png

  • يستغرق إنشاء قاعدة البيانات من 7 إلى 10 دقائق

d75778d5abf484aa.png

عرض المجموعة بعد نشرها

1f0ec6a401578650.png

7. إنشاء نقطة نهاية خاصة لنا-west1

  • قم بتسجيل الدخول إلى حسابك في Versa 3 وانتقل إلى مشروعك.

إنشاء مستخدم جديد للسماح بالوصول للقراءة/الكتابة إلى أي قاعدة بيانات

الأمان ← الوصول إلى قاعدة البيانات حدد إضافة مستخدم قاعدة بيانات جديد. في ما يلي مثال على اسم المستخدم وكلمة المرور اللذين تم ضبطهما كدرس تطبيقي حول الترميز. تأكد من تحديد قراءة وكتابة الدور المضمنة في أي قاعدة بيانات.

f622ab14ddc96fc7.png

  • ضمن "الأمان" ← "الوصول إلى الشبكة"، لا تتطلّب قائمة الوصول إلى عناوين IP إدخالاً.

إعداد نقاط النهاية الخاصة في MongoDB Atlas

  • الاختيار، الوصول إلى الشبكة ← نقاط النهاية الخاصة ← المجموعة المخصّصة ← إضافة نقطة نهاية خاصة 88f5c1d9ae7e46d9.png

مقدّم خدمات السحابة الإلكترونية

  • اختَر Google Cloud، ثم انقر على "التالي".

5503248bf4019a35.png

مرفق خدمة

  • حدد المنطقة، us-west1، ثم التالي

cb31aea7cad182f9.png

نقاط النهاية

  • لإنشاء نقطة نهاية اتصال خدمة خاصة، يُرجى تقديم ما يلي:
  • رقم تعريف مشروع Google Cloud: اختَر "عرض التعليمات". للحصول على التفاصيل
  • اسم VPC: المستهلك-vpc
  • اسم الشبكة الفرعية: psc-endpoint-us-west1
  • بادئة نقطة نهاية اتصال الخدمة الخاصة: psc-endpoint-us-west1

21d76af5367832f4.png

إعداد نقاط النهاية

في القسم التالي، يتم إنشاء نص برمجي لهيكل واجهة المستخدم يجب حفظه باسم setup_psc.sh محليًا. بعد الحفظ، عدِّل نص واجهة الأوامر للسماح بالوصول الشامل إلى psc. يمكنك تنفيذ هذا الإجراء ضمن مشروع Google Cloud Shell.

  • مثال على نص برمجي من خلال 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

تعديل نص Shell البرمجي لإتاحة الوصول العام

استخدم محرر nano أو vi لتحديد برنامج Shell البرمجي وتحديثه باستخدام بناء الجملة أدناه:

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 على الجهاز.

2856802dd6497f51.png b0059dc8e1558891.png

تحميل ملف JSON

تحميل ملف json المحفوظ سابقًا atlasEndpoints-psc-endpoint-us-west1.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

اختيار "إنشاء"

التحقّق من صحة نقاط نهاية Private Service Connect

في واجهة مستخدم MongoDB، انتقِل إلى مشروعك ثم انقر على "الأمان" ← "الوصول إلى الشبكة" ← "نقطة النهاية الخاصة". عند اختيار علامة التبويب المجموعة المخصّصة، سيستغرق الانتقال إلى نقطة النهاية 10 دقائق.

الحالة المتاحة

972aff09d180d9de.png

في Google Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Services Connect، ثم اختَر علامة التبويب "نقطة نهاية متّصلة" التي تعرض نقاط النهاية الخاصة بالمستهلكين في انتظار المراجعة ← تمّت الموافقة، على سبيل المثال أدناه:

5472dd938604b3.png

8. إنشاء نقطة نهاية خاصة لنا-west2

  • قم بتسجيل الدخول إلى حسابك في Versa 3 وانتقل إلى مشروعك.

إعداد نقاط النهاية الخاصة في MongoDB Atlas

  • الاختيار، الوصول إلى الشبكة ← نقاط النهاية الخاصة ← المجموعة المخصّصة ← إضافة نقطة نهاية خاصة 88f5c1d9ae7e46d9.png

مقدّم خدمات السحابة الإلكترونية

  • اختَر Google Cloud، ثم انقر على "التالي".

5503248bf4019a35.png

مرفق خدمة

  • حدد المنطقة، us-west2، ثم التالي

fc0b7a8e4274be3b.png

نقاط النهاية

  • لإنشاء نقطة نهاية اتصال خدمة خاصة، يُرجى تقديم ما يلي:
  • رقم تعريف مشروع Google Cloud: اختَر "عرض التعليمات". للحصول على التفاصيل
  • اسم VPC: المستهلك-vpc
  • اسم الشبكة الفرعية: psc-endpoint-us-west2
  • بادئة نقطة نهاية اتصال الخدمة الخاصة: psc-endpoint-us-west2

17b5a056587ede8a.png

إعداد نقاط النهاية

في القسم التالي، يتم إنشاء نص برمجي لهيكل واجهة المستخدم يجب حفظه باسم setup_psc.sh محليًا. بعد الحفظ، عدِّل نص واجهة الأوامر للسماح بالوصول الشامل إلى psc. يمكنك تنفيذ هذا الإجراء ضمن مشروع Google Cloud Shell.

  • مثال على نص برمجي من خلال 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

تعديل نص Shell البرمجي لإتاحة الوصول العام

استخدم محرر nano أو vi لتحديد برنامج Shell البرمجي وتحديثه باستخدام بناء الجملة أدناه:

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 على الجهاز.

2856802dd6497f51.png 6e3d944944718f13.png

تحميل ملف JSON

تحميل ملف json المحفوظ سابقًا atlasEndpoints-psc-endpoint-us-west2.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

اختيار "إنشاء"

التحقّق من صحة نقاط نهاية Private Service Connect

في واجهة مستخدم MongoDB، انتقِل إلى مشروعك ثم انقر على "الأمان" ← "الوصول إلى الشبكة" ← "نقطة النهاية الخاصة". وباختيار علامة التبويب والمجموعة العنقودية المخصصة، تصبح نقطة النهاية متاحة بعد 10 دقائق.

الحالة المتاحة:

8801df4f6b39d20a.png

في Google Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Services Connect (ربط الخدمات الخاصة)، ثم اختَر علامة التبويب "نقطة نهاية متّصلة" التي تعرض نقاط النهاية الخاصة بالمستهلكين في انتظار المراجعة ← "مقبولة"، مثال أدناه. تم نشر ما مجموعه 100 نقطة نهاية في نقطة نهاية المستهلك إلى الخطوة "مقبول" قبل الانتقال إلى الخطوة التالية.

6131abcdef5c1f49.png

9. الاتصال بأطلس MongoDB من نقاط النهاية الخاصة

عند قبول اتصالات الخدمة الخاصة، ستكون هناك حاجة إلى وقت إضافي (من 10 إلى 15 دقيقة) لتحديث مجموعة MongoDB. في واجهة مستخدم MongoDB، يمثل المخطط الرمادي تحديث المجموعة، وبالتالي لا يتوفر الاتصال بنقطة النهاية الخاصة.

c1524d2c0c5765d1.png

حدد عملية النشر واختر "اتصال" (لاحظ أن المربع الرمادي لم يعد موجودًا)

3eea96af20bfad20.png

اختَر نوع الاتصال ← نقطة نهاية خاصة، ثم اختَر طريقة اتصال.

16a9090e495640c7.png

اختَر "الربط بمنصة MongoDB Shell"

35e422af16cb5ce0.png

حدد، لم يتم تثبيت MongoDB Shell، Ubuntu 20.4، وأتأكد من نسخ المحتويات من الخطوة 1 و3 إلى مفكرة.

51be47403c00bab4.png

10. تثبيت تطبيق mongosh

قبل التثبيت، ستحتاج إلى إنشاء سلسلة أوامر استنادًا إلى القيم المنسوخة سابقًا والتي تم الحصول عليها في الخطوتين 1 و3. بعد ذلك، يمكنك استخدام ssh في vm1 باستخدام Cloud Shell متبوعًا بتثبيت تطبيق mongosh والتحقّق من صحته في قاعدة البيانات الأساسية (us-west1). تم تثبيت صورة Ubuntu 20.4 عند إنشاء vm1 في 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

يُرجى تسجيل الدخول إلى vm1 باستخدام ميزة الشراء داخل التطبيق في Cloud Shell، وإعادة المحاولة في حال انتهاء المهلة.

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، نفِّذ ما يلي. إنّ اسم المستخدم وكلمة المرور اللذين تم ضبطهما هما درس تطبيقي حول الترميز.

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 النشطة، us-west1

قبل أن نقوم بتجاوز الفشل، دعنا نتحقق من أن us-west1 هي العقد الأساسي وأن us-west2 تضم عقدتين ثانويتين.

الانتقال إلى قاعدة البيانات → psc-mongodb-uswest1-uswest2 → نظرة عامة

64ca0395807bb3ac.png

في القسم التالي، قم بتسجيل الدخول إلى vm1 الموجود في us-west1، وتجاوز الفشل في منطقة مجموعة MongoDB الأساسية us-west1 وتحقق من إمكانية الوصول إلى قاعدة البيانات من مجموعة MongoDB في us-west2.

يمكنك اختبار كل من تجاوز الإخفاق الأساسي والإقليمي من واجهة مستخدم Versa 3.

  • قم بتسجيل الدخول إلى واجهة مستخدم Versa 3.
  • انقر على [...] بجانب اسم المجموعة، psc-mongodb-uswest1-uswest2 ← اختبار انقطاع الخدمة.

3a50da4381817975.png

  • اختَر "إيقاف مؤقت على مستوى منطقة معيّنة" ← "مناطق محدَّدة".

b8dfff376477bcbb.png

  • حدد المنطقة الأساسية، us-west1← محاكاة الانقطاع الإقليمي.

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

يُرجى تسجيل الدخول إلى vm1 باستخدام ميزة الشراء داخل التطبيق في Cloud Shell، وإعادة المحاولة في حال انتهاء المهلة.

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.

12. تنظيف

حذف نقاط نهاية المستهلك من Cloud Console

الانتقال إلى خدمات الشبكة ← Private Service Connect ← نقاط النهاية المتصلة

استخدِم الفلتر psc-endpoint لإزالة الحذف المحتمل لنقاط النهاية للمستهلكين الذين لا يستخدمون ميزة اختبارية. اختيار جميع نقاط النهاية → DELETE

192548e374b444a1.png

حذف عناوين IP الداخلية الثابتة المرتبطة بنقاط نهاية المستهلك

الانتقال إلى شبكة VPC ←consumer-vpc← عناوين IP الداخلية الثابتة

استخدِم الفلتر psc-endpoint لإزالة الحذف المحتمل لنقاط النهاية الخاصة بالمستهلكين خارج المختبر وزيادة الصفوف في كل صفحة إلى 100. اختيار كل نقاط النهاية ← إصدار

4cebf164c4fecd83.png

من Cloud Shell، احذف مكونات الدرس التطبيقي حول الترميز.

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

من واجهة مستخدم Versa 3، تحديد المجموعة psc-mongodb-uswest1-uswest2 ← المحاكاة النهائية

f82e28ac984d9e20.png

اختَر "محاكاة انقطاع الخدمة" —> الخروج

38feaf055abdceea.png

تقوم المجموعة الآن بإرجاع us-west1 كمجموعة أساسية، وستستغرق هذه العملية من 3 إلى 4 دقائق. وبعد الانتهاء، أنهِ المجموعة، لاحظ المخطط الرمادي الذي يشير إلى تغيير الحالة.

f249a61bcc966d41.png

9427a9349daa1fea.png

إدراج اسم المجموعة ← إنهاء

9ef6d3a6387c5b4b.png

حذف نقطة النهاية الخاصة المرتبطة بـ us-west1 وus-west2

من واجهة مستخدم Versa 3 انتقل إلى الأمان ← الوصول إلى الشبكة ← نقطة النهاية الخاصة ← حدد إنهاء

56415ea954b2fec9.png

13. تهانينا

تهانينا، لقد نجحت في ضبط نقطة نهاية Private Service Connect والتحقّق من صحتها من خلال الوصول العام إلى MongoDB في جميع المناطق. لقد نجحت في إنشاء شبكة VPC خاصة بالمستهلكين وMongoDB متعددة المناطق ونقاط نهاية للمستهلكين. تم ربط جهاز افتراضي في us-west1 بـ MongoDB بنجاح في كل من us-west1 وus-west2 عند حدوث عطل في المنطقة.

يرى موقع Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.

8c2a10eb841f7b01.jpeg

الخطوات التالية

اطّلع على بعض هذه الدروس التطبيقية حول الترميز...

تعزيز القراءة الفيديوهات

المستندات المرجعية