۱. مقدمه
نمای کلی
در این آزمایش، کاربران بررسی خواهند کرد که چگونه هاب مرکز اتصال شبکه، یک نقطه پایانی اتصال سرویس خصوصی را به پرههای VPC منتقل میکند.
منبع هاب، یک مدل مدیریت اتصال متمرکز برای اتصال ترافیک پرههای VPC به نقاط پایانی PSC فراهم میکند.
آنچه خواهید ساخت
در این آزمایشگاه کد، شما یک شبکه NCC خواهید ساخت که یک نقطه پایانی اتصال سرویس خصوصی را به نمونه Cloud SQL منتشر میکند.

آنچه یاد خواهید گرفت
- برای اتصال به یک نمونه Cloud SQL از Private Service Connect استفاده کنید
- از هاب NCC برای انتشار زیرشبکه PSC به تمام پرههای VPC استفاده کنید تا امکان اتصال شبکه از چندین شبکه VPC فراهم شود.
آنچه نیاز دارید
- آشنایی با شبکه ابری GCP
- دانش پایه در مورد SQL ابری
- پروژه ابری گوگل
- Quota:Networks خود را بررسی کنید و در صورت لزوم، شبکههای اضافی را درخواست کنید ، تصویر زیر را ببینید:

اهداف
- راهاندازی محیط GCP
- راهاندازی نمونه Cloud SQL برای MySql با سرویس خصوصی Sonnect
- پیکربندی Network Connectivity Center Hub برای انتشار نقاط پایانی PSC
- پیکربندی مرکز اتصال شبکه با VPC همانطور که گفته شد
- اعتبارسنجی مسیر داده
- ویژگیهای سرویسپذیری NCC را بررسی کنید
- پاکسازی منابع
قبل از اینکه شروع کنی
کنسول ابری گوگل و پوسته ابری
برای تعامل با GCP، در طول این آزمایش از هر دو کنسول ابری گوگل و پوسته ابری استفاده خواهیم کرد.
پروژه مرکز NCC، کنسول ابری گوگل
کنسول ابری از طریق آدرس https://console.cloud.google.com قابل دسترسی است.
برای آسانتر کردن پیکربندی Network Connectivity Center، موارد زیر را در Google Cloud تنظیم کنید:
در کنسول گوگل کلود، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.
Cloud Shell را اجرا کنید. این Codelab از $variables برای کمک به پیادهسازی پیکربندی gcloud در Cloud Shell استفاده میکند.
gcloud auth list
gcloud config list project
gcloud config set project $project
project=[YOUR-PROJECT-NAME]
echo $project
نقشهای IAM
NCC برای دسترسی به APIهای خاص به نقشهای IAM نیاز دارد. حتماً کاربر خود را در صورت نیاز با نقشهای IAM مربوط به NCC پیکربندی کنید.
نقش/توضیحات | مجوزها |
networkconnectivity.networkAdmin - به مدیران شبکه اجازه میدهد تا هاب و اسپوک را مدیریت کنند. | اتصال شبکه.هابها. اتصال شبکه.اسپوکها. |
networkconnectivity.networkSpokeManager - امکان افزودن و مدیریت Spokeها را در یک هاب فراهم میکند. برای استفاده در Shared VPC که در آن پروژه میزبان مالک هاب است، اما سایر مدیران در پروژههای دیگر میتوانند Spokeهایی برای پیوستهای خود به هاب اضافه کنند. | اتصال شبکه.اسپوک.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer - به کاربران شبکه اجازه میدهد تا ویژگیهای مختلف hub و spokes را مشاهده کنند. | اتصال شبکه.هابها.دریافت اتصال شبکه.هابها.لیست اتصال شبکه.اسپوکها.دریافت اتصال شبکه.لیست اتصال شبکه.اسپوکها.لیست اتصال شبکه.اسپوکها.لیست تجمیعی |
۲. راهاندازی محیط شبکه
نمای کلی
در این بخش، دو شبکه VPC و قوانین فایروال را در یک پروژه واحد مستقر خواهیم کرد. نمودار منطقی، محیط شبکهای را که در این مرحله راهاندازی خواهد شد، نشان میدهد.

ایجاد VPC1 و یک زیرشبکه
شبکه VPC شامل زیرشبکههایی است که شما GCE VM را برای اعتبارسنجی مسیر داده نصب خواهید کرد.
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}"
ایجاد یک زیرشبکه PSC در VPC
از دستور زیر برای ایجاد یک زیرشبکه در VPC spoke که به PSC-EP اختصاص داده خواهد شد، استفاده کنید.
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
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'
۳. نمونه 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)'
۴. نقطه پایانی 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"
ایجاد قانون ارسال اتصال سرویس خصوصی در 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 Instance از یک ماشین مجازی در 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)]>
برای بررسی پایگاههای دادهای که به طور پیشفرض در MySql ایجاد شدهاند، از دستور show databases; استفاده کنید.
MySQL [(none)]> show databases;
اتصال به Cloud Sql Instance از یک ماشین مجازی در 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 به نقطه پایانی اتصال سرویس خصوصی وجود ندارد. برای خروج از جلسه از کلیدهای ترکیبی استفاده کنید.
Ctrl + C
۵. هاب مرکز اتصال شبکه
نمای کلی
در این بخش، ما یک NCC Hub را با استفاده از دستورات gcloud پیکربندی خواهیم کرد. NCC Hub به عنوان صفحه کنترل مسئول ساخت مسیر داده از پرههای VPC به نقطه پایانی Private Service Connect عمل خواهد کرد.

فعال کردن سرویسهای API
اگر هنوز API اتصال شبکه فعال نشده است، آن را فعال کنید:
gcloud services enable networkconnectivity.googleapis.com
ایجاد مرکز NCC
از دستور gcloud زیر برای ایجاد یک هاب NCC استفاده کنید. پرچم "–export-psc" به NCC Hub دستور میدهد تا نقاط پایانی 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 spoke
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 spoke
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
۶. مسیر داده NCC را تأیید کنید
در این مرحله، مسیر داده بین NCC hybrid و VPC spoke را اعتبارسنجی خواهیم کرد.
مسیر داده پیکربندی شده NCC را به نقطه پایانی Cloud Sql Instances PSC تأیید کنید
از خروجی این دستورات gcloud برای ورود به ماشین مجازی on prem استفاده کنید.
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)
برای بررسی پایگاههای دادهای که به طور پیشفرض در MySql ایجاد شدهاند، از دستور show databases; استفاده کنید.
MySQL [(none)]> show databases;
۷. تمیز کردن
وارد پوسته ابری شوید و منابع GCP را حذف کنید.
نقاط پایانی PSC 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
۸. تبریک میگویم!
شما انتشار Private Service Connect را با آزمایشگاه مرکز اتصال به شبکه تکمیل کردهاید!
آنچه را که پوشش دادید
- انتشار نقطه پایانی Private Service Connect با مرکز اتصال شبکه
مراحل بعدی