1. مقدمة
نظرة عامة
في هذا المختبر، سيتعرّف المستخدمون على كيفية نشر مركز Network Connectivity Center لنقطة نهاية Private Service Connect إلى شبكات VPC الفرعية.
يوفر مورد المحور نموذجًا مركزيًا لإدارة الاتصال من أجل ربط حركة بيانات الفروع في شبكة VPC بنقاط نهاية PSC.
ما ستنشئه
في هذا الدرس التطبيقي حول الترميز، ستنشئ شبكة NCC تنقل نقطة نهاية Private Service Connect إلى مثيل Cloud SQL.

أهداف الدورة التعليمية
- استخدام Private Service Connect للاتصال بمثيل Cloud SQL
- استخدِم مركز NCC لنشر الشبكة الفرعية لخدمة PSC إلى جميع الشبكات الفرعية التابعة لشبكة VPC من أجل السماح بالاتصال بالشبكة من شبكات VPC متعددة.
المتطلبات
- معرفة شبكات السحابة الإلكترونية في Google Cloud Platform
- معرفة أساسية بخدمة Cloud SQL
- مشروع Google Cloud
- تحقَّق من الحصة:الشبكات واطلب إضافة شبكات إضافية إذا لزم الأمر، كما هو موضّح في لقطة الشاشة أدناه:

الأهداف
- إعداد بيئة GCP
- إعداد مثيل Cloud SQL لـ MySql باستخدام Private Service Sonnect
- إعداد مركز Network Connectivity Center لنشر نقاط نهاية PSC
- إعداد Network Connectivity Center مع استخدام شبكة VPC كشبكة فرعية
- التحقّق من صحة مسار البيانات
- استكشاف ميزات إمكانية استخدام خدمة NCC
- تنظيف الموارد
قبل البدء
Google Cloud Console وCloud Shell
للتفاعل مع Google Cloud Platform، سنستخدم كلاً من Google Cloud Console وCloud Shell خلال هذا الدرس التطبيقي.
مشروع NCC Hub في Google Cloud Console
يمكن الوصول إلى Cloud Console على https://console.cloud.google.com.
اضبط العناصر التالية في Google Cloud لتسهيل إعداد Network Connectivity Center:
في Google Cloud Console، في صفحة اختيار المشروع، اختَر مشروعًا على Google Cloud أو أنشِئ مشروعًا.
شغِّل Cloud Shell. يستفيد هذا الدرس التطبيقي حول الترميز من المتغيرات $للمساعدة في تنفيذ إعدادات gcloud في Cloud Shell.
gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project
أدوار "إدارة الهوية وإمكانية الوصول"
تتطلّب "مركز إدارة العملاء" أدوار IAM للوصول إلى واجهات برمجة تطبيقات معيّنة. احرص على ضبط المستخدم باستخدام أدوار NCC IAM حسب الحاجة.
الدور/الوصف | الأذونات |
networkconnectivity.networkAdmin: تتيح لمشرفي الشبكة إدارة المحاور والفروع. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: تتيح إضافة وإدارة الأجهزة الفرعية في مركز. يجب استخدامه في شبكة VPC مشتركة يملك فيها المشروع المضيف "مركز التبادل"، ولكن يمكن للمشرفين الآخرين في المشاريع الأخرى إضافة "عُقد" إلى "مركز التبادل" من أجل المرفقات. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: يسمح لمستخدمي الشبكة بعرض سمات مختلفة للمركز والأجهزة المتصلة به. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. إعداد بيئة الشبكة
نظرة عامة
في هذا القسم، سننفّذ شبكتَي VPC وقواعد جدار الحماية في مشروع واحد. يوضّح المخطط المنطقي بيئة الشبكة التي سيتم إعدادها في هذه الخطوة.

إنشاء شبكة VPC1 وشبكة فرعية
تحتوي شبكة السحابة الخاصة الافتراضية (VPC) على شبكات فرعية ستثبّت فيها آلة GCE الافتراضية للتحقّق من صحة مسار البيانات.
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
إنشاء شبكة فرعية لخدمة Private Service Connect في شبكة VPC
استخدِم الأمر أدناه لإنشاء شبكة فرعية في شبكة VPC الفرعية التي سيتم تخصيصها لنقطة نهاية PSC.
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
vpc_spoke_subnet_ip_range="192.168.0.0/24"
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
إنشاء شبكة VPC3 وشبكة فرعية
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
vpc_spoke_subnet_ip_range="10.0.3.0/24"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom \
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
ضبط قواعد جدار الحماية في VPC1
ستسمح هذه القواعد بالاتصال بالشبكة من نطاقات RFC1918 وIdentity Access Proxy
vpc_spoke_network_name="vpc1-spoke"
gcloud compute firewall-rules create vpc1-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
gcloud compute firewall-rules create vpc1-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20
ضبط قواعد جدار الحماية وسحابة VPC الخاصة بالتوجيه
vpc_spoke_network_name="vpc3-spoke"
gcloud compute firewall-rules create vpc3-allow-all \
--network="${vpc_spoke_network_name}" \
--allow=all \
--source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
gcloud compute firewall-rules create vpc3-allow-iap \
--network="${vpc_spoke_network_name}" \
--allow all \
--source-ranges 35.235.240.0/20
ضبط إعدادات جهاز GCE الافتراضي في VPC1
ستحتاج إلى اتصال مؤقت بالإنترنت لتثبيت الحِزم، لذا اضبط الجهاز الافتراضي لاستخدام عنوان IP خارجي.
vm_vpc1_spoke_name="csql-vpc1-vm"
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="subnet1"
region="us-central1"
zone="us-central1-a"
gcloud compute instances create "${vm_vpc1_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'
ضبط جهاز GCE الافتراضي في شبكة VPC3
ستحتاج إلى اتصال مؤقت بالإنترنت لتثبيت الحِزم، لذا اضبط الجهاز الافتراضي لاستخدام عنوان IP خارجي.
vm_vpc_spoke_name="csql-vpc3-vm"
vpc_spoke_network_name="vpc3-spoke"
vpc_spoke_subnet_name="subnet3"
region="us-central1"
zone="us-central1-a"
gcloud compute instances create "${vm_vpc_spoke_name}" \
--machine-type="e2-medium" \
--subnet="${vpc_spoke_subnet_name}" \
--zone="${zone}" \
--image-family=debian-11 \
--image-project=debian-cloud \
--metadata=startup-script='#!/bin/bash
sudo apt-get update
sudo apt-get install -y default-mysql-client'
3- إنشاء مثيل Cloud SQL
استخدِم الأوامر أدناه لإنشاء آلة افتراضية وتفعيل Private Service Connect .
سيستغرق هذا الإجراء بضع دقائق.
gcloud config set project ${project}
gcloud sql instances create mysql-instance \
--project="${project}" \
--region=us-central1 \
--enable-private-service-connect \
--allowed-psc-projects="${project}" \
--availability-type=zonal \
--no-assign-ip \
--tier=db-f1-micro \
--database-version=MYSQL_8_0 \
--enable-bin-log
تحديد معرّف الموارد المنتظم (URI) لملحق الخدمة الخاص بمثيل Cloud SQL
استخدِم الأمر gcloud sql instances describe لعرض معلومات عن إحدى الآلات الافتراضية التي تم تفعيل Private Service Connect عليها. دوِّن قيمة الحقل pscServiceAttachmentLink الذي يعرض معرّف الموارد المنتظم (URI) الذي يشير إلى مرفق الخدمة الخاص بالمثيل. سنحتاج إلى هذه المعلومات في القسم التالي.
gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)'
4. نقطة نهاية PSC إلى Cloud SQL
حجز عنوان IP داخلي لنقطة نهاية PSC
استخدِم الأمر أدناه لحجز عنوان IP داخلي لنقطة نهاية Private Service Connect.
region="us-central1"
vpc_spoke_subnet_name="csql-psc-subnet"
gcloud compute addresses create csql-psc-ip \
--subnet="${vpc_spoke_subnet_name}" \
--region="${region}" \
--addresses=192.168.0.253
ابحث عن الاسم المرتبط بعنوان IP المحجوز. سيتم استخدام هذا المعرّف في إعداد قاعدة إعادة التوجيه.
gcloud compute addresses list \
--filter="name=csql-psc-ip"
إنشاء قاعدة إعادة التوجيه في Private Service Connect في VPC1
استخدِم الأمر أدناه لإنشاء نقطة نهاية Private Service Connect وتوجيهها إلى مرفق خدمة Cloud SQL.
vpc_spoke_network_name="vpc1-spoke"
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
csql_psc_ep_name="csql-psc-ep"
sa_uri=$(gcloud sql instances describe mysql-instance \
--format='value(pscServiceAttachmentLink)')
echo "$sa_uri"
gcloud compute forwarding-rules create "${csql_psc_ep_name}" \
--address=csql-psc-ip \
--region="${region}" \
--network="${vpc_spoke_network_name}" \
--target-service-attachment="${sa_uri}" \
--allow-psc-global-access
استخدِم الأمر أدناه للتأكّد من أنّ مرفق خدمة cSQL يقبل نقطة النهاية
gcloud compute forwarding-rules describe csql-psc-ep \
--region=us-central1 \
--format='value(pscConnectionStatus)'
التحقّق من مسار البيانات إلى MySQL من VPC1
عند إنشاء مثيل جديد من Cloud SQL، يجب ضبط كلمة مرور لحساب المستخدم التلقائي قبل أن تتمكّن من الاتصال بالمثيل.
gcloud sql users set-password root \
--host=% \
--instance=mysql-instance \
--prompt-for-password
استخدِم الأمر أدناه لتحديد موقع عنوان IP لنقطة نهاية PSC المرتبطة بمرفق خدمة Cloud SQL.
gcloud compute addresses describe csql-psc-ip \
--region=us-central1 \
--format='value(address)'
الاتصال بمثيل Cloud SQL من جهاز افتراضي في VPC1
افتح جلسة SSH إلى csql-vpc1-vm
gcloud compute ssh csql-vpc1-vm \
--zone=us-central1-a \
--tunnel-through-iap
استخدِم الأمر أدناه للاتصال بمثيل Cloud SQL. عندما يُطلب منك ذلك، أدخِل كلمة المرور التي تم إنشاؤها في الخطوة أعلاه.
mysql -h 192.168.0.253 -u root -p
يتم عرض الناتج أدناه عند تسجيل الدخول بنجاح.
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8350
Server version: 8.0.31-google (Google)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
استخدِم الأمر show databases; للتحقّق من قواعد البيانات التي يتم إنشاؤها تلقائيًا على MySql.
MySQL [(none)]> show databases;
الاتصال بمثيل Cloud SQL من جهاز افتراضي في VPC3
افتح جلسة SSH إلى csql-vpc3-vm.
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
استخدِم الأمر أدناه للاتصال بمثيل Cloud SQL. عندما يُطلب منك ذلك، أدخِل كلمة المرور التي تم إنشاؤها في الخطوة أعلاه.
mysql -h 192.168.0.253 -u root -p
يتعذّر بدء الجلسة من الجهاز الافتراضي المقيم على VPC3 لأنّه لا يوجد مسار بيانات من VPC3 إلى نقطة نهاية Private Service Connect. استخدِم ضغطات المفاتيح للخروج من الجلسة.
Ctrl + C
5- مركز Network Connectivity Center
نظرة عامة
في هذا القسم، سنضبط إعدادات NCC Hub باستخدام أوامر gcloud. سيعمل مركز NCC كلوحة تحكّم مسؤولة عن إنشاء مسار البيانات من الشبكات الفرعية في السحابة الافتراضية الخاصة (VPC) إلى نقطة نهاية Private Service Connect.

تفعيل "خدمات واجهة برمجة التطبيقات"
فعِّل واجهة برمجة التطبيقات الخاصة باتصال الشبكة في حال لم يتم تفعيلها بعد:
gcloud services enable networkconnectivity.googleapis.com
إنشاء مركز NCC
استخدِم أمر gcloud أدناه لإنشاء مركز NCC. يوجّه الخيار "–export-psc" مركز NCC إلى نشر نقاط نهاية PSC المعروفة إلى جميع الشبكات الفرعية VPC.
hub_name="ncc-hub"
gcloud network-connectivity hubs create "${hub_name}" \
--export-psc
أضِف وصفًا لمركز NCC الذي تم إنشاؤه حديثًا. دوِّن الاسم والمسار المرتبط به.
gcloud network-connectivity hubs describe ncc-hub
ضبط VPC1 كشبكة فرعية في NCC
hub_name="ncc-hub"
vpc_spoke_name="sql-vpc1-spoke"
vpc_spoke_network_name="vpc1-spoke"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
ضبط VPC3 كشبكة فرعية في NCC
hub_name="ncc-hub"
vpc_spoke_name="sql-vpc3-spoke"
vpc_spoke_network_name="vpc3-spoke"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
استخدِم الأمر أدناه للتحقّق من جدول التوجيه في NCC Hub بحثًا عن مسار إلى الشبكة الفرعية لخدمة PSC.
gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub
6. التحقّق من مسار بيانات NCC
في هذه الخطوة، سنتأكّد من صحة مسار البيانات بين NCC Hybrid وVPC Spoke.
التحقّق من مسار البيانات الذي تم ضبطه في NCC إلى نقطة نهاية PSC لمثيلات Cloud SQL
استخدِم الناتج من أوامر gcloud هذه لتسجيل الدخول إلى الجهاز الافتراضي المحلي.
gcloud compute instances list --filter="name=csql-vpc3-vm"
سجِّل الدخول إلى مثيل الجهاز الافتراضي المقيم في الشبكة المحلية.
gcloud compute ssh csql-vpc3-vm \
--zone=us-central1-a \
--tunnel-through-iap
استخدِم أمر mysql أدناه للاتصال بمثيل Cloud SQL. عندما يُطلب منك ذلك، أدخِل كلمة المرور التي تم إنشاؤها في الخطوة أعلاه.
mysql -h 192.168.0.253 -u root -p
يتم عرض الناتج أدناه عند تسجيل الدخول بنجاح.
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8501
Server version: 8.0.31-google (Google)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.005 sec)
استخدِم الأمر show databases; للتحقّق من قواعد البيانات التي يتم إنشاؤها تلقائيًا على MySql
MySQL [(none)]> show databases;
7. تنظيف
سجِّل الدخول إلى Cloud Shell واحذف موارد GCP.
حذف نقاط نهاية Private Service Connect في Cloud SQL
gcloud compute forwarding-rules delete csql-psc-ep \
--region=us-central1 \
--quiet
gcloud compute addresses delete csql-psc-ip \
--region=us-central1 \
--quiet
gcloud compute networks subnets delete csql-psc-subnet \
--region=us-central1 \
--quiet
حذف مثيل Cloud SQL
gcloud sql instances delete mysql-instance --quiet
حذف قواعد جدار الحماية
vpc_spoke_network_name="vpc3-spoke"
gcloud compute firewall-rules delete vpc3-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc3-allow-iap \ --network="${vpc_spoke_network_name}"
vpc_spoke_network_name="vpc1-spoke"
gcloud compute firewall-rules delete vpc1-allow-all \ --network="${vpc_spoke_network_name}"
gcloud compute firewall-rules delete vpc1-allow-iap \ --network="${vpc_spoke_network_name}"
حذف أجهزة GCE الافتراضية في VPC1 وVPC3
vm_vpc1_spoke_name="csql-vpc1-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc1_spoke_name}" \
--zone="${zone}" \
--quiet
vm_vpc_spoke_name="csql-vpc3-vm"
zone="us-central1-a"
gcloud compute instances delete "${vm_vpc_spoke_name}" \
--zone="${zone}" --quiet
حذف أجزاء NCC
vpc_spoke_name="sql-vpc1-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \
--quiet
vpc_spoke_name="sql-vpc3-spoke"
gcloud network-connectivity spokes delete "${vpc_spoke_name}" \
--global \
--quiet
حذف "مركز NCC"
hub_name="ncc-hub"
gcloud network-connectivity hubs delete "${hub_name}" \
--project=${project}
حذف الشبكات الفرعية في جميع شبكات VPC
vpc_spoke_subnet_name="csql-psc-subnet"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet1"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
vpc_spoke_subnet_name="subnet3"
region="us-central1"
gcloud compute networks subnets delete "${vpc_spoke_subnet_name}" \
--region="${region}" \
--quiet
حذف VPC1 وVPC3
gcloud compute networks delete vpc1-spoke vpc3-spoke
8. تهانينا!
لقد أكملت عملية نشر Private Service Connect باستخدام Network Connectivity Center Lab.
المواضيع التي تناولتها
- نشر نقاط نهاية Private Service Connect باستخدام Network Connectivity Center
الخطوات التالية