1. مقدمة
Private Service Connect هي إحدى إمكانات شبكة Google Cloud التي تتيح للمستهلكين الوصول إلى الخدمات المُدارة بشكل خاص من داخل شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC). وبالمثل، يتيح هذا الخيار لمقدّمي الخدمات المُدارة استضافة هذه الخدمات في شبكات VPC منفصلة وتقديم اتصال خاص للمستهلكين.
حتى الآن، بعد عرض خدمات PSC من خلال ربط خدمة، لا يمكن إجراء تغييرات على موازنات تحميل الخدمة بدون إزالة ربط الخدمة وتعطيل اتصال نقطة نهاية PSC الخاصة بالمستهلك. من خلال إتاحة قابلية تغيّر PSC، يمكن لموفّري الخدمات تعديل جهاز موازنة الحمل مع الحفاظ على اتصال نقطة نهاية PSC. يوفّر الحفاظ على اتصال نقطة نهاية PSC بملحق الخدمة أثناء تغيير موازن التحميل ميزة عدم الحاجة إلى اتّخاذ أي إجراء من جهة المستهلك.
في الوقت الحالي، ستتيح قابلية تغيّر PSC ما يلي:
- نقل البيانات إلى قاعدة إعادة توجيه لجهاز موازنة الحمل من النوع نفسه (مثلاً Network Passthrough to Network Passthrough)
- نقل البيانات إلى قاعدة إعادة توجيه لجهاز موازنة الحمل من نوع مختلف (مثلاً نقطة مرور الشبكة إلى جهاز موازنة حمل التطبيقات)
لا تتيح إمكانية تغيير PSC تعديل قاعدة إعادة التوجيه الحالية.
في هذا الدرس العملي، ستنشئ خدمة ويب للمنتِج يتم عرضها من خلال جهاز موازنة حمل داخلي من نوع "نقل بيانات الشبكة"، وستتأكّد من أنّ الخدمة تتضمّن اتصالاً من خلال نقطة نهاية PSC، ثم ستعدّل ربط مرفق الخدمة بقاعدة توجيه جديدة إلى جهاز موازنة حمل داخلي للتطبيقات.
أهداف الدورة التعليمية
- أنشِئ خدمة ويب Apache بسيطة يتم عرضها كخدمة منتِجة في PSC.
- أنشئ نقطة نهاية Private Service Connect.
- أنشِئ منطقة خاصة في Cloud DNS لطلبات خدمة المستهلك.
- عدِّل قاعدة إعادة التوجيه المرتبطة بملحق الخدمة باستخدام ميزة "قابلية التغيير في Private Service Connect".
المتطلبات
- مشروع على Google Cloud لديه أذونات المالك
- معرفة أساسية بشبكات Google Cloud
2. بيئة الاختبار
في العادة، يعمل المنتجون والمستهلكون في مشاريع مختلفة. لتبسيط الأمور، سننفّذ جميع الإجراءات في المشروع نفسه، ولكن سيتم تصنيف كل خطوة على أنّها مشروع "منتج" أو "مستهلك" في حال فضّل المستخدم العمل في مشاريع مختلفة.
في بيئة الاختبار هذه، سنبدأ بإنشاء شبكة VPC للمنتِج مع ثلاث شبكات فرعية، إحداها لاستضافة خدمة المنتج والجهاز الافتراضي للاختبار، والأخرى لقواعد إعادة التوجيه لموازنة التحميل، وشبكة فرعية لترجمة عنوان الشبكة (NAT) في Private Service Connect. سنحتاج إلى Cloud Router وCloud NAT لضمان إمكانية الوصول إلى الإنترنت من أجل تنزيل حِزم Linux. سنعرض خدمة Apache، التي تم إعدادها من خلال مجموعة مثيلات غير مُدارة، من خلال برنامج موازنة حمل إقليمي داخلي من نوع "نقل حركة مرور الشبكة"، وسنربط قاعدة إعادة التوجيه بمرفق خدمة.
من جهة المستهلك، سننشئ شبكة consumer-vpc مع شبكة فرعية واحدة لاستضافة نقطة نهاية PSC وجهاز افتراضي لعميل تجريبي. سنضبط منطقة خاصة في Cloud DNS للوصول إلى الخدمة من خلال اسم مضيف.
لعرض ميزة "قابلية التغيير" في PSC، سنضيف على جهة مقدّم الخدمة شبكتَين فرعيتَين إضافيتَين، إحداهما لاستضافة الجهاز الافتراضي الجديد للخدمة، والأخرى للشبكة الفرعية التي تستخدم وكيل موازنة الحمل فقط. سننشئ جهازًا افتراضيًا جديدًا يستضيف خادم ويب Apache، وسيتم إعداده مرة أخرى من خلال مجموعة مثيلات غير مُدارة، وسننشره من خلال موازنة تحميل جديدة داخلية على مستوى المنطقة في "موازنة تحميل التطبيقات". سنعدّل مرفق الخدمة للإشارة إلى قاعدة إعادة التوجيه الجديدة، وسنتأكّد من أنّ الاتصال من جهة المستهلك لا يزال متاحًا.

3- الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- رقم تعريف المشروع هو معرّف فريد في جميع مشاريع 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، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا الدرس العملي ضمن المتصفّح. لست بحاجة إلى تثبيت أي تطبيق.
4. قبل البدء
تفعيل واجهات برمجة التطبيقات
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=[YOUR-PROJECT-NAME] export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
تفعيل جميع الخدمات اللازمة
gcloud services enable compute.googleapis.com gcloud services enable dns.googleapis.com
5- إنشاء شبكة منتجين [مشروع منتجين]
إنشاء شبكة VPC
من Cloud Shell
gcloud compute networks create producer-vpc \
--subnet-mode=custom
إنشاء شبكات فرعية
سنبدأ بنشر 3 شبكات فرعية في شبكة VPC الخاصة بالمنتج. سيتم استخدام أحدها لنشر خدمة المنتج، والآخر لقواعد إعادة التوجيه في موازنة الحمل، وسيتم ربط الثالث بمرفق خدمة PSC لشبكة NAT الفرعية في PSC.
من Cloud Shell
gcloud compute networks subnets create producer-service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
gcloud compute networks subnets create producer-fr-subnet \
--network=producer-vpc \
--range=192.168.0.0/28 \
--region=$region
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--range=10.100.0.0/28 \
--region=$region \
--purpose=PRIVATE_SERVICE_CONNECT
إنشاء Cloud NAT
يجب توفُّر Cloud NAT لتثبيت الحِزم المناسبة لخدمات المنتج.
من Cloud Shell
gcloud compute routers create $region-cr \
--network=producer-vpc \
--region=$region
من Cloud Shell
gcloud compute routers nats create $region-nat \
--router=$region-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
إنشاء سياسات وقواعد "جدار حماية الشبكة"
من 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
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- يسمح هذا الخيار بزيارات الدخول من نطاق عناوين 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
سنبدأ بثلاث قواعد لجدار الحماية. سيسمح أحدها بالوصول إلى الأجهزة الافتراضية لإجراء عمليات التحقّق من سلامة موازن التحميل (2000)، وسيسمح الآخر بالوصول إلى الأجهزة الافتراضية من نطاق NAT الخاص بخدمة Private Service Connect (3000)، وسيسمح الثالث بالاتصال بين الأجهزة الافتراضية في الشبكة الفرعية للخدمة لأغراض الاختبار (4000). سنضع جميع القواعد للمنفذ 80 لأنّنا سنستخدم هذا المنفذ لخدمتنا.
من Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "LB healthchecks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:80 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 3000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access from PSC NAT subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.0.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 4000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access between producer service VMs and testing client for testing purposes" \
--direction INGRESS \
--src-ip-ranges 10.0.0.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
6. إنشاء خدمة منتِج [مشروع منتِج]
سننشئ خدمة ويب بسيطة من Apache باستخدام مجموعة مثيلات غير مُدارة تعرض الرسالة "أنا خدمة منتِجة".
إنشاء مثيل
من Cloud Shell
gcloud compute instances create producer-service-vm \
--network producer-vpc \
--subnet producer-service-subnet \
--zone $zone \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a Producer Service." | \
tee /var/www/html/index.html
systemctl restart apache2'
إنشاء مجموعة مثيلات غير مُدارة
من Cloud Shell
gcloud compute instance-groups unmanaged create producer-uig \ --zone=$zone
أضِف producer-service-vm إلى مجموعة المثيلات غير المُدارة التي أنشأناها للتو.
من Cloud Shell
gcloud compute instance-groups unmanaged add-instances producer-uig \ --zone=$zone \ --instances=producer-service-vm
إنشاء مكوّنات موازنة الحمل
بالنسبة إلى الإصدار 1 من خدمة المنتج، سنعرض الخدمة باستخدام موازن حمل Network Passthrough على المنفذ 80.
نفِّذ عملية التحقّق من الصحة للمنفذ 80.
من Cloud Shell
gcloud compute health-checks create http producer-hc \
--region=$region
نشر خدمة الخلفية وإضافة الخلفية إلى خدمة الخلفية
من Cloud Shell
gcloud compute backend-services create producer-bes \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=$region \ --health-checks=producer-hc \ --health-checks-region=$region gcloud compute backend-services add-backend producer-bes \ --region=$region \ --instance-group=producer-uig \ --instance-group-zone=$zone
أنشِئ عنوان IP ثابتًا سيتم استخدامه لقاعدة إعادة التوجيه في موازنة الحمل.
من Cloud Shell
gcloud compute addresses create producer-fr-ip\ --region $region \ --subnet producer-fr-subnet \ --addresses 192.168.0.2
أنشئ قاعدة إعادة توجيه لجهاز موازنة الحمل تعرض المنفذ 80، وذلك باستخدام خدمة الخلفية وعنوان IP اللذين أنشأناهما سابقًا.
من Cloud Shell
gcloud compute forwarding-rules create producer-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=producer-fr-subnet \ --address=producer-fr-ip \ --ip-protocol=TCP \ --ports=80 \ --backend-service=producer-bes \ --backend-service-region=$region
7. اختبار خدمة Producer [مشروع Producer]
أنشئ جهازًا افتراضيًا تجريبيًا في الشبكة الفرعية للخدمة المنتِجة، وسجِّل الدخول إلى الجهاز الافتراضي واختبِر طلبًا إلى خدمة Apache.
من Cloud Shell
gcloud compute instances create producer-test-vm \
--zone=$zone \
--subnet=producer-service-subnet \
--no-address
من Cloud Shell
gcloud compute ssh producer-test-vm \
--zone=$zone \
--command="curl -s 192.168.0.2/index.html"
الناتج المتوقّع
I am a Producer Service.
8. عرض خدمة المنتج من خلال مرفق الخدمة [مشروع المنتج]
أنشئ مرفق الخدمة. اربطها بقاعدة إعادة التوجيه التي أنشأناها باستخدام psc-nat-subnet.
من Cloud Shell
gcloud compute service-attachments create producer-attachment \
--region=$region \
--producer-forwarding-rule=producer-fr \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=psc-nat-subnet
يجب تدوين معرّف الموارد المنتظم (URI) لملف ربط الخدمة (selfLink) لأنّك ستحتاج إليه في خطوة قادمة لإعداد نقطة نهاية PSC. يمكنك الحصول عليه من خلال تنفيذ ما يلي في Cloud Shell.
من Cloud Shell
gcloud compute service-attachments describe producer-attachment --region=$region
مثال على الناتج
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2026-02-10T07:50:04.250-08:00' description: '' enableProxyProtocol: false fingerprint: xxx id: 'xxx' kind: compute#serviceAttachment name: producer-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxx' low: 'xxx' 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/producer-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr
انسخ معرّف الموارد المنتظم (URI) بدءًا من projects
مثال: projects/$project/regions/$region/serviceAttachments/producer-attachment
9. إنشاء شبكة المستهلكين [مشروع المستهلكين]
إنشاء شبكة VPC
من Cloud Shell
gcloud compute networks create consumer-vpc \
--subnet-mode=custom
إنشاء شبكة فرعية
سيتم نشر شبكة فرعية واحدة سننشر فيها نقطة نهاية PSC وجهازًا افتراضيًا لعميل الاختبار.
من Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--range=10.0.0.0/28 \
--region=$region
إنشاء سياسات وقواعد "جدار حماية الشبكة"
من 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
سنضبط أيضًا consumer-vpc لاستخدام IAP مع بروتوكول النقل الآمن.
من Cloud Shell
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
10. إنشاء نقطة نهاية Private Service Connect [مشروع المستهلك]
احجز عنوان IP ثابتًا سيتم استخدامه لنقطة نهاية PSC.
من Cloud Shell
gcloud compute addresses create psc-endpoint-ip \
--region=$region \
--subnet=consumer-subnet \
--addresses 10.0.0.2
أنشئ نقطة نهاية PSC باستخدام عنوان IP الثابت المحجوز ومعرّف الموارد المنتظم لمرفق الخدمة الذي أشرنا إليه سابقًا.
من Cloud Shell
gcloud compute forwarding-rules create psc-endpoint \ --region=$region \ --network=consumer-vpc \ --address=psc-endpoint-ip \ --target-service-attachment=projects/$project/regions/$region/serviceAttachments/producer-attachment
11. إعداد منطقة نظام أسماء نطاقات خاص لنقطة نهاية PSC [مشروع المستهلك]
باستخدام Cloud DNS، سنضبط منطقة نظام أسماء نطاقات خاصًا باسم نظام أسماء النطاقات myservice.com، ليتم استخدامه مع نقطة نهاية PSC.
من Cloud Shell
gcloud dns managed-zones create "consumer-service" \
--dns-name=myservice.com \
--description="consumer service dns" \
--visibility=private \
--networks=consumer-vpc
gcloud dns record-sets transaction start \
--zone="consumer-service"
أنشئ سجلّ A للنطاق myservice.com وأشِر إليه بعنوان IP لنقطة نهاية PSC.
من Cloud Shell
gcloud dns record-sets transaction add 10.0.0.2 \ --name=myservice.com \ --ttl=300 \ --type=A \ --zone="consumer-service" gcloud dns record-sets transaction execute \ --zone="consumer-service"
12. اختبار نقطة نهاية PSC [مشروع المستهلك]
إنشاء جهاز افتراضي للعميل
من Cloud Shell
gcloud compute instances create consumer-client-vm \
--zone=$zone \
--subnet=consumer-subnet \
--no-address
اختبار إمكانية اتصال نقطة نهاية PSC
من Cloud Shell
gcloud compute ssh consumer-client-vm \
--zone=$zone \
--command="curl -s myservice.com/index.html"
الناتج المتوقّع
I am a Producer Service.
في الجزء التالي من الدرس التطبيقي حول الترميز، سننشئ خدمة منتِج جديدة وننقل إليها البيانات، مع عرض ميزة "قابلية التغيير" في Private Service Connect التي تتيح هذا التحديث السلس بدون الحاجة إلى إجراء أي تحديثات على إعدادات المستهلك.
13. إنشاء خدمة منتِج معدَّلة [مشروع المنتج]
لتعديل خدمة المنتج، سننشئ آلة افتراضية جديدة تعمل بخادم ويب Apache مشابه مع الرسالة "أنا خدمة منتج جديدة". سنضيف هذا الجهاز الافتراضي إلى مجموعة جديدة من الأجهزة الافتراضية غير المُدارة، وسنستخدم مجموعة الأجهزة الافتراضية غير المُدارة هذه كخلفية لموازنة الحمل الجديدة. بدلاً من استخدام "جهاز موازنة حمل الشبكة الذي يستخدم نقطة مرور داخلية"، سنعدّل جهاز موازنة الحمل إلى "جهاز موازنة حمل التطبيقات الداخلي" الإقليمي.
تعديل الشبكة
أنشئ شبكة فرعية جديدة سيتم استخدامها للشبكة الفرعية التي تعمل كخادم وكيل فقط لموازن التحميل الخاص بالتطبيق.
من Cloud Shell
gcloud compute networks subnets create lb-proxy-subnet \
--network=producer-vpc \
--range=10.200.0.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
أنشئ شبكة فرعية جديدة سيتم استضافة خدمتنا الجديدة فيها.
من Cloud Shell
gcloud compute networks subnets create producer-service-new-subnet \
--network=producer-vpc \
--range=10.0.1.0/28 \
--region=$region
أنشئ قاعدة جدار حماية جديدة تسمح بالاتصال بخدمة المنتج الجديدة من الشبكة الفرعية للخادم الوكيل فقط.
من Cloud Shell
gcloud compute network-firewall-policies rules create 3001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access from proxy only subnet" \
--direction INGRESS \
--src-ip-ranges 10.200.0.0/24 \
--layer4-configs tcp:80 \
--global-firewall-policy
إنشاء مثيل
من Cloud Shell
gcloud compute instances create new-producer-service-vm \
--network producer-vpc \
--subnet producer-service-new-subnet \
--zone $zone \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a NEW Producer Service." | \
tee /var/www/html/index.html
systemctl restart apache2'
إنشاء مجموعة مثيلات غير مُدارة
من Cloud Shell
gcloud compute instance-groups unmanaged create producer-new-uig \
--zone=$zone
gcloud compute instance-groups unmanaged add-instances producer-new-uig \
--zone=$zone \
--instances=new-producer-service-vm
gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
--named-ports=http:80 \
--zone=$zone
إنشاء مكوّنات جديدة لموازنة الحمل
أنشِئ خدمة الخلفية. يُرجى العِلم أنّنا نستخدم نظام موازنة الحمل INTERNAL_MANAGED لأنّنا نعدّل إلى جهاز موازنة حمل للتطبيقات الداخلية.
من Cloud Shell
gcloud compute backend-services create producer-new-bes \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=http \ --region=$region \ --health-checks=producer-hc \ --health-checks-region=$region
أضِف مجموعة الأجهزة الافتراضية غير المُدارة كخادم خلفي لخدمة الخادم الخلفي.
من Cloud Shell
gcloud compute backend-services add-backend producer-new-bes \ --region=$region \ --instance-group=producer-new-uig \ --instance-group-zone=$zone
أنشئ "خريطة عناوين URL" واستهدِف خوادم HTTP الوكيلة.
من Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=producer-new-bes \ --region=$region gcloud compute target-http-proxies create http-proxy \ --url-map=producer-url-map \ --region=$region
أنشئ عنوان IP ثابتًا سنستخدمه لقاعدة إعادة التوجيه. سيأتي ذلك من الشبكة الفرعية نفسها التي استخدمناها لقاعدة إعادة التوجيه الأصلية.
من Cloud Shell
gcloud compute addresses create producer-fr-new-ip\ --region $region \ --subnet producer-fr-subnet \ --addresses 192.168.0.3
أنشئ قاعدة إعادة التوجيه.
من Cloud Shell
gcloud compute forwarding-rules create new-producer-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=producer-fr-subnet \ --address=producer-fr-new-ip \ --ports=80 \ --region=$region \ --target-http-proxy=http-proxy \ --target-http-proxy-region=$region
14. اختبار خدمة المنتج المعدَّلة [مشروع المنتج]
سنستخدم الجهاز الظاهري التجريبي نفسه الذي أنشأناه لاختبار الخدمة التي تم نشرها في الأصل.
من Cloud Shell
gcloud compute ssh producer-test-vm \
--zone=$zone \
--command="curl -s 192.168.0.3/index.html"
يُرجى العِلم أنّنا نطلب عنوان IP معدَّلاً. 192.168.0.3 هو عنوان IP لجهاز موازنة حمل التطبيق الإقليمي الداخلي.
الناتج المتوقّع
I am a NEW Producer Service.
15. تعديل مرفق الخدمة [مشروع مقدّم الخدمة]
للحصول على صورة أوضح لتعديل قاعدة إعادة التوجيه في Service Attachment، يمكننا تنفيذ عملية وصف على Service Attachment قبل التغيير وبعده.
من Cloud Shell
gcloud compute service-attachments describe producer-attachment \
--region=$region \
--format="value(targetService)"
الناتج المتوقّع
https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr
عدِّل Service Attachment.
من Cloud Shell
gcloud compute service-attachments update producer-attachment \ --region=$region \ --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr
الآن، شغِّل الأمر describe مرة أخرى للاطّلاع على قاعدة إعادة التوجيه الجديدة.
من Cloud Shell
gcloud compute service-attachments describe producer-attachment \
--region=$region \
--format="value(targetService)"
الناتج المتوقّع
https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr
16. إعادة اختبار اتصال PSC الخاص بالمستهلك [مشروع المستهلك]
سجِّل الدخول إلى تطبيق المستهلك نفسه.
من Cloud Shell
gcloud compute ssh consumer-client-vm \
--zone=$zone \
--command="curl -s myservice.com/index.html"
الناتج المتوقّع
I am a NEW Producer Service.
تهانينا! لقد نجحت في تعديل موازن تحميل خدمة منتِجة في PSC ولم يتطلّب ذلك إجراء أي تغييرات في الإعدادات من جهة المستهلك.
17. خطوات التنظيف [مشروع المستهلك]
حذف مكوّنات المختبر من نافذة Cloud Shell واحدة
gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q gcloud dns managed-zones delete "consumer-service" -q gcloud compute forwarding-rules delete psc-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone --project $project -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-subnet --region $region -q gcloud compute networks delete consumer-vpc -q
18 خطوات التنظيف [مشروع المنتج]
حذف مكوّنات المختبر من نافذة Cloud Shell واحدة
gcloud compute service-attachments delete producer-attachment --region=$region -q gcloud compute instances delete producer-test-vm --zone=$zone --project $project -q gcloud compute forwarding-rules delete new-producer-fr --region=$region -q gcloud compute addresses delete producer-fr-new-ip --region $region -q gcloud compute target-http-proxies delete http-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete producer-new-bes --region $region -q gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q gcloud compute instances delete new-producer-service-vm --zone $zone --project $project -q gcloud compute networks subnets delete producer-service-new-subnet --region $region -q gcloud compute networks subnets delete lb-proxy-subnet --region $region -q gcloud compute forwarding-rules delete producer-fr --region=$region -q gcloud compute addresses delete producer-fr-ip --region $region -q gcloud compute backend-services delete producer-bes --region $region -q gcloud compute health-checks delete producer-hc --region $region -q gcloud compute instance-groups unmanaged delete producer-uig --zone $zone -q gcloud compute instances delete producer-service-vm --zone $zone --project $project -q gcloud compute network-firewall-policies rules delete 4000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 3001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 3000 --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 routers nats delete $region-nat --router=$region-cr --region=$region -q gcloud compute routers delete $region-cr --region=$region -q gcloud compute networks subnets delete psc-nat-subnet --region=$region -q gcloud compute networks subnets delete producer-fr-subnet --region=$region -q gcloud compute networks subnets delete producer-service-subnet --region=$region -q gcloud compute networks delete producer-vpc -q
19. تهانينا!
تهانينا على إكمال درس البرمجة.
المواضيع التي تناولناها
- أنشِئ خدمة ويب Apache بسيطة يتم عرضها كخدمة منتِجة في PSC.
- أنشئ نقطة نهاية Private Service Connect.
- أنشِئ منطقة خاصة في Cloud DNS لطلبات خدمة المستهلك.
- عدِّل قاعدة إعادة التوجيه المرتبطة بملحق الخدمة باستخدام ميزة "قابلية التغيير في Private Service Connect".