1. مقدمة
يعمل Private Service Connect (PSC) على تبسيط كيفية استخدام الخدمات بشكل آمن وخاص. يجعل هذا النموذج بنية الشبكة أسهل إلى حد كبير من خلال السماح لمستهلكي الخدمة بالتواصل بشكل خاص مع منتجي الخدمات عبر المؤسسات ويلغي الحاجة إلى تبادل المعلومات بين الشبكات الافتراضية الخاصة. يوضِّح الشكل 1 سمات تبادل المعلومات بين شبكات VPC وPSC.
الشكل 1.
بصفتك مستهلكًا للخدمة، تتيح لك هذه الخدمة مرونة اختيار طريقة تخصيص عناوين 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- ما الذي ستقوم ببنائه
- سيتم إنشاء مجموعة عنقود أطلس MongoDB متعددة المناطق (الطوبولوجيا الموضحة في الشكل 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 متعدد المناطق
- كيفية إنشاء نقطة نهاية خاصة
- كيفية الاتصال بمنصّة 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" (إنشاء قاعدة بيانات) كما هو موضح أدناه.
- إنشاء مجموعة جديدة ← مخصّصة
- مقدّم خدمات السحابة الإلكترونية المنطقة ← Google Cloud
- السُحب الإلكترونية المتعددة والمناطق المتعددة عزل تحميل العمل ← تم اختياره (علامة اختيار زرقاء)
- العقد الكهربائي ← us-west1 (عقدة)، us-west2 (عقدتان)
- فئة المجموعة ← M10، مع ترك جميع الإعدادات الأخرى كإعداد تلقائي
- اسم المجموعة ← psc-mongodb-uswest1-uswest2
- الاختيار ← إنشاء مجموعة
- يستغرق إنشاء قاعدة البيانات من 7 إلى 10 دقائق
عرض المجموعة بعد نشرها
7. إنشاء نقطة نهاية خاصة لنا-west1
- قم بتسجيل الدخول إلى حسابك في Versa 3 وانتقل إلى مشروعك.
إنشاء مستخدم جديد للسماح بالوصول للقراءة/الكتابة إلى أي قاعدة بيانات
الأمان ← الوصول إلى قاعدة البيانات حدد إضافة مستخدم قاعدة بيانات جديد. في ما يلي مثال على اسم المستخدم وكلمة المرور اللذين تم ضبطهما كدرس تطبيقي حول الترميز. تأكد من تحديد قراءة وكتابة الدور المضمنة في أي قاعدة بيانات.
- ضمن "الأمان" ← "الوصول إلى الشبكة"، لا تتطلّب قائمة الوصول إلى عناوين IP إدخالاً.
إعداد نقاط النهاية الخاصة في MongoDB Atlas
- الاختيار، الوصول إلى الشبكة ← نقاط النهاية الخاصة ← المجموعة المخصّصة ← إضافة نقطة نهاية خاصة
مقدّم خدمات السحابة الإلكترونية
- اختَر Google Cloud، ثم انقر على "التالي".
مرفق خدمة
- حدد المنطقة، us-west1، ثم التالي
نقاط النهاية
- لإنشاء نقطة نهاية اتصال خدمة خاصة، يُرجى تقديم ما يلي:
- رقم تعريف مشروع Google Cloud: اختَر "عرض التعليمات". للحصول على التفاصيل
- اسم VPC: المستهلك-vpc
- اسم الشبكة الفرعية: psc-endpoint-us-west1
- بادئة نقطة نهاية اتصال الخدمة الخاصة: psc-endpoint-us-west1
إعداد نقاط النهاية
في القسم التالي، يتم إنشاء نص برمجي لهيكل واجهة المستخدم يجب حفظه باسم setup_psc.sh محليًا. بعد الحفظ، عدِّل نص واجهة الأوامر للسماح بالوصول الشامل إلى psc. يمكنك تنفيذ هذا الإجراء ضمن مشروع Google Cloud Shell.
- مثال على نص برمجي من خلال Shell، سيكون للمخرج قيم مختلفة
- انسخ نص الغلاف من وحدة تحكّم 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 على الجهاز.
تحميل ملف JSON
تحميل ملف json المحفوظ سابقًا atlasEndpoints-psc-endpoint-us-west1.json
اختيار "إنشاء"
التحقّق من صحة نقاط نهاية Private Service Connect
في واجهة مستخدم MongoDB، انتقِل إلى مشروعك ثم انقر على "الأمان" ← "الوصول إلى الشبكة" ← "نقطة النهاية الخاصة". عند اختيار علامة التبويب المجموعة المخصّصة، سيستغرق الانتقال إلى نقطة النهاية 10 دقائق.
الحالة المتاحة
في Google Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Services Connect، ثم اختَر علامة التبويب "نقطة نهاية متّصلة" التي تعرض نقاط النهاية الخاصة بالمستهلكين في انتظار المراجعة ← تمّت الموافقة، على سبيل المثال أدناه:
8. إنشاء نقطة نهاية خاصة لنا-west2
- قم بتسجيل الدخول إلى حسابك في Versa 3 وانتقل إلى مشروعك.
إعداد نقاط النهاية الخاصة في MongoDB Atlas
- الاختيار، الوصول إلى الشبكة ← نقاط النهاية الخاصة ← المجموعة المخصّصة ← إضافة نقطة نهاية خاصة
مقدّم خدمات السحابة الإلكترونية
- اختَر Google Cloud، ثم انقر على "التالي".
مرفق خدمة
- حدد المنطقة، us-west2، ثم التالي
نقاط النهاية
- لإنشاء نقطة نهاية اتصال خدمة خاصة، يُرجى تقديم ما يلي:
- رقم تعريف مشروع Google Cloud: اختَر "عرض التعليمات". للحصول على التفاصيل
- اسم VPC: المستهلك-vpc
- اسم الشبكة الفرعية: psc-endpoint-us-west2
- بادئة نقطة نهاية اتصال الخدمة الخاصة: psc-endpoint-us-west2
إعداد نقاط النهاية
في القسم التالي، يتم إنشاء نص برمجي لهيكل واجهة المستخدم يجب حفظه باسم setup_psc.sh محليًا. بعد الحفظ، عدِّل نص واجهة الأوامر للسماح بالوصول الشامل إلى psc. يمكنك تنفيذ هذا الإجراء ضمن مشروع Google Cloud Shell.
- مثال على نص برمجي من خلال Shell، سيكون للمخرج قيم مختلفة
- انسخ نص الغلاف من وحدة تحكّم 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 على الجهاز.
تحميل ملف JSON
تحميل ملف json المحفوظ سابقًا atlasEndpoints-psc-endpoint-us-west2.json
اختيار "إنشاء"
التحقّق من صحة نقاط نهاية Private Service Connect
في واجهة مستخدم MongoDB، انتقِل إلى مشروعك ثم انقر على "الأمان" ← "الوصول إلى الشبكة" ← "نقطة النهاية الخاصة". وباختيار علامة التبويب والمجموعة العنقودية المخصصة، تصبح نقطة النهاية متاحة بعد 10 دقائق.
الحالة المتاحة:
في Google Cloud Console، انتقِل إلى "خدمات الشبكة" ← Private Services Connect (ربط الخدمات الخاصة)، ثم اختَر علامة التبويب "نقطة نهاية متّصلة" التي تعرض نقاط النهاية الخاصة بالمستهلكين في انتظار المراجعة ← "مقبولة"، مثال أدناه. تم نشر ما مجموعه 100 نقطة نهاية في نقطة نهاية المستهلك إلى الخطوة "مقبول" قبل الانتقال إلى الخطوة التالية.
9. الاتصال بأطلس MongoDB من نقاط النهاية الخاصة
عند قبول اتصالات الخدمة الخاصة، ستكون هناك حاجة إلى وقت إضافي (من 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 في 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 باستخدام ميزة الشراء داخل التطبيق في 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
المثال التالي:
تنفيذ الأوامر على قاعدة البيانات
داخل تسجيل الدخول في نظام تشغيل 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 → نظرة عامة
في القسم التالي، قم بتسجيل الدخول إلى vm1 الموجود في us-west1، وتجاوز الفشل في منطقة مجموعة MongoDB الأساسية us-west1 وتحقق من إمكانية الوصول إلى قاعدة البيانات من مجموعة MongoDB في us-west2.
يمكنك اختبار كل من تجاوز الإخفاق الأساسي والإقليمي من واجهة مستخدم Versa 3.
- قم بتسجيل الدخول إلى واجهة مستخدم Versa 3.
- انقر على [...] بجانب اسم المجموعة، psc-mongodb-uswest1-uswest2 ← اختبار انقطاع الخدمة.
- اختَر "إيقاف مؤقت على مستوى منطقة معيّنة" ← "مناطق محدَّدة".
- حدد المنطقة الأساسية، us-west1← محاكاة الانقطاع الإقليمي.
بعد اختيار المجموعة، ستعرض المجموعة محاكاة انقطاع الخدمة بعد 3 إلى 4 دقائق.
إغلاق النافذة
تحقق من أن us-west1 منخفضة وأن us-west2 أصبحت الآن أساسية
الانتقال إلى قاعدة البيانات → psc-mongodb-uswest1-uswest2 → نظرة عامة
التحقّق من الاتصال بالمجموعة من خلال النظام الأساسي الجديد 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
المثال التالي:
تنفيذ الأوامر على قاعدة البيانات
داخل تسجيل الدخول في نظام تشغيل Cloud Shell، نفِّذ ما يلي.
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
الانتقال إلى خدمات الشبكة ← Private Service Connect ← نقاط النهاية المتصلة
استخدِم الفلتر psc-endpoint لإزالة الحذف المحتمل لنقاط النهاية للمستهلكين الذين لا يستخدمون ميزة اختبارية. اختيار جميع نقاط النهاية → DELETE
حذف عناوين 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
من واجهة مستخدم Versa 3، تحديد المجموعة psc-mongodb-uswest1-uswest2 ← المحاكاة النهائية
اختَر "محاكاة انقطاع الخدمة" —> الخروج
تقوم المجموعة الآن بإرجاع us-west1 كمجموعة أساسية، وستستغرق هذه العملية من 3 إلى 4 دقائق. وبعد الانتهاء، أنهِ المجموعة، لاحظ المخطط الرمادي الذي يشير إلى تغيير الحالة.
إدراج اسم المجموعة ← إنهاء
حذف نقطة النهاية الخاصة المرتبطة بـ us-west1 وus-west2
من واجهة مستخدم Versa 3 انتقل إلى الأمان ← الوصول إلى الشبكة ← نقطة النهاية الخاصة ← حدد إنهاء
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؟
- أنواع أجهزة موازنة الحمل المتوافقة