۱. مقدمه
در این آزمایشگاه کد، شما یک اتصال به سمت جنوب به یک پایگاه داده postgres داخلی از طریق H-VPN با استفاده از یک متعادلکننده بار پروکسی tcp داخلی و گروه نقطه پایانی شبکه ترکیبی که از Looker PSC به عنوان یک مصرفکننده سرویس فراخوانی میشود، برقرار خواهید کرد.
سرویس خصوصی اتصال (Private Service Connect) قابلیتی از شبکه گوگل کلود (Google Cloud) است که به مصرفکنندگان اجازه میدهد تا به صورت خصوصی از داخل شبکه VPC خود به سرویسهای مدیریتشده دسترسی داشته باشند. به طور مشابه، به تولیدکنندگان سرویس مدیریتشده نیز اجازه میدهد تا این سرویسها را در شبکههای VPC جداگانه خود میزبانی کنند و یک اتصال خصوصی به مصرفکنندگان خود ارائه دهند. به عنوان مثال، وقتی از سرویس خصوصی اتصال برای دسترسی به Looker استفاده میکنید، شما مصرفکننده سرویس هستید و گوگل، همانطور که در شکل 1 برجسته شده است، تولیدکننده سرویس است.
شکل ۱.

دسترسی به سمت جنوب، که با نام PSC معکوس نیز شناخته میشود، به مصرفکننده این امکان را میدهد که به عنوان تولیدکننده، یک سرویس منتشر شده ایجاد کند تا به Looker اجازه دسترسی به نقاط انتهایی در محل، در یک VPC، به سرویسهای مدیریت شده و هیبرید را بدهد. اتصالات به سمت جنوب میتوانند در هر منطقهای، صرف نظر از محل استقرار Looker PSC، همانطور که در شکل 2 برجسته شده است، مستقر شوند.
شکل ۲.

آنچه یاد خواهید گرفت
- الزامات شبکه
- ایجاد یک سرویس تولیدکننده Private Service Connect
- ایجاد یک نقطه پایانی اتصال سرویس خصوصی در Looker
- با استفاده از یک اتصال آزمایشی، اتصال به پایگاه داده postgres داخلی را از Looker برقرار کنید.
آنچه نیاز دارید
- پروژه گوگل کلود با مجوزهای مالک
- نمونه PSC Looker موجود

۲. آنچه خواهید ساخت
شما یک شبکه تولیدکننده، looker-psc-demo، ایجاد خواهید کرد تا متعادلکننده بار پروکسی tcp داخلی و Hybrid NEG منتشر شده به عنوان یک سرویس از طریق Private Service Connect (PSC) را مستقر کنید. برای نمایش یک پایگاه داده در محل، یک VPC در محل را که با استفاده از HA-VPN به VPC در محل looker-psc-demo متصل است، مستقر خواهید کرد.
برای اعتبارسنجی دسترسی به سرویس تولیدکننده، اقدامات زیر را انجام خواهید داد:
- یک نقطه پایانی PSC در Looker مرتبط با پیوست سرویس تولیدکننده ایجاد کنید
- از کنسول Looker برای انجام اعتبارسنجی اتصال به پایگاه داده postgres در محل استفاده کنید
۳. الزامات شبکه
در زیر جزئیات الزامات شبکه برای شبکه تولیدکننده آمده است، مصرفکننده در این آزمایشگاه کد، نمونه Looker PSC است.
قطعات | توضیحات |
VPC (مشاهدهگر-psc-دمو) | حالت سفارشی VPC |
VPC (در حال حاضر-دمو) | حالت سفارشی VPC |
زیرشبکه PSC NAT | بستههای شبکه VPC مصرفکننده با استفاده از NAT مبدا (SNAT) ترجمه میشوند، به طوری که آدرسهای IP مبدا اصلی آنها به آدرسهای IP مبدا از زیرشبکه NAT در شبکه VPC تولیدکننده تبدیل میشوند. |
زیرشبکه قانون ارسال PSC | برای اختصاص آدرس IP به متعادلکننده بار پروکسی TCP داخلی منطقهای استفاده میشود. |
زیرشبکه PSC NEG | برای اختصاص آدرس IP به گروه نقاط پایانی شبکه استفاده میشود. |
زیرشبکه فقط پروکسی | به هر یک از پروکسیهای متعادلکننده بار، یک آدرس IP داخلی اختصاص داده میشود. بستههایی که از یک پروکسی به یک ماشین مجازی backend یا نقطه پایانی ارسال میشوند، دارای یک آدرس IP منبع از زیرشبکه فقط پروکسی هستند. |
هیبرید منفی | سرویسهای ابری داخلی و سایر سرویسها مانند هر سرویس ابری دیگری در backend متعادلسازی بار (Cloud Load Balancing) در نظر گرفته میشوند. تفاوت کلیدی این است که شما از یک اتصال ترکیبی NEG برای پیکربندی نقاط انتهایی این backendها استفاده میکنید. نقاط انتهایی باید ترکیبات معتبری از IP:port باشند که متعادلکننده بار شما بتواند با استفاده از محصولات اتصال ترکیبی مانند Cloud VPN یا Cloud Interconnect به آنها دسترسی پیدا کند. |
خدمات بکاند | یک سرویس backend به عنوان پلی بین متعادلکننده بار و منابع backend شما عمل میکند. در این آموزش، سرویس backend با Hybrid NEG مرتبط است. |
روتر ابری |
|
HA-VPN | HA VPN بین شبکههای Google Cloud VPC . در این توپولوژی، میتوانید دو شبکه Google Cloud VPC را با استفاده از یک دروازه HA VPN در هر شبکه به هم متصل کنید. شبکههای VPC میتوانند در یک منطقه یا چندین منطقه باشند. |
NAT ابری | توسط VPC نسخه آزمایشی برای خروج از اینترنت استفاده میشود. |
۴. توپولوژی Codelab

۵. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود. شما همیشه میتوانید آن را بهروزرسانی کنید.
- شناسه پروژه در تمام پروژههای گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاههای کد، باید شناسه پروژه خود را (که معمولاً با عنوان
PROJECT_IDشناخته میشود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، میتوانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، میتوانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی میماند. - برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده میکنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینهای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، میتوانید منابعی را که ایجاد کردهاید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی با تمام ابزارهای توسعهای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه کد را میتوان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.
۶. قبل از شروع
فعال کردن APIها
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
فعال کردن تمام سرویسهای لازم:
gcloud services enable compute.googleapis.com
۷. ایجاد شبکه VPC تولیدکننده
شبکه VPC
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create looker-psc-demo --subnet-mode custom
ایجاد زیرشبکهها
زیرشبکه PSC به منظور ترجمه آدرس شبکه با پیوست سرویس PSC مرتبط خواهد شد.
درون Cloud Shell، زیرشبکه PSC NAT را ایجاد کنید:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
درون Cloud Shell، زیرشبکهی قانون ارسال تولیدکننده را ایجاد کنید:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
درون Cloud Shell، زیرشبکه فقط پروکسی منطقهای تولیدکننده را ایجاد کنید:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
آدرس IP متعادلکننده بار را رزرو کنید
در داخل Cloud Shell، یک آدرس IP داخلی برای متعادلکننده بار رزرو کنید:
gcloud compute addresses create hybrid-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
در داخل Cloud Shell، آدرس IP رزرو شده را مشاهده کنید.
gcloud compute addresses describe hybrid-neg-lb-ip \
--region=$region | grep -i address:
خروجی مثال:
gcloud compute addresses describe hybrid-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
NEG هیبریدی را تنظیم کنید
یک شبکه NEG ترکیبی ایجاد کنید و –network-endpoint-type را روی NON_GCP_PRIVATE_IP_PORT تنظیم کنید.
در داخل Cloud Shell، یک Hybrid NEG ایجاد کنید که برای دسترسی به پایگاه داده on-premium استفاده میشود:
gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--network=looker-psc-demo \
--zone=$zone
درون Cloud Shell، Hybrid NEG را با IP:Port پایگاه داده on-prem، 192.168.10.4 و پورت 5432 که در مرحله بعدی آموزش ایجاد شده است، بهروزرسانی کنید:
gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
--add-endpoint=ip=192.168.10.4,port=5432 \
--zone=$zone
ایجاد یک بررسی سلامت منطقهای
درون Cloud Shell، یک بررسی سلامت ایجاد کنید که پورت پایگاه دادهی on-premium، یعنی ۵۴۳۲، را بررسی کند:
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
--region=$region \
--port=5432
ایجاد سیاست و قوانین فایروال شبکه
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
قانون فایروال زیر اجازه میدهد ترافیک از محدوده PSC NAT Subnet به تمام نمونههای شبکه ارسال شود.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
۸. ایجاد سرویس تولیدکننده
ایجاد کامپوننتهای متعادلکننده بار
درون Cloud Shell، یک سرویس backend ایجاد کنید::
gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region
درون Cloud Shell، بکاند Hybrid NEG را به سرویس بکاند اضافه کنید:
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region
در Cloud Shell، یک پروکسی TCP هدف ایجاد کنید تا درخواستها را به سرویس backend خود هدایت کنید:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
در سینتکس زیر، یک قانون ارسال (متعادلکننده بار پروکسی داخلی tcp) ایجاد کنید.
در Cloud Shell، موارد زیر را انجام دهید:
gcloud compute forwarding-rules create producer-hybrid-neg-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=hybrid-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=5432
ایجاد پیوست سرویس
درون Cloud Shell، ضمیمه سرویس، onpremdatabase1-svc-attachment را ایجاد کنید:
gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
در مرحله بعد، پیوست سرویس ذکر شده در selfLink URI را که با پروژههای پیکربندی نقطه پایانی PSC در Looker شروع میشود، دریافت و یادداشت کنید.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
مثال خروجی مورد انتظار:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2549689544315850024'
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/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr
در کنسول ابری، به مسیر زیر بروید:
سرویسهای شبکه → اتصال سرویس خصوصی → سرویسهای منتشر شده


۹. ایجاد یک اتصال نقطه پایانی PSC در Looker
در بخش بعدی، شما از طریق استفاده از پرچمهای –psc-service-attachment در Cloud Shell برای یک دامنه واحد، پیوست سرویس تولیدکنندگان را با Looker Core PSC مرتبط خواهید کرد.
درون Cloud Shell، با بهروزرسانی پارامترهای زیر برای مطابقت با محیط خود، ارتباط psc را ایجاد کنید:
- INSTANCE_NAME: نام نمونه Looker (هسته Google Cloud) شما.
- دامنه_۱: onprem.database1.com
- SERVICE_ATTACHMENT_1: آدرس اینترنتی (URI) هنگام ایجاد پیوست سرویس، onpremdatabase1-svc-attachment، ثبت شد.
- منطقه: منطقهای که نمونه Looker (هسته گوگل کلود) شما در آن میزبانی میشود.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
مثال:
gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region
در داخل Cloud Shell، اعتبارسنجی کنید که وضعیت اتصال serviceAttachments برابر با "ACCEPTED" باشد و نام نمونه PSC Looker خود را بهروزرسانی کنید:
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
مثال:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
مثال:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "looker.cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.14.18",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "onprem.database1.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-09-01T23:15:07.426372901Z"
}
اعتبارسنجی نقطه پایانی PSC در Cloud Console
از طریق کنسول ابری میتوانید اتصال PSC را تأیید کنید
در کنسول ابری، به مسیر زیر بروید:
مشاهدهگر → نمونه مشاهدهگر → جزئیات


شبکه VPC آماده به کار را ایجاد کنید
شبکه VPC
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
ایجاد زیرشبکه پایگاه داده Postgresql
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region
در داخل Cloud Shell، یک آدرس IPv4 داخلی، که برای onprem.database1.com استفاده میشود، یعنی ۱۹۲.۱۶۸.۱۰.۴، رزرو کنید:
gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4
روتر ابری را برای VPC نسخه آزمایشی ایجاد کنید
در آموزش نصب بسته نرمافزاری، از Cloud NAT استفاده شده است زیرا نمونه ماشین مجازی آدرس IP خارجی ندارد.
درون Cloud Shell، روتر ابری مورد استفاده با Cloud NAT و HA-VPN را ایجاد کنید:
gcloud compute routers create on-prem-cr \
--region=$region \
--network=on-prem-demo \
--asn=65002
درون Cloud Shell، دروازه NAT را ایجاد کنید:
gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region
نمونه آزمایشی پایگاه داده را ایجاد کنید
یک نمونه از postgres-database ایجاد کنید که برای آزمایش و اعتبارسنجی اتصال به Looker استفاده خواهد شد.
درون Cloud Shell، نمونه (instance) را ایجاد کنید:
gcloud compute instances create postgres-database \
--project=$project \
--zone=$zone \
--machine-type=e2-medium \
--subnet=database-subnet \
--no-address \
--private-network-ip 192.168.10.4 \
--image-family debian-12 \
--image-project debian-cloud \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
ایجاد سیاست و قوانین فایروال شبکه
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute network-firewall-policies create on-prem-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy
برای اینکه به IAP اجازه دهید به ماشینهای مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونههای ماشین مجازی که میخواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال میشود.
- اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را میدهد. این محدوده شامل تمام آدرسهای IP است که IAP برای ارسال TCP استفاده میکند.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
قانون فایروال زیر اجازه میدهد ترافیک از محدوده زیرشبکه فقط پروکسی به تمام نمونههای شبکه ارسال شود.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp
۱۰. اتصال ترکیبی
در بخش بعدی، شما یک روتر ابری ایجاد خواهید کرد که به شما امکان میدهد با استفاده از پروتکل دروازه مرزی (BGP) به صورت پویا مسیرها را بین ابر خصوصی مجازی (VPC) و شبکه همتا تبادل کنید.
روتر ابری میتواند یک جلسه BGP را از طریق یک تونل VPN ابری برای اتصال شبکههای شما راهاندازی کند. این روتر به طور خودکار محدوده آدرسهای IP زیرشبکه جدید را یاد میگیرد و آنها را به شبکه همکار شما اعلام میکند.
در مراحل زیر، شما HA VPN را بین VPC مربوط به looker-psc-demo و VPC مربوط به on-prem-demo مستقر خواهید کرد تا اتصال Hybrid NEG را به onprem.database1.com نشان دهید.
ایجاد HA VPN GW برای looker-psc-demo
وقتی هر دروازه ایجاد میشود، دو آدرس IPv4 خارجی به طور خودکار اختصاص داده میشود، یکی برای هر رابط دروازه.
درون Cloud Shell، HA VPN GW را ایجاد کنید:
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
--network=looker-psc-demo \
--region=$region
ایجاد HA VPN GW برای نسخه آزمایشی اولیه
وقتی هر دروازه ایجاد میشود، دو آدرس IPv4 خارجی به طور خودکار اختصاص داده میشود، یکی برای هر رابط دروازه.
درون Cloud Shell، HA VPN GW را ایجاد کنید:
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
اعتبارسنجی ایجاد HA VPN GW
با استفاده از کنسول، به مسیر HYBRID CONNECIVITY → VPN → CLOUD VPN GATEWAYS بروید.

ایجاد روتر ابری برای looker-psc-demo
درون Cloud Shell، روتر ابری را ایجاد کنید:
gcloud compute routers create looker-psc-demo-cr \
--region=$region \
--network=looker-psc-demo\
--asn=65001
ایجاد تونلهای VPN برای looker-psc-demo
شما دو تونل VPN روی هر دروازه HA VPN ایجاد خواهید کرد.
ایجاد تونل VPN0
درون Cloud Shell، tunnel0 را ایجاد کنید:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 0
ایجاد تونل VPN1
درون Cloud Shell، تونل ۱ را ایجاد کنید:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 1
ایجاد تونلهای VPN برای نسخه آزمایشی اولیه
شما دو تونل VPN روی هر دروازه HA VPN ایجاد خواهید کرد.
ایجاد تونل VPN0
درون Cloud Shell، tunnel0 را ایجاد کنید:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 0
ایجاد تونل VPN1
درون Cloud Shell، تونل ۱ را ایجاد کنید:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 1
اعتبارسنجی ایجاد تونل VPN
با استفاده از کنسول، به مسیر HYBRID CONNECIVITY → VPN → CLOUD VPN TUNNELS بروید.

۱۱. ایجاد همسایههای BGP
ایجاد یک رابط BGP و peering برای looker-psc-demo
درون Cloud Shell، رابط BGP را ایجاد کنید:
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel0 \
--region $region
درون Cloud Shell، همتای BGP را ایجاد کنید:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region $region
درون Cloud Shell، رابط BGP را ایجاد کنید:
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel1 \
--region $region
درون Cloud Shell، همتای BGP را ایجاد کنید:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region $region
ایجاد یک رابط BGP و peering برای نسخه آزمایشی اولیه
درون Cloud Shell، رابط BGP را ایجاد کنید:
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel0-to-looker-psc-demo \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region $region
درون Cloud Shell، همتای BGP را ایجاد کنید:
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel0 \
--interface if-tunnel1-to-looker-psc-demo \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region $region
درون Cloud Shell، رابط BGP را ایجاد کنید:
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel1-to-looker-psc-demo \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region $region
درون Cloud Shell، همتای BGP را ایجاد کنید:
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel1\
--interface if-tunnel2-to-looker-psc-demo \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region $region
برای مشاهده جزئیات تونل VPN به Hybrid CONNECIVITY → VPN بروید.

اعتبارسنجی مسیرهای آموختهشدهی looker-psc-demo از طریق HA VPN
اکنون که تونلهای HA VPN و جلسات BGP برقرار شدهاند، رفتار پیشفرض روتر ابری، تبلیغ مسیرهای زیرشبکه است. مسیرهای آموختهشده looker-psc-demo را مشاهده کنید.
با استفاده از کنسول، به مسیر VPC network → VPC networks → looker-psc-demo → ROUTES → REGION → VIEW بروید.
کاربر Observe looker-psc-demo زیرشبکه پایگاه داده 192.168.10.0/28 را از VPC در حال اجرا در نسخه آزمایشی اولیه یاد گرفته است.

اعتبارسنجی مسیرهای آموختهشده توسط VPC در نسخه آزمایشی اولیه از طریق HA VPN
از آنجایی که رفتار پیشفرض روتر ابری، تبلیغ همه زیرشبکهها است، زیرشبکه فقط پروکسی از طریق BGP تبلیغ میشود. Hybrid NEG هنگام ارتباط با سرور onprem.database1.com از زیرشبکه فقط پروکسی به عنوان آدرس منبع استفاده میکند.
کاربر Observe در نسخه آزمایشی خود، زیرشبکه فقط-پروکسی ۱۰.۱۰.۱۰.۰/۲۴ را از looker-psc-demo یاد گرفته است.
با استفاده از کنسول، به مسیر VPC network → VPC networks → on-prem-demo → ROUTES → REGION → VIEW بروید.

۱۲. ایجاد پایگاه دادهی Looker postgres
در بخش بعدی، با استفاده از Cloud Shell، یک SSH به ماشین مجازی postgres-database اجرا خواهید کرد.
درون Cloud Shell، یک ssh به نمونه postgres-database اجرا کنید**:**
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
در داخل سیستم عامل، آدرس IP (ens4) نمونه postgres-database را شناسایی و یادداشت کنید:
ip a
مثال:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 192.168.10.4/32 metric 100 scope global dynamic ens4
valid_lft 66779sec preferred_lft 66779sec
inet6 fe80::4001:c0ff:fea8:a04/64 scope link
valid_lft forever preferred_lft forever
در داخل سیستم عامل، وارد postgresql شوید:
sudo -u postgres psql postgres
در داخل سیستم عامل، رمز عبور را وارد کنید:
\password postgres
در داخل سیستم عامل، رمز عبور را postgres تنظیم کنید (دو بار رمز عبور یکسان را وارد کنید):
postgres
مثال:
user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
داخل سیستم عامل، از postgres خارج شوید:
\q
مثال:
postgres=# \q
user@postgres-database:~$
در بخش بعدی، آدرس IP مربوط به نمونه پایگاه داده postgres (192.168.10.4) و زیرشبکه فقط پروکسی (10.10.10.0/24) را در فایل pg_hba.conf در زیر اتصالات محلی IPv4 وارد خواهید کرد.
sudo nano /etc/postgresql/15/main/pg_hba.conf
تصویر زیر، بهروزرسانی تکمیلشده را نشان میدهد: 
در بخش زیر، فایل postgresql.conf را از حالت کامنت خارج کنید تا مطابق تصویر زیر، تمام آدرسهای IP با پسوند '*' را شنود کند:
sudo nano /etc/postgresql/15/main/postgresql.conf
قبل از:

بعد از:

در داخل سیستم عامل، سرویس postgresql را مجدداً راه اندازی کنید:
sudo service postgresql restart
در داخل سیستم عامل، وضعیت postgresql را به عنوان فعال تأیید کنید:
sudo service postgresql status
مثال:
در داخل سیستم عامل، وضعیت postgresql را به عنوان فعال تأیید کنید:
user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 20486 (code=exited, status=0/SUCCESS)
CPU: 2ms
Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
۱۳. ایجاد پایگاه داده postgres
در بخش بعدی، یک پایگاه داده postgres با نام postgres_looker و طرحواره looker_schema ایجاد خواهید کرد که برای اعتبارسنجی اتصال looker به محل استفاده میشود.
در داخل سیستم عامل، وارد postgres شوید:
sudo -u postgres psql postgres
در داخل سیستم عامل، پایگاه داده را ایجاد کنید:
create database postgres_looker;
درون سیستم عامل، پایگاه داده را فهرست کنید:
\l
در داخل سیستم عامل، کاربر postgres_looker را با رمز عبور postgreslooker ایجاد کنید:
create user postgres_looker with password 'postgreslooker';
داخل سیستم عامل، به پایگاه داده متصل شوید:
\c postgres_looker;
در داخل سیستم عامل، طرحواره looker-schema را ایجاد کنید و از خط فرمان Cloud Shell خارج شوید.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Exit from the OS, returning you to cloud shell:
\q
مثال:
user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.
postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
postgres_looker | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
(4 rows)
postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q
۱۴. ادغام Looker با پایگاه داده postgres در Postgres
در بخش بعدی از کنسول Looker برای ایجاد یک اتصال پایگاه داده به نمونه داخلی postgres-database استفاده خواهید کرد.
به بخش مدیریت → پایگاه داده → اتصالات بروید و گزینه افزودن اتصال را انتخاب کنید.
جزئیات اتصال را مطابق تصویر زیر پر کنید، CONNECT را انتخاب کنید

اتصال اکنون پیکربندی شده است

۱۵. اعتبارسنجی اتصال Looker
در بخش بعدی یاد خواهید گرفت که چگونه اتصال Looker به پایگاه داده postgres را در on-prem-vpc با استفاده از اکشن 'test' Looker و TCPDUMP اعتبارسنجی کنید.
اگر مهلت زمانی جلسه به پایان رسیده است، از Cloud Shell وارد پایگاه داده postgres شوید.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
از طریق سیستم عامل، یک فیلتر TCPDUMP با زیرشبکه فقط پروکسی 10.10.10.0/24 ایجاد کنید.
sudo tcpdump -i any net 10.10.10.0/24 -nn
به مسیر اتصال داده بروید: مدیر → پایگاه داده → اتصالات → پایگاه داده postgres → تست
پس از انتخاب Test، Looker مطابق شکل زیر به پایگاه داده postgres متصل میشود:

تمیز کردن
از یک ترمینال Cloud Shell، اجزای آزمایشگاه را حذف کنید
gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q
gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q
gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q
gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q
gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q
gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q
gcloud compute instances delete postgres-database --zone=$zone -q
gcloud compute addresses delete on-prem-database1-ip --region=$region -q
gcloud compute networks subnets delete database-subnet --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy --name=on-prem-demo --global-firewall-policy -q
gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q
gcloud compute networks delete on-prem-demo -q
gcloud compute networks delete looker-psc-demo -q
۱۶. تبریک
تبریک میگوییم، شما با موفقیت اتصال به پایگاه داده داخلی را از طریق HA-VPN با استفاده از Looker Console که توسط Private Service Connect پشتیبانی میشود، پیکربندی و تأیید کردید.
شما زیرساخت تولیدکننده را ایجاد کردید، یاد گرفتید که چگونه یک نقطه پایانی Hybrid NEG، سرویس تولیدکننده و Looker PSC ایجاد کنید که امکان اتصال به سرویس تولیدکننده را فراهم میکند.
کازموپاپ فکر میکند که کدلبها فوقالعاده هستند!!

بعدش چی؟
به برخی از این آزمایشگاههای کد نگاهی بیندازید...
- استفاده از Private Service Connect برای انتشار و مصرف سرویسها
- با استفاده از Private Service Connect و یک متعادلکننده بار داخلی TCP Proxy، از طریق شبکه ترکیبی به سرویسهای On-Premium متصل شوید.
- دسترسی به تمام آزمایشگاههای کد منتشر شدهی Private Service Connect