الوصول إلى برنامج MongoDB Versa Atlas المتعدّد المناطق من خلال Private Service Connect

1. مقدمة

تسهّل خدمة Private Service Connect (PSC) طريقة استهلاك الخدمات بشكل آمن وخاص. يسهّل هذا النموذج بنية الشبكة بشكل كبير من خلال السماح لمستهلكي الخدمات بالاتصال بشكل خاص بمقدّمي الخدمات في مختلف المؤسسات، كما أنّه يلغي الحاجة إلى ربط السحابة الإلكترونية الخاصة الافتراضية. يوضّح الشكل 1 سمات ربط شبكات VPC وPSC.

الشكل 1. 4f9551fc32ed83f5.png

بصفتك مستهلكًا للخدمة، تتيح لك هذه الميزة المرونة في اختيار كيفية تخصيص عناوين IP الخاصة للخدمات، مع إزالة عبء إدارة نطاقات الشبكات الفرعية لشبكات VPC الخاصة بالمنتِج. يمكنك الآن ببساطة تعيين عنوان IP افتراضي من شبكتك VPC إلى هذه الخدمة باستخدام Service Connect.

في هذا الدرس التطبيقي حول الترميز، ستنشئ بنية شاملة لخدمة Private Service Connect توضّح كيفية استخدام ميزة الوصول العالمي إلى PSC مع خدمة MongoDB Atlas.

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

يتم استخدام Cloud 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"

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

  • يجب إعداد مجموعة Atlas قبل البدء في إعداد PSC. يمكنك الاشتراك في MongoDB Atlas بإحدى الطريقتَين أدناه:
  • من خلال Google Cloud Marketplace إذا كان لديك حساب على Google Cloud راجِع المستندات لإعداد اشتراكك.
  • صفحة التسجيل في Atlas
  • بعد الاشتراك في Atlas، انقر على الزر "إنشاء قاعدة بيانات" (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. إنشاء نقطة نهاية خاصة لمنطقة us-west1

  • سجِّل الدخول إلى حسابك على Atlas وانتقِل إلى مشروعك.

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

انتقِل إلى "الأمان" (Security) → "الوصول إلى قاعدة البيانات" (Database Access)، ثم اختَر "إضافة مستخدم جديد لقاعدة البيانات" (add new database user). في ما يلي مثال على اسم المستخدم وكلمة المرور اللذين تم ضبطهما على codelab. تأكَّد من اختيار دور مدمج للقراءة والكتابة في أي قاعدة بيانات.

f622ab14ddc96fc7.png

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

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

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

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

  • اختَر Google Cloud، ثمّ "التالي".

5503248bf4019a35.png

مرفق الخدمة

  • اختَر المنطقة us-west1، ثم انقر على "التالي".

cb31aea7cad182f9.png

نقاط النهاية

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

21d76af5367832f4.png

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

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

  • مثال على نص برمجي في shell، وستتضمّن النتائج قيمًا مختلفة

5c80cf7315a05c25.png

  • انسخ نص 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

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

استخدِم محرّر النصوص 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

تشغيل نص برمجي في shell

انتقِل إلى النص البرمجي 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، انتقِل إلى مشروعك، ثم إلى "الأمان" (Security) → "الوصول إلى الشبكة" (Network access) → "نقطة النهاية الخاصة" (Private endpoint). سيستغرق تحديد علامة التبويب أو المجموعة المخصّصة أو نقطة النهاية التي سيتم نقلها إلى "متاحة" 10 دقائق.

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

972aff09d180d9de.png

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

5472dd938604b3.png

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

  • سجِّل الدخول إلى حسابك على Atlas وانتقِل إلى مشروعك.

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

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

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

  • اختَر Google Cloud، ثمّ "التالي".

5503248bf4019a35.png

مرفق الخدمة

  • اختَر المنطقة us-west2، ثمّ انقر على "التالي".

fc0b7a8e4274be3b.png

نقاط النهاية

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

17b5a056587ede8a.png

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

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

  • مثال على نص برمجي في shell، وستتضمّن النتائج قيمًا مختلفة

b021821e7d59f450.png

  • انسخ نص 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

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

استخدِم محرّر النصوص 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

تشغيل نص برمجي في shell

انتقِل إلى النص البرمجي 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، انتقِل إلى مشروعك، ثم إلى "الأمان" (Security) → "الوصول إلى الشبكة" (Network access) → "نقطة النهاية الخاصة" (Private endpoint). بعد اختيار علامة التبويب والمجموعة المخصّصة، سيصبح الانتقال إلى نقطة النهاية متاحًا بعد 10 دقائق.

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

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

9- الاتصال بخدمة MongoDB Atlas من نقاط نهاية خاصة

بعد قبول اتصالات Private Service Connect، يجب الانتظار لوقت إضافي (من 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 في 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

سجِّل الدخول إلى vm1 باستخدام IAP في 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 os login، نفِّذ ما يلي. اسم المستخدم وكلمة المرور اللذان تم ضبطهما هما 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 os login، نفِّذ ما يلي.

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

11. منطقة MongoDB النشطة لتجاوز الأعطال، us-west1

قبل إجراء عملية التبديل الاحتياطي، لننتأكّد من أنّ us-west1 هي المنطقة الأساسية وأنّ us-west2 تتضمّن عقدتَين ثانوية.

انتقِل إلى "قاعدة البيانات" (Database) → psc-mongodb-uswest1-uswest2 → "نظرة عامة" (Overview).

64ca0395807bb3ac.png

في القسم التالي، سجِّل الدخول إلى الجهاز الظاهري vm1 المتوفّر في us-west1، ثم نفِّذ عملية تجاوز تعذُّر الاستجابة لمنطقة مجموعة MongoDB الأساسية us-west1 وتأكَّد من إمكانية الوصول إلى قاعدة البيانات من مجموعة MongoDB في us-west2.

يمكنك اختبار كلّ من تجاوز الأعطال الأساسي والإقليمي من واجهة مستخدم Atlas.

  • سجِّل الدخول إلى واجهة مستخدم 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 أصبحت المنطقة الأساسية.

انتقِل إلى "قاعدة البيانات" (Database) → psc-mongodb-uswest1-uswest2 → "نظرة عامة" (Overview).

86fd7d5230715645.png

التحقّق من إمكانية الاتصال بالمجموعة من خلال المنطقة الأساسية الجديدة us-west2

سجِّل الدخول إلى الجهاز الافتراضي vm1 المتوفّر في us-west1، وافتح mongodb في us-west2، وتحقّق من إمكانية الوصول العام إلى Private Service Connect.

إذا تم إنهاء جلسة Cloud Shell، اتّبِع الخطوات التالية:

داخل Cloud Shell، اتّبِع الخطوات التالية:

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

سجِّل الدخول إلى vm1 باستخدام IAP في Cloud Shell، وأعِد المحاولة إذا حدث انتهاء مهلة.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

الاتصال بعملية نشر MongoDB

داخل Cloud Shell os login، نفِّذ ما يلي.

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 os login، نفِّذ ما يلي.

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

انتقِل إلى "خدمات الشبكة" (Network services) →‏ Private Service Connect ‏→ نقاط النهاية المرتبطة (CONNECTED ENDPOINTS).

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

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

من واجهة مستخدم Atlas، حدِّد المجموعة psc-mongodb-uswest1-uswest2 → end simulation

f82e28ac984d9e20.png

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

38feaf055abdceea.png

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

f249a61bcc966d41.png

9427a9349daa1fea.png

أدخِل اسم المجموعة → إنهاء

9ef6d3a6387c5b4b.png

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

من واجهة مستخدم Atlas، انتقِل إلى "الأمان" (Security) → "الوصول إلى الشبكة" (Network Access) → "نقطة النهاية الخاصة" (Private Endpoint) → "اختيار إنهاء" (Select Terminate).

56415ea954b2fec9.png

13. تهانينا

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

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

8c2a10eb841f7b01.jpeg

ما هي الخطوات التالية؟

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

مزيد من المعلومات والفيديوهات

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