1. مقدمة
يستخدم Private Service Connect مع الإعداد التلقائي لنظام أسماء النطاقات "دليل الخدمة" وCloud DNS لإنشاء سجلّات نظام أسماء النطاقات التي تتم برمجتها باستخدام عناوين IP لنقطة النهاية الخاصة بـ Private Service Connect.
ما الذي ستنشئه
في هذا الدرس التطبيقي حول الترميز، ستنشئ بنية شاملة لـ Private Service Connect توضّح استخدام نظام أسماء النطاقات التلقائي كما هو موضّح في الشكل 1.
يصبح نظام أسماء النطاقات التلقائي ممكنًا من خلال ما يلي:
- ينشئ مرفق خدمة "أداة نشر الأخبار" نظام أسماء النطاقات التلقائي من خلال تقديم نطاق عام مملوك باستخدام "- أسماء النطاقات". عند إنشاء مرفق خدمة Private Service Connect
- يحدد المستهلك اسم نقطة نهاية.
- ينشئ نظام أسماء النطاقات التلقائي كلاً من منطقة نظام أسماء النطاقات goog-psc-default-us-central1 واسم نظام أسماء النطاقات cosmopup.net، بالإضافة إلى إدخال دليل الخدمة الذي يتألف من اسم نقطة نهاية المستهلك.
يتم توضيح فائدة نظام أسماء النطاقات التلقائي في (4) حيث يمكن للمستخدم النهائي التواصل مع نقطة نهاية المستهلك عبر نظام أسماء النطاقات، FQDN stargazer.cosmopup.net.
على شكل 1
المعلومات التي ستطّلع عليها
- كيفية إنشاء جهاز موازنة حمل HTTP(S) داخلي
- كيفية إنشاء مرفق خدمة باستخدام نظام أسماء النطاقات التلقائي
- كيفية إنشاء خدمة Private Service Connect أداة نشر
- كيفية الوصول إلى نقطة نهاية للمستهلك باستخدام نظام أسماء النطاقات التلقائي
المتطلبات
- مشروع Google Cloud
- نطاق عام تملكه
2. قبل البدء
تعديل المشروع لدعم الدرس التطبيقي حول الترميز
يستخدم هذا الدرس التطبيقي حول الترميز $variables للمساعدة في تنفيذ إعدادات gcloud في Cloud Shell.
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3- إعداد أداة الإنتاج
إنشاء سحابة VPC الخاصة بالمنتج
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks create producer-vpc --project=$projectname --subnet-mode=custom
إنشاء الشبكات الفرعية للمنتج
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks subnets create gce-subnet --project=$projectname --range=172.16.20.0/28 --network=producer-vpc --region=us-central1
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks subnets create load-balancer-subnet --project=$projectname --range=172.16.10.0/28 --network=producer-vpc --region=us-central1
حجز عنوان IP لجهاز موازنة الحمل الداخلي
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute addresses create lb-ip \
--region=us-central1 \
--subnet=load-balancer-subnet \
--purpose=GCE_ENDPOINT
عرض عنوان IP المخصّص
استخدِم الأمر compute points describe لعرض عنوان IP المخصّص.
gcloud compute addresses describe lb-ip --region=us-central1 | grep address:
إنشاء شبكات فرعية للخادم الوكيل الإقليمي
يتم تخصيص الخادم الوكيل على مستوى شبكة VPC، وليس على مستوى جهاز موازنة الحمل. عليك إنشاء شبكة فرعية واحدة للوكيل فقط في كل منطقة من الشبكة الافتراضية (VPC) التي تستخدم فيها أجهزة موازنة الحمل المستنِدة إلى Envoy. إذا نشرت العديد من أجهزة موازنة الحمل في المنطقة نفسها وشبكة VPC نفسها، ستتم مشاركة الشبكة الفرعية نفسها للخادم الوكيل فقط من أجل موازنة التحميل.
- يجري العميل اتصالاً بعنوان IP ومنفذ قاعدة إعادة التوجيه لجهاز موازنة الحمل.
- يرصد كل خادم وكيل عنوان IP والمنفذ المحدّدَين من خلال قاعدة إعادة التوجيه لجهاز موازنة الحمل المقابل. يتلقى أحد الأجهزة الوكيلة اتصال شبكة العميل وتنهيه.
- يُنشئ الخادم الوكيل اتصالاً بالجهاز الافتراضي (VM) في الخلفية المناسبة والذي يتم تحديده من خلال ربط عنوان URL الخاص بجهاز موازنة الحمل وخدمات الخلفية.
عليك إنشاء شبكات فرعية للخادم الوكيل فقط بغض النظر عمّا إذا كانت شبكة VPC في الوضع التلقائي أو الوضع المخصّص. يجب أن توفر الشبكة الفرعية للخادم الوكيل فقط 64 عنوان IP أو أكثر. ويتوافق هذا مع طول بادئة تبلغ /26 أو أقل. حجم الشبكة الفرعية الموصى به هو /23 (512 من عناوين الخادم الوكيل فقط).
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks subnets create proxy-subnet-us-central \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-central1 \
--network=producer-vpc \
--range=172.16.0.0/23
إنشاء الشبكات الفرعية الخاصة بـ Private Service Connect NAT
أنشِئ شبكة فرعية واحدة أو أكثر مخصّصة لاستخدامها مع Private Service Connect. إذا كنت تستخدم وحدة تحكُّم Google Cloud من أجل نشر خدمة، يمكنك إنشاء الشبكات الفرعية أثناء هذا الإجراء. أنشئ الشبكة الفرعية في المنطقة نفسها التي يوجد بها جهاز موازنة حمل الخدمة. لا يمكنك تحويل شبكة فرعية عادية إلى شبكة فرعية خاصة بـ Private Service Connect.
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks subnets create psc-nat-subnet \
--project $projectname \
--network producer-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
إنشاء قواعد جدار الحماية للمنتج
يمكنك ضبط قواعد جدار الحماية للسماح بالزيارات بين الشبكة الفرعية لـ Private Service Connect NAT والشبكة الفرعية لخادم وكيل ILB فقط.
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute --project=$projectname firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24
داخل Cloud Shell، يمكنك إنشاء قاعدة جدار حماية fw-allow-health-check-in للسماح لعمليات التحقق من الصحة في Google Cloud بالوصول إلى خدمة المنتج (خدمة الخلفية) على منفذ TCP رقم 80.
gcloud compute firewall-rules create fw-allow-health-check \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:80
يمكنك إنشاء قاعدة إدخال للسماح بجدار الحماية للشبكة الفرعية للخادم الوكيل فقط، وذلك للسماح لجهاز موازنة الحمل بالاتصال بمثيلات الخلفية على منفذ TCP رقم 80.
gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=172.16.0.0/23 \
--rules=tcp:80
إعدادات جهاز توجيه السحابة الإلكترونية وترجمة عنوان الشبكة (NAT)
يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في الدرس التطبيقي حول الترميز لتثبيت حزمة البرامج بما أنّ الجهاز الافتراضي (VM) لا يحتوي على عنوان IP خارجي.
أنشئ داخل Cloud Shell جهاز توجيه السحابة الإلكترونية.
gcloud compute routers create cloud-router-for-nat --network producer-vpc --region us-central1
داخل Cloud Shell، أنشئ بوابة NAT.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
ضبط مجموعة المثيلات
في القسم التالي، ستقوم بإنشاء مثيل Compute Engine مجموعة مثيلات غير مُدارة. في الخطوات اللاحقة، سيتم استخدام مجموعة المثيل كخدمة خلفية لجهاز موازنة الحمل.
داخل Cloud Shell، أنشئ فحصًا صحيًا إقليميًا تم تمريره إلى خدمة المنتج.
gcloud compute instances create app-server-1 \
--project=$projectname \
--machine-type=e2-micro \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=gce-subnet \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'Welcome to App-Server-1 !!' | tee /var/www/html/index.html
EOF"
داخل Cloud Shell، أنشئ مجموعة المثيلات غير المُدارة.
gcloud compute instance-groups unmanaged create psc-instance-group --zone=us-central1-a
gcloud compute instance-groups unmanaged set-named-ports psc-instance-group --project=$projectname --zone=us-central1-a --named-ports=http:80
gcloud compute instance-groups unmanaged add-instances psc-instance-group --zone=us-central1-a --instances=app-server-1
ضبط جهاز موازنة الحمل
في الخطوات التالية، ستهيئ جهاز موازنة حمل HTTP الداخلي الذي سيتم نشره كمرفق خدمة في خطوة لاحقة.
أنشئ داخل Cloud Shell عملية التحقّق من الصحة على مستوى منطقة معيّنة.
gcloud compute health-checks create http http-health-check \
--region=us-central1 \
--use-serving-port
داخل Cloud Shell، أنشئ خدمة الخلفية.
gcloud compute backend-services create l7-ilb-backend-service \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=http-health-check \
--health-checks-region=us-central1 \
--region=us-central1
داخل Cloud Shell، أضِف الخلفيات إلى خدمة الخلفية.
gcloud compute backend-services add-backend l7-ilb-backend-service \
--balancing-mode=UTILIZATION \
--instance-group=psc-instance-group \
--instance-group-zone=us-central1-a \
--region=us-central1
داخل Cloud Shell، أنشِئ خريطة عنوان URL لتوجيه الطلبات الواردة إلى خدمة الخلفية.
gcloud compute url-maps create l7-ilb-map \
--default-service l7-ilb-backend-service \
--region=us-central1
أنشئ الخادم الوكيل لاستهداف HTTP.
gcloud compute target-http-proxies create l7-ilb-proxy\
--url-map=l7-ilb-map \
--url-map-region=us-central1 \
--region=us-central1
يمكنك إنشاء قاعدة إعادة توجيه لتوجيه الطلبات الواردة إلى الخادم الوكيل. لا تستخدِم الشبكة الفرعية للخادم الوكيل فقط لإنشاء قاعدة إعادة التوجيه.
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=load-balancer-subnet \
--address=lb-ip \
--ports=80 \
--region=us-central1 \
--target-http-proxy=l7-ilb-proxy \
--target-http-proxy-region=us-central1
4. التحقّق من جهاز موازنة الحمل
من Cloud Console، انتقِل إلى خدمات الشبكة ← موازنة الحمل ← أجهزة موازنة الحمل. ملاحظة عملية التحقق من الصحة بنجاح في خدمة الخلفية
يؤدي اختيار 'l7-ilb-map' إلى عرض عنوان IP للواجهة الأمامية، والذي من المفترض أن يتطابق مع عنوان IP الذي حصلت عليه في خطوة سابقة، كما يؤدي اختيار خدمة الخلفية.
5- إنشاء مرفق خدمة Private Service Connect
إنشاء مرفق الخدمة
داخل Cloud Shell، أنشئ مرفق الخدمة. تأكد من إضافة الرمز "." في نهاية اسم النطاق.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet --domain-names=cosmopup.net.
اختياري: في حال استخدام شبكة VPC مشتركة، أنشئ مرفق الخدمة في مشروع الخدمة.
gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/us-central1/subnetworks/psc-nat-subnet --domain-names=cosmopup.net.
انتقِل إلى Network Services (خدمات الشبكة) ← Private Service Connect (ربط الخدمة الخاصة) للاطّلاع على مرفق الخدمة الذي تم إنشاؤه حديثًا.
يؤدي اختيار published-service إلى توفير المزيد من التفاصيل، بما في ذلك معرّف الموارد المنتظم (URI) لمرفق الخدمة الذي يستخدمه المستهلك لإنشاء اتصال خدمة خاصة. اسم المجال.
تفاصيل مرفق الخدمة:
project/<project name>/regions/us-central1/service المصدرs/عمليات نشر-خدمة
6- إعداد المستهلك
تفعيل واجهات برمجة التطبيقات للمستهلكين
داخل السحابة الإلكترونية، تُجري Shell ما يلي:
gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com
إنشاء شبكة VPC للمستهلك
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
إنشاء الشبكات الفرعية للمستهلك
داخل Cloud Shell، أنشئ الشبكة الفرعية لمثيل الاختبار.
gcloud compute networks subnets create db1-subnet --project=$projectname --range=10.20.0.0/28 --network=consumer-vpc --region=us-central1
داخل Cloud Shell، أنشئ شبكة فرعية لنقطة نهاية المستهلك.
gcloud compute networks subnets create consumer-ep-subnet --project=$projectname --range=10.10.0.0/28 --network=consumer-vpc --region=us-central1
إنشاء نقطة نهاية المستهلك (قاعدة إعادة التوجيه)
داخل Cloud Shell، أنشئ عنوان IP الثابت الذي سيتم استخدامه لنقطة نهاية المستهلك.
gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=consumer-ep-subnet --addresses 10.10.0.10
نستخدم معرِّف الموارد المنتظم (URI) لمرفق الخدمة الذي تم إنشاؤه سابقًا لإنشاء نقطة نهاية المستهلك.
داخل Cloud Shell، أنشئ نقطة نهاية المستهلك.
gcloud compute forwarding-rules create stargazer --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$projectname/regions/us-central1/serviceAttachments/published-service
7. التحقّق من صحة الاتصال في شبكة VPC الخاصة بالمستهلك
من شبكة VPC للمستهلك، تأكَّد من نجاح اتصال خدمة خاصة من خلال الانتقال إلى خدمات الشبكة ← Private Service Connect ← نقاط النهاية المتصلة. لاحظ اتصال مراقب النجوم الذي تم إنشاؤه وعنوان IP المقابل الذي أنشأناه سابقًا.
عند اختيار psc-consumer-1، يتم توفير تفاصيل، بما في ذلك معرّف الموارد المنتظم (URI) لمرفق الخدمة.
8. التحقّق من صحة الاتصال في شبكة VPC التابعة للمُنتِج
من شبكة VPC التابعة للمُنتِج، تحقَّق من نجاح اتصال الخدمة الخاصة من خلال الانتقال إلى Network Services (خدمات الشبكة) ← Private Service Connect (ربط الخدمة الخاصة)←الخدمة المنشورة. يُرجى العلم أنّ اتصال الخدمة المنشور يشير الآن إلى قاعدة إعادة توجيه واحدة (نقطة نهاية الاتصال).
9. التحقّق من صحة الضبط التلقائي لنظام أسماء النطاقات
لنقيّم الآن ضبط نظام أسماء النطاقات ودليل الخدمات.
ضبط Cloud DNS
انتقِل إلى خدمات الشبكة ← Cloud DNS ← المناطق. يتم إنشاء اسم المنطقة goog-psc-default-us-central & على نظام أسماء النطاقات cosmopup.net. تلقائيًا.
عرض ضبط نظام أسماء النطاقات ودليل الخدمات
يتيح لنا اختيار اسم المنطقة معرفة كيفية دمج دليل الخدمة مع Cloud DNS.
ضبط دليل الخدمات
انتقِل إلى خدمات الشبكة ← دليل الخدمات.
هل تريد استدعاء اسم نقطة نهاية المستهلك "stargazer"؟ تتم برمجته تلقائيًا في "دليل الخدمات" ما يسمح لنا بالوصول إلى نقطة نهاية المستهلك باستخدام FQDN (اسم المجال المؤهل بالكامل) stargazer.goog-psc-default–us-central1
10. التحقق من وصول المستهلك إلى خدمة المنتجين
من شبكة VPC الخاصة بالمستهلك، سننشئ جهازًا افتراضيًا لاختبار الاتصال بالخدمة المنشورة من خلال الوصول إلى نقطة نهاية المستهلك stargazer.cosmopup.net
أنشئ داخل Cloud Shell مثيل الاختبار في vpc للمستهلك.
gcloud compute instances create db1 \
--zone=us-central1-a \
--image-family=debian-10 \
--image-project=debian-cloud \
--subnet=db1-subnet \
--no-address
للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:
- ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
- يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.
داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
سجّل الدخول إلى جهاز Vm للمستهلك باستخدام ميزة "الشراء داخل التطبيق" في Cloud Shell للتحقق من إمكانية الاتصال بخدمة المنتج من خلال تنفيذ ربط. يُرجى إعادة المحاولة في حال انتهاء المهلة.
gcloud compute ssh db1 --project=$projectname --zone=us-central1-a --tunnel-through-iap
قم بإجراء تجعيد للتحقق من الاتصال بخدمة المنتج. بعد التحقق من الخروج من الجهاز الافتراضي، والعودة إلى طلب Cloud Shell
داخل Cloud Shell، يمكنك تنفيذ ربط على نطاقك الخاص، على سبيل المثال stargazer.[custom-domain.com]. في النتيجة أدناه، يتم تنفيذ عملية تجعّد مقابل stargazer.cosmopup.net.
user@db1:~$ curl -v stargazer.cosmopup.net
* Trying 10.10.0.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55d3aa8190f0)
* Connected to stargazer.cosmopup.net (10.10.0.10) port 80 (#0)
> GET / HTTP/1.1
> Host: stargazer.cosmopup.net
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< date: Thu, 22 Dec 2022 00:16:25 GMT
< server: Apache/2.4.38 (Debian)
< last-modified: Wed, 21 Dec 2022 20:26:32 GMT
< etag: "1b-5f05c5e43a083"
< accept-ranges: bytes
< content-length: 27
< content-type: text/html
< via: 1.1 google
<
Welcome to App-Server-1 !!
يجب الخروج من الجهاز الافتراضي والعودة إلى طلب Cloud Shell لبدء مهام الحذف.
11. تَنظيم
من Cloud Shell، احذف مكونات الدرس التطبيقي حول الترميز.
gcloud compute forwarding-rules delete stargazer --region=us-central1 --quiet
gcloud compute instances delete db1 --zone=us-central1-a --quiet
gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet
gcloud compute networks subnets delete consumer-ep-subnet db1-subnet --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute networks delete consumer-vpc --quiet
gcloud compute service-attachments delete published-service --region=us-central1 --quiet
gcloud compute forwarding-rules delete l7-ilb-forwarding-rule --region=us-central1 --quiet
gcloud compute target-http-proxies delete l7-ilb-proxy --region=us-central1 --quiet
gcloud compute url-maps delete l7-ilb-map --region=us-central1 --quiet
gcloud compute backend-services delete l7-ilb-backend-service --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-instance-group --zone=us-central1-a --quiet
gcloud compute instances delete app-server-1 --zone=us-central1-a --quiet
gcloud compute firewall-rules delete allow-to-ingress-nat-subnet fw-allow-health-check fw-allow-proxy-only-subnet --quiet
gcloud compute addresses delete lb-ip --region=us-central1 --quiet
gcloud compute networks subnets delete gce-subnet load-balancer-subnet psc-nat-subnet proxy-subnet-us-central --region=us-central1 --quiet
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet
gcloud compute networks delete producer-vpc --quiet
12. تهانينا
تهانينا، لقد تم ضبط نقطة نهاية Private Service Connect والتحقّق من صحتها باستخدام الإعداد التلقائي لنظام أسماء النطاقات.
أنشأت البنية الأساسية للمنتِج، وأضفت مرفق خدمة مع تسجيل النطاق العام. لقد تعرَّفت على كيفية إنشاء نقطة نهاية للمستهلك في شبكة VPC الخاصة بالمستهلكين والتي أتاحت الاتصال بالخدمة داخل المؤسسة باستخدام نظام أسماء النطاقات الذي يتم إنشاؤه تلقائيًا.
يرى موقع Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.
الخطوات التالية
اطّلع على بعض هذه الدروس التطبيقية حول الترميز...
- استخدام Private Service Connect لنشر الخدمات واستخدامها من خلال GKE
- استخدام Private Service Connect لنشر الخدمات واستخدامها
- الاتصال بالخدمات في مقر الشركة عبر الاتصال المختلط باستخدام Private Service Connect وجهاز موازنة حمل خادم وكيل TCP الداخلي
تعزيز القراءة الفيديوهات
- نظرة عامة حول Private Service Connect
- ما هو Private Service Connect؟
- أنواع أجهزة موازنة الحمل المتوافقة