1. مقدمة
باستخدام Private Service Connect، يمكن لمطوّري الخدمات عرض الخدمات في بيئة VPC من خلال "مرفق الخدمة" والسماح للمستهلكين في بيئة VPC أخرى بالوصول إلى هذه الخدمات من خلال نقطة نهاية Private Service Connect. في بعض الأحيان، يتم تصميم خدمات الإنتاج هذه على شكل مجموعات من الأجهزة الافتراضية، مع عرض كل جهاز افتراضي للخدمات نفسها على أرقام منافذ متطابقة. في السابق، كانت تصاميم الخدمات هذه تتطلّب نشر نقاط نهاية متعددة لـ Private Service Connect من جهة المستهلك، أو استخدام إعادة توجيه عنوان IP من جهة المنتج للتأكّد من استهداف جهاز افتراضي للمنتج الصحيح.
يمكن الآن لميزة Private Service Connect استهداف الوجهة الصحيحة بشكلٍ أصلي باستخدام ميزة "ربط المنافذ". في هذا الدرس، ستتعرّف على حالات الاستخدام التي تتطلّب هذه الميزة وكيفية نشر NEG لربط المنافذ في إحدى أعباء العمل في Private Service Connect.
ما ستتعرّف عليه
- حالات استخدام ميزة "ربط المنافذ" في Private Service Connect
- المزايا الرئيسية لميزة "ربط منفذ PSC"
- متطلبات الشبكة
- أنشئ خدمة منتج في Private Service Connect باستخدام ربط المنافذ.
- إنشاء نقطة نهاية Private Service Connect
- إجراء مكالمات من خلال نقطة نهاية Private Service Connect إلى خدمة منتج
المتطلبات
- مشروع Google Cloud الذي يتضمّن أذونات المالك
2. حالات استخدام ميزة "ربط المنافذ" في Private Service Connect
تستخدِم ميزة "ربط المنافذ" مجموعة نقاط نهاية الشبكة (NEG) الخاصة بربط المنافذ، وهي مخصّصة لحالات استخدام البطاقات الذكية للكمبيوتر الشخصي.
إنّ الأنواع الأكثر شيوعًا من صنّاع المحتوى الذين يمكنهم الاستفادة من استخدام ميزة "ربط المنافذ" هم صنّاع محتوى قاعدة بيانات NoSQL وصنّاع محتوى Kafka. ومع ذلك، يمكن لأي منتج يتطلّب مجموعة من الأجهزة الافتراضية التي تعرض الخدمات نفسها على منافذ متطابقة مع متطلبات ربط أجهزة افتراضية محدّدة استخدام هذه الميزة.
يحدِّد "المُنشئ" التعيين بين منفذ العميل ووحدة VM الخاصة بالمُنشئ والمنفذ المقصود. على المنتج بعد ذلك مشاركة هذه المعلومات مع المستهلك. يستخدم المستخدِم المنافذ المحدّدة مسبقًا لتحديد الجهاز الافتراضي للمنتج والمنفذ المقصود بشكلٍ فريد. المنفذ الذي يستخدمه المستهلك هو منفذ مختلف عن المنفذ الذي يستخدمه المنتج.
المزايا الرئيسية لميزة "ربط منافذ PSC"
- بسيط: ينشر المنتجون مكوّنات PSC باستخدام تعيين منفذ، وينشر المستخدِمون نقطة نهاية PSC. تعالج وحدة التحكّم في حدود الجلسة ترجمة عناوين الشبكة تلقائيًا.
- فعّال من حيث التكلفة: لا يتطلّب هذا الإجراء أي موارد إضافية لوحدة التحكّم في حدود الخدمة أو دورات وحدة المعالجة المركزية لأجهزة الكمبيوتر الافتراضية الخاصة بالمنتج. تكون الأسعار مماثلة لأنواع عمليات نشر PSC الأخرى.
- الأداء العالي: يقدّم ربط المنافذ معدل نقل البيانات نفسه لسرعة النقل ووقت الاستجابة المنخفض نفسهما في أوضاع PSC الأخرى.
- قابلية التوسّع وكفاءة عناوين IP: يمكن لعنوان IP واحد من "شبكة VPC للمستهلك" الوصول إلى ما يصل إلى 1,000 جهاز افتراضي للمنتج و1,000 عملية ربط منفذ
3- متطلبات الشبكة
- تتطلّب ميزة "ربط المنافذ" استخدام جهاز موازنة حمل الشبكة الذي يستخدم نقطة مرور داخلية بصفتها جهاز موازنة حمل المنتج.
- يمكن استخدام نقاط نهاية PSC فقط مع ميزة "تعيين المنافذ" (وليس الخلفيات أو واجهات PSC).
- إنّ مجموعات NEG لربط المنافذ هي بنى إقليمية.
- لا يمكن استخدام NEGs لربط المنافذ إلا من خلال اتصال PSC. ولن تعمل هذه القواعد إذا كانت الآلة الافتراضية للعميل تستدعي قاعدة توجيه موازن الحمولة للمنتِج مباشرةً. ويظهر ذلك في طريقة اختبار خدمة المنتج في هذا الدرس التطبيقي حول الترميز.
- يجب أن تكون نقطة نهاية PSC ومجموعة خدمات المنتج في شبكتَي VPC مختلفتَين.
4. طوبولوجيا الدرس التطبيقي حول الترميز
في شبكة VPC الخاصة بالمنتج، سيتم إنشاء جهازَي VM سيشغّلان خادمَي ويب، أحدهما يعمل على المنفذ 1000 والآخر يعمل على المنفذ 2000. سنختبر كل خدمة قبل إعداد NEG لجدول المنافذ وجهاز موازنة الحمل لمرور الشبكة الداخلية و"إرفاق الخدمة".
في شبكة VPC للمستهلك، سننشئ نقطة نهاية PSC ونختبر الاتصال بخدمة المنتج من جهاز افتراضي للعميل.
5- الإعداد والمتطلبات
إعداد البيئة حسب السرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديلها في أي وقت.
- يكون معرّف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تنشئ وحدة تحكّم Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً معرفة محتواها. في معظم مختبرات رموز البرامج، ستحتاج إلى الإشارة إلى معرّف المشروع (يُعرَف عادةً باسم
PROJECT_ID
). إذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء معرّف آخر عشوائي. يمكنك بدلاً من ذلك تجربة عنوانك الخاص لمعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى ساريًا طوال مدة المشروع. - يُرجى العِلم أنّ هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات عن كلّ من هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تُكلّفك هذه الدورة التدريبية على إنشاء الرموز البرمجية الكثير من المال، إن لم تكن تكلفتك أيّ أموال على الإطلاق. لإيقاف الموارد لتجنُّب تحصيل رسوم بعد انتهاء هذا الدليل التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يكون مستخدمو Google Cloud الجدد مؤهّلين للاستفادة من برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من أنّه يمكن تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدليل التعليمي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:
من المفترض ألا تستغرق عملية توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 5 غيغابايت، ويتم تشغيله على Google Cloud، ما يُحسِّن بشكل كبير أداء الشبكة والمصادقة. يمكنك تنفيذ جميع أعمالك في هذا الدليل التعليمي للترميز داخل متصفّح. لست بحاجة إلى تثبيت أي تطبيق.
6- قبل البدء
تفعيل واجهات برمجة التطبيقات
في Cloud Shell، تأكَّد من إعداد معرّف مشروعك.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone
تفعيل جميع الخدمات اللازمة
gcloud services enable compute.googleapis.com
7- إنشاء شبكة VPC لصانع المحتوى
شبكة VPC
من Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
إنشاء شبكات فرعية
من Cloud Shell
gcloud compute networks subnets create producer-service-subnet --network producer-vpc --range 10.0.0.0/24 --region $region --enable-private-ip-google-access gcloud compute networks subnets create psc-nat-subnet --network producer-vpc --range 10.100.100.0/24 --region $region --purpose=PRIVATE_SERVICE_CONNECT
سيتم ربط الشبكة الفرعية لـ PSC بمرفق خدمة PSC بغرض ترجمة عناوين الشبكة. بالنسبة إلى حالات الاستخدام في مرحلة الإنتاج، يجب تحديد حجم هذه الشبكة الفرعية بشكل مناسب لتلبية كمية الزيارات الواردة من جميع نقاط نهاية PSC المرتبطة. اطّلِع على مستندات تحديد حجم الشبكة الفرعية لبروتوكول تحويل العناوين (NAT) في "مركز عملائي" للحصول على مزيد من المعلومات.
إنشاء سياسة جدار حماية الشبكة وقواعد جدار الحماية
من Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy producer-vpc-policy --network producer-vpc --name network-producer-vpc --global-firewall-policy
للسماح لميزة "الشراء داخل التطبيق" بالاتصال بمثيلات الأجهزة الافتراضية، أنشئ قاعدة جدار حماية تستوفي الشروط التالية:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد الوصول إليها باستخدام ميزة "الشراء داخل التطبيق".
- السماح بدخول الزيارات من نطاق IP 35.235.240.0/20 يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها IAP لإعادة توجيه بروتوكول TCP.
من Cloud Shell
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy producer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
تسمح قاعدة جدار الحماية التالية بالزيارات على منافذ TCP من 1000 إلى 2000 من الشبكة الفرعية لوحدة التحكّم في الخدمات إلى جميع المثيلات في الشبكة. في بيئة الإنتاج، يجب أن تقتصر قاعدة جدار الحماية هذه على النُسخ المرتبطة بخدمة المنتج المحدّدة فقط.
من Cloud Shell
gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 10.100.100.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
تسمح قاعدة جدار الحماية التالية بجميع الزيارات ضمن الشبكة الفرعية للخدمات على منافذ TCP من 1000 إلى 2000. سيتم استخدام هذه القاعدة لاختبار ما إذا كانت خدمة المنتج تعمل بشكلٍ سليم.
من Cloud Shell
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic within the service subnet" --direction INGRESS --src-ip-ranges 10.0.0.0/24 --layer4-configs tcp:1000-2000 --global-firewall-policy
إنشاء أجهزة افتراضية لإنشاء المحتوى وضبطها
إنشاء أجهزة افتراضية
من Cloud Shell
gcloud compute instances create portmap-vm1 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create portmap-vm2 --zone=$zone --subnet=producer-service-subnet --no-address gcloud compute instances create test-client-vm --zone=$zone --subnet=producer-service-subnet --no-address
في القسم التالي، ابدأ خادم http على المنفذَين 1000 و2000 على كل جهاز افتراضي من أجهزة الإنتاج.
ضبط الأجهزة الافتراضية
من Cloud Shell
gcloud compute ssh --zone $zone "portmap-vm1" --tunnel-through-iap --project $project
في Cloud Shell من جلسة portmap-vm1
mkdir 1000 cd 1000 echo "portmap-vm1 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm1 2000">index.html sudo python3 -m http.server 2000 &
فتح نافذة Cloud Shell جديدة
ابدأ بإعادة ضبط المتغيّرات. في Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute ssh --zone $zone "portmap-vm2" --tunnel-through-iap --project $project
في Cloud Shell من جلسة portmap-vm2
mkdir 1000 cd 1000 echo "portmap-vm2 1000">index.html sudo python3 -m http.server 1000 & cd .. mkdir 2000 cd 2000 echo "portmap-vm2 2000">index.html sudo python3 -m http.server 2000 &
8. خدمة اختبار المنتج
أولاً، نحتاج إلى الحصول على عناوين IP لحالات ربط المنافذ. دوِّن عنوانَي IP هذين.
فتح نافذة Cloud Shell جديدة
ابدأ بإعادة ضبط المتغيّرات. في Cloud Shell
project=[YOUR-PROJECT-ID] region=us-central1 zone=us-central1-a echo $project echo $region echo $zone gcloud compute instances describe portmap-vm1 \ --format='get(networkInterfaces[0].networkIP)' --zone $zone gcloud compute instances describe portmap-vm2\ --format='get(networkInterfaces[0].networkIP)' --zone $zone
سجِّل الدخول إلى النسخة التجريبية. في Cloud Shell
gcloud compute ssh --zone $zone "test-client-vm" --tunnel-through-iap --project $project curl [portmap-vm1 IP]:1000
الناتج المتوقّع
portmap-vm1 1000
في Cloud Shell
curl [portmap-vm1 IP]:2000
الناتج المتوقّع
portmap-vm1 2000
في Cloud Shell
curl [portmap-vm2 IP]:1000
الناتج المتوقّع
portmap-vm2 1000
في Cloud Shell
curl [portmap-vm2 IP]:2000
الناتج المتوقّع
portmap-vm2 2000
الخروج من test-client-vm
9. إنشاء خدمة منتج باستخدام NEG في Portmap
إنشاء مكوّنات جهاز موازنة الحمل
من Cloud Shell
gcloud compute network-endpoint-groups create portmap-neg --region=$region --network=producer-vpc --subnet=producer-service-subnet --network-endpoint-type=GCE_VM_IP_PORTMAP
أضِف نقاط نهاية إلى NEG في Portmap لإنشاء التعيين من منفذ العميل إلى منفذ المُنشئ. ينشئ المنتج هذا الربط وسيستخدم طريقة خاصة به لإطلاع المستهلكين على هذه المعلومات. لا تتم مشاركة ربط المنفذ المحدّد من خلال PSC.
في Cloud Shell
gcloud compute network-endpoint-groups update portmap-neg --region=$region --add-endpoint=client-destination-port=1001,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=1000 --add-endpoint=client-destination-port=1002,instance=projects/$project/zones/$zone/instances/portmap-vm1,port=2000 --add-endpoint=client-destination-port=1003,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=1000 --add-endpoint=client-destination-port=1004,instance=projects/$project/zones/$zone/instances/portmap-vm2,port=2000
أكمِل عملية إنشاء جهاز موازنة الحمل.
في Cloud Shell
gcloud compute backend-services create portmap-bes --load-balancing-scheme=internal --region=$region --network=producer-vpc gcloud compute backend-services add-backend portmap-bes --network-endpoint-group=portmap-neg --network-endpoint-group-region=$region gcloud compute forwarding-rules create portmap-fr --load-balancing-scheme=INTERNAL --network=producer-vpc --subnet=producer-service-subnet --ports=ALL --region=$region --backend-service=portmap-bes
إنشاء مرفق الخدمة
من Cloud Shell
gcloud compute service-attachments create portmap-service-attachment --region=$region --producer-forwarding-rule=portmap-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet
بعد ذلك، استرجع عنوان URL لمرفق الخدمة وضَع ملاحظة به لإعداد نقطة نهاية PSC في بيئة المستهلك.
في Cloud Shell
gcloud compute service-attachments describe portmap-service-attachment --region=$region
مثال على الناتج المتوقّع
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2024-07-19T10:02:29.432-07:00' description: '' enableProxyProtocol: false fingerprint: LI8D6JNQsLA= id: '6207474793859982026' kind: compute#serviceAttachment name: portmap-service-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$zone/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: '94288091358954472' low: '6207474793859982026' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/portmap-service-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/portmap-fr
10. إنشاء شبكة Consumer VPC
شبكة VPC
من Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
إنشاء شبكة فرعية
من Cloud Shell
gcloud compute networks subnets create consumer-client-subnet --network consumer-vpc --range=10.0.0.0/24 --region $region --enable-private-ip-google-access
إنشاء سياسة جدار حماية الشبكة وقواعد جدار الحماية
من Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create --firewall-policy consumer-vpc-policy --network consumer-vpc --name network-consumer-vpc --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy consumer-vpc-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
لا يلزم سوى الوصول إلى بروتوكول النقل الآمن (SSH) من خلال بروتوكول IAP لشبكة المستهلكين.
11. إنشاء جهاز افتراضي ونقطة نهاية PSC واختبار الاتصال
في هذه المرحلة، من المفترض أن تكون هناك ثلاث نوفذات Cloud Shell مفتوحة. يجب أن يكون لدى أحدهما جلسة مفتوحة مع portmap-vm1. يجب أن يكون لديك جلسة مفتوحة مع portmap-vm2، ويجب أن تكون الجلسة الأخرى هي جلسة العمل.
إنشاء جهاز افتراضي تجريبي
من Cloud Shell
gcloud compute instances create consumer-client-vm --zone $zone --subnet=consumer-client-subnet --no-address
إنشاء نقطة نهاية PSC
من Cloud Shell
gcloud compute addresses create psc-endpoint-ip --region=$region --subnet=consumer-client-subnet --addresses 10.0.0.10 gcloud compute forwarding-rules create psc-portmap-endpoint --region=$region --network=consumer-vpc --address=psc-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]
اختبار إمكانية الاتصال
من Cloud Shell
gcloud compute ssh --zone $zone "consumer-client-vm" --tunnel-through-iap --project $project curl 10.0.0.10:1001
الناتج المتوقّع
portmap-vm1 1000
من Cloud Shell
curl 10.0.0.10:1002
الناتج المتوقّع
portmap-vm1 2000
من Cloud Shell
curl 10.0.0.10:1003
الناتج المتوقّع
portmap-vm2 1000
من Cloud Shell
curl 10.0.0.10:1004
الناتج المتوقّع
portmap-vm2 2000
12. خطوات إعادة الضبط
الخروج من مثيل الجهاز الظاهري (جميع النوافذ)
exit
حذف مكوّنات المختبر من محطة طرفية واحدة في Cloud Shell
gcloud compute forwarding-rules delete psc-portmap-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy=consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-client-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete portmap-service-attachment --region=$region -q gcloud compute forwarding-rules delete portmap-fr --region=$region -q gcloud compute backend-services delete portmap-bes --region=$region -q gcloud compute network-endpoint-groups delete portmap-neg --region=$region -q gcloud compute instances delete test-client-vm --zone=$zone -q gcloud compute instances delete portmap-vm2 --zone=$zone -q gcloud compute instances delete portmap-vm1 --zone=$zone -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete producer-service-subnet --region $region -q gcloud compute networks delete producer-vpc -q
13. تهانينا!
تهانينا على إكمال دورة codelab.
المواضيع التي تناولناها
- حالات استخدام ميزة "ربط المنافذ" في Private Service Connect
- المزايا الرئيسية لميزة "ربط منفذ PSC"
- متطلبات الشبكة
- أنشئ خدمة منتج في Private Service Connect باستخدام ربط المنافذ.
- إنشاء نقطة نهاية Private Service Connect
- إجراء مكالمات من خلال نقطة نهاية Private Service Connect إلى خدمة منتج