Private Service Connect من خلال ضبط نظام أسماء النطاقات تلقائيًا

1. مقدمة

يستخدم Private Service Connect مع الإعداد التلقائي لنظام أسماء النطاقات "دليل الخدمة" وCloud DNS لإنشاء سجلّات نظام أسماء النطاقات التي تتم برمجتها باستخدام عناوين IP لنقطة النهاية الخاصة بـ Private Service Connect.

ما الذي ستنشئه

في هذا الدرس التطبيقي حول الترميز، ستنشئ بنية شاملة لـ Private Service Connect توضّح استخدام نظام أسماء النطاقات التلقائي كما هو موضّح في الشكل 1.

يصبح نظام أسماء النطاقات التلقائي ممكنًا من خلال ما يلي:

  1. ينشئ مرفق خدمة "أداة نشر الأخبار" نظام أسماء النطاقات التلقائي من خلال تقديم نطاق عام مملوك باستخدام "- أسماء النطاقات". عند إنشاء مرفق خدمة Private Service Connect
  2. يحدد المستهلك اسم نقطة نهاية.
  3. ينشئ نظام أسماء النطاقات التلقائي كلاً من منطقة نظام أسماء النطاقات goog-psc-default-us-central1 واسم نظام أسماء النطاقات cosmopup.net، بالإضافة إلى إدخال دليل الخدمة الذي يتألف من اسم نقطة نهاية المستهلك.

يتم توضيح فائدة نظام أسماء النطاقات التلقائي في (4) حيث يمكن للمستخدم النهائي التواصل مع نقطة نهاية المستهلك عبر نظام أسماء النطاقات، FQDN stargazer.cosmopup.net.

على شكل 1

5e26a358454d1336.png

المعلومات التي ستطّلع عليها

  • كيفية إنشاء جهاز موازنة حمل 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 نفسها، ستتم مشاركة الشبكة الفرعية نفسها للخادم الوكيل فقط من أجل موازنة التحميل.

  1. يجري العميل اتصالاً بعنوان IP ومنفذ قاعدة إعادة التوجيه لجهاز موازنة الحمل.
  2. يرصد كل خادم وكيل عنوان IP والمنفذ المحدّدَين من خلال قاعدة إعادة التوجيه لجهاز موازنة الحمل المقابل. يتلقى أحد الأجهزة الوكيلة اتصال شبكة العميل وتنهيه.
  3. يُنشئ الخادم الوكيل اتصالاً بالجهاز الافتراضي (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، انتقِل إلى خدمات الشبكة ← موازنة الحمل ← أجهزة موازنة الحمل. ملاحظة عملية التحقق من الصحة بنجاح في خدمة الخلفية

881567cc11627009.png

يؤدي اختيار 'l7-ilb-map' إلى عرض عنوان IP للواجهة الأمامية، والذي من المفترض أن يتطابق مع عنوان IP الذي حصلت عليه في خطوة سابقة، كما يؤدي اختيار خدمة الخلفية.

bab89b0a7b4f95e9.png

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 (ربط الخدمة الخاصة) للاطّلاع على مرفق الخدمة الذي تم إنشاؤه حديثًا.

d27fee9073dbbe2.png

يؤدي اختيار published-service إلى توفير المزيد من التفاصيل، بما في ذلك معرّف الموارد المنتظم (URI) لمرفق الخدمة الذي يستخدمه المستهلك لإنشاء اتصال خدمة خاصة. اسم المجال.

503df63730c62df2.png

تفاصيل مرفق الخدمة:

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 المقابل الذي أنشأناه سابقًا.

c60812433c3e1676.png

عند اختيار psc-consumer-1، يتم توفير تفاصيل، بما في ذلك معرّف الموارد المنتظم (URI) لمرفق الخدمة.

14d3e3b1e0aee3c2.png

8. التحقّق من صحة الاتصال في شبكة VPC التابعة للمُنتِج

من شبكة VPC التابعة للمُنتِج، تحقَّق من نجاح اتصال الخدمة الخاصة من خلال الانتقال إلى Network Services (خدمات الشبكة) ← Private Service Connect (ربط الخدمة الخاصة)←الخدمة المنشورة. يُرجى العلم أنّ اتصال الخدمة المنشور يشير الآن إلى قاعدة إعادة توجيه واحدة (نقطة نهاية الاتصال).

911dbd7421bcfd3a.png

9. التحقّق من صحة الضبط التلقائي لنظام أسماء النطاقات

لنقيّم الآن ضبط نظام أسماء النطاقات ودليل الخدمات.

ضبط Cloud DNS

انتقِل إلى خدمات الشبكة ← Cloud DNS ← المناطق. يتم إنشاء اسم المنطقة goog-psc-default-us-central & على نظام أسماء النطاقات cosmopup.net. تلقائيًا.

4395e7b33fc42faa.png

عرض ضبط نظام أسماء النطاقات ودليل الخدمات

يتيح لنا اختيار اسم المنطقة معرفة كيفية دمج دليل الخدمة مع Cloud DNS.

e4fe44d945b20451.png

ضبط دليل الخدمات

انتقِل إلى خدمات الشبكة ← دليل الخدمات.

هل تريد استدعاء اسم نقطة نهاية المستهلك "stargazer"؟ تتم برمجته تلقائيًا في "دليل الخدمات" ما يسمح لنا بالوصول إلى نقطة نهاية المستهلك باستخدام FQDN (اسم المجال المؤهل بالكامل) stargazer.goog-psc-default–us-central1

602deab65b5ac315.png

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 أنّ الدروس التطبيقية حول الترميز رائعة.

8c2a10eb841f7b01.jpeg

الخطوات التالية

اطّلع على بعض هذه الدروس التطبيقية حول الترميز...

تعزيز القراءة الفيديوهات

المستندات المرجعية