1. مقدمة
تسهّل خدمة Private Service Connect (PSC) طريقة استهلاك الخدمات بشكل آمن وخاص. يسهّل هذا النموذج بنية الشبكة بشكل كبير من خلال السماح لمستهلكي الخدمات بالاتصال بشكل خاص بمقدّمي الخدمات في مختلف المؤسسات، كما أنّه يلغي الحاجة إلى ربط السحابة الإلكترونية الخاصة الافتراضية. يوضّح الشكل 1 سمات ربط شبكات VPC وPSC.
الشكل 1. 
بصفتك مستهلكًا للخدمة، تتيح لك هذه الميزة المرونة في اختيار كيفية تخصيص عناوين 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- ما ستنشئه
- سيتم إنشاء مجموعة MongoDB Atlas متوفّرة في مناطق متعددة (تم وصف تصميمها في الشكل 2) مع عقدة واحدة في المنطقة us-west1 وعقدتين في المنطقة us-west2 على التوالي.
- شبكة VPC للمستهلك وجهاز افتراضي مرتبط بها للوصول إلى مجموعات MongoDB في us-west1 وus-west2
- شبكة VPC وشبكتان فرعيتان في منطقتَي us-west1 وus-west2 على التوالي مع 64 عنوان IP مجانيًا على الأقل في كل شبكة فرعية (أنشئ شبكات فرعية باستخدام /26 أو أقل).
سيتم تثبيت برنامج MongoDB على الجهاز الظاهري vm1 في شبكة VPC الخاصة بالمستهلك. عندما يتعذّر الوصول إلى العقدة الأساسية في us-west1، سيتمكّن العميل من القراءة والكتابة من خلال العقدة الأساسية الجديدة في us-west2.
الشكل 2. 
أهداف الدورة التعليمية
- كيفية إنشاء شبكة 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) كما هو موضّح أدناه.

- إنشاء مجموعة جديدة → مخصّصة

- مقدّم خدمات السحابة الإلكترونية والمنطقة → Google Cloud
- تعدّد السحابات والمناطق الجغرافية وعزل أحمال العمل → تم الاختيار (علامة اختيار زرقاء)

- العُقد القابلة للتحديد → us-west1 (عقدة واحدة)، us-west2 (عقدتان)

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

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

- اختَر → إنشاء مجموعة

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

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

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

- ضمن "الأمان" → "الوصول إلى الشبكة"، لا تتطلّب "قائمة عناوين IP المسموح بها" إدخالاً
إعداد نقاط النهاية الخاصة في MongoDB Atlas
- اختَر "الوصول إلى الشبكة" → "نقاط النهاية الخاصة" → "مجموعة مخصّصة" → "إضافة نقطة نهاية خاصة"

مقدّم خدمة السحابة الإلكترونية
- اختَر Google Cloud، ثمّ "التالي".

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

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

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

- انسخ نص 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 محليًا.

تحميل ملف JSON
حمِّل ملف json الذي تم حفظه سابقًا atlasEndpoints-psc-endpoint-us-west1.json.


انقر على "إنشاء"
التحقّق من صحة نقاط نهاية Private Service Connect
في واجهة مستخدم MongoDB، انتقِل إلى مشروعك، ثم إلى "الأمان" (Security) → "الوصول إلى الشبكة" (Network access) → "نقطة النهاية الخاصة" (Private endpoint). سيستغرق تحديد علامة التبويب أو المجموعة المخصّصة أو نقطة النهاية التي سيتم نقلها إلى "متاحة" 10 دقائق.
الحالة المتاحة

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

8. إنشاء نقطة نهاية خاصة لمنطقة us-west2
- سجِّل الدخول إلى حسابك على Atlas وانتقِل إلى مشروعك.
إعداد نقاط النهاية الخاصة في MongoDB Atlas
- اختَر "الوصول إلى الشبكة" → "نقاط النهاية الخاصة" → "مجموعة مخصّصة" → "إضافة نقطة نهاية خاصة"

مقدّم خدمة السحابة الإلكترونية
- اختَر Google Cloud، ثمّ "التالي".

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

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

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

- انسخ نص 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 محليًا.

تحميل ملف JSON
حمِّل ملف json الذي تم حفظه سابقًا atlasEndpoints-psc-endpoint-us-west2.json.


انقر على "إنشاء"
التحقّق من صحة نقاط نهاية Private Service Connect
في واجهة مستخدم MongoDB، انتقِل إلى مشروعك، ثم إلى "الأمان" (Security) → "الوصول إلى الشبكة" (Network access) → "نقطة النهاية الخاصة" (Private endpoint). بعد اختيار علامة التبويب والمجموعة المخصّصة، سيصبح الانتقال إلى نقطة النهاية متاحًا بعد 10 دقائق.
الحالة المتاحة:

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

9- الاتصال بخدمة MongoDB Atlas من نقاط نهاية خاصة
بعد قبول اتصالات Private Service Connect، يجب الانتظار لوقت إضافي (من 10 إلى 15 دقيقة) لتعديل مجموعة MongoDB. في واجهة مستخدم MongoDB، يمثّل المخطط الرمادي عملية تعديل المجموعة، وبالتالي لا يمكن الربط بنقطة النهاية الخاصة.

تحديد عملية النشر واختيار "ربط" (لاحظ أنّ المربّع الرمادي لم يعُد متوفّرًا)

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

اختَر "الربط باستخدام MongoDB Shell"

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

10. تثبيت تطبيق mongosh
قبل التثبيت، عليك إنشاء سلسلة أوامر استنادًا إلى القيم التي تم نسخها سابقًا في الخطوتَين 1 و3. بعد ذلك، ستستخدم SSH للوصول إلى vm1 باستخدام Cloud Shell، ثم تثبّت تطبيق mongosh وتتحقّق منه في قاعدة البيانات الأساسية (us-west1). تم تثبيت صورة Ubuntu 20.4 عند إنشاء vm1 في consumer-vpc.
اختيار طريقة ربط: الخطوة 1، نسخ عنوان URL الخاص بالتنزيل

مثال على سلسلة الأوامر، استبدِلها بقيمك المخصّصة:
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
اختَر طريقة ربط، الخطوة 3.

مثال على سلسلة الأوامر، استبدِلها بقيمك المخصّصة:
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
المثال التالي:

تنفيذ أوامر في قاعدة البيانات
داخل 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).

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

- انقر على "انقطاع الخدمة على مستوى منطقة" → اختَر المناطق.

- اختَر المنطقة الأساسية us-west1→ Simulate Regional Outage.

بعد اختيار المجموعة، سيتم عرض محاكاة انقطاع الخدمة بعد 3 إلى 4 دقائق.
إغلاق النافذة


تأكَّد من أنّ المنطقة us-west1 متوقّفة عن العمل وأنّ المنطقة us-west2 أصبحت المنطقة الأساسية.
انتقِل إلى "قاعدة البيانات" (Database) → psc-mongodb-uswest1-uswest2 → "نظرة عامة" (Overview).

التحقّق من إمكانية الاتصال بالمجموعة من خلال المنطقة الأساسية الجديدة 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
المثال التالي:

تنفيذ أوامر في قاعدة البيانات
داخل Cloud Shell os login، نفِّذ ما يلي.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit

النجاح: لقد تحقّقت من أنّ إمكانية الوصول الشامل إلى PSC تتيح ربط نقاط نهاية المستهلكين بسلاسة في جميع المناطق للمساعدة في توفير إمكانية الوصول العالية أو بسبب الانقطاعات الإقليمية. في هذا الدرس العملي، حدثت عملية تجاوز تعذُّر الاتصال على مستوى المنطقة في MongoDB في العقدة الأساسية الواقعة في us-west1، وبالتالي تولّت المنطقة الثانوية us-west2 دور المنطقة الأساسية. على الرغم من أنّ المجموعة أدّت إلى انقطاع الخدمة على مستوى منطقة معيّنة، تمكّنت الآلة الافتراضية vm1 المخصّصة للمستهلكين والموجودة في us-west1 من الوصول بنجاح إلى المجموعة الأساسية الجديدة في us-west2.
12. تنظيف
احذف نقاط نهاية المستهلكين من Cloud Console
انتقِل إلى "خدمات الشبكة" (Network services) → Private Service Connect → نقاط النهاية المرتبطة (CONNECTED ENDPOINTS).
استخدِم الفلتر psc-endpoint لإزالة إمكانية حذف نقاط نهاية المستهلكين غير التابعة للمختبر. اختَر جميع نقاط النهاية → حذف

احذف عناوين IP الداخلية الثابتة المرتبطة بنقاط نهاية المستهلكين
انتقِل إلى شبكة VPC → consumer-vpc → عناوين IP الداخلية الثابتة
استخدِم الفلتر psc-endpoint لإزالة أي نقاط نهاية للمستهلكين من خارج المختبر قد يتم حذفها وزِد عدد الصفوف في الصفحة إلى 100. اختَر جميع نقاط النهاية → إصدار

من 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

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

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


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

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

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

ما هي الخطوات التالية؟
اطّلِع على بعض دروس الترميز التطبيقية هذه...
- استخدام Private Service Connect لنشر الخدمات واستهلاكها مع GKE
- استخدام Private Service Connect لنشر الخدمات واستهلاكها
- الاتصال بالخدمات المحلية عبر شبكة مختلطة باستخدام خدمة Private Service Connect وجهاز موازنة الحمل الداخلي الذي يستخدم وكيل TCP
- استخدام Private Service Connect مع إعدادات نظام أسماء النطاقات التلقائية
مزيد من المعلومات والفيديوهات
- نظرة عامة على Private Service Connect
- ما هي خدمة Private Service Connect؟
- أنواع موازنات الحمل المتوافقة