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