Looker PSC Southbound Hybrid NEG به داخل محل،Looker PSC Southbound Hybrid NEG به داخل محل،Looker PSC Southbound Hybrid NEG به داخل محل،Looker PSC Southbound Hybrid NEG به داخل محل

1. مقدمه

در این کد لبه شما با استفاده از یک متعادل کننده بار پروکسی داخلی tcp و گروه نقطه پایانی شبکه ترکیبی که از Looker PSC به عنوان مصرف کننده خدمات فراخوانی شده است، یک اتصال به سمت جنوب به پایگاه داده postgres داخلی از طریق H-VPN انجام خواهید داد.

Private Service Connect یکی از قابلیت‌های شبکه Google Cloud است که به مصرف‌کنندگان اجازه می‌دهد به‌طور خصوصی از داخل شبکه VPC خود به خدمات مدیریت شده دسترسی داشته باشند. به طور مشابه، به تولیدکنندگان خدمات مدیریت شده اجازه می دهد تا این خدمات را در شبکه های VPC جداگانه خود میزبانی کنند و یک اتصال خصوصی به مصرف کنندگان خود ارائه دهند. به عنوان مثال، هنگامی که از Private Service Connect برای دسترسی به Looker استفاده می کنید، شما مصرف کننده سرویس هستید و Google تولید کننده سرویس است، همانطور که در شکل 1 مشخص شده است.

شکل 1.

145ea4672c3a3b14.png

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

شکل 2.

259493afd914f68b.png

چیزی که یاد خواهید گرفت

  • الزامات شبکه
  • یک سرویس تولید کننده Private Service Connect ایجاد کنید
  • یک نقطه پایانی Private Service Connect در Looker ایجاد کنید
  • با استفاده از یک Test Connection از Looker به پایگاه داده postgres در محل متصل شوید

آنچه شما نیاز دارید

def88091b42bfe4d.png

2. آنچه می سازید

شما یک شبکه Producer، looker-psc-demo، برای استقرار متعادل کننده بار پراکسی tcp داخلی و Hybrid NEG که به عنوان یک سرویس از طریق Private Service Connect (PSC) منتشر می شود، ایجاد خواهید کرد. برای نشان دادن یک پایگاه داده در محل، یک VPC روی prem-demo متصل به Looker-psc-Demo VPC با استفاده از HA-VPN مستقر خواهید کرد.

اقدامات زیر را برای تأیید اعتبار دسترسی به سرویس تولیدکننده انجام خواهید داد:

  • یک نقطه پایانی PSC در Looker مرتبط با پیوست سرویس تولیدکننده ایجاد کنید
  • از کنسول Looker برای تأیید اعتبار اتصال به پایگاه داده postgres در محل استفاده کنید

3. الزامات شبکه

در زیر تجزیه و تحلیل الزامات شبکه برای شبکه Producer آورده شده است، مصرف کننده در این Codelab نمونه Looker PSC است.

اجزاء

توضیحات

VPC (looker-psc-demo)

حالت سفارشی VPC

VPC (در نسخه آزمایشی اولیه)

حالت سفارشی VPC

زیرشبکه PSC NAT

بسته‌های شبکه VPC مصرف‌کننده با استفاده از NAT منبع (SNAT) ترجمه می‌شوند تا آدرس‌های IP منبع اصلی آنها به آدرس‌های IP منبع از زیرشبکه NAT در شبکه VPC تولیدکننده تبدیل شود.

زیرشبکه قانون حمل و نقل PSC

برای تخصیص یک آدرس IP برای متعادل کننده بار پراکسی TCP داخلی منطقه ای استفاده می شود

زیرشبکه PSC NEG

برای تخصیص یک آدرس IP برای گروه نقطه پایانی شبکه استفاده می شود

زیرشبکه فقط پروکسی

به هر یک از پراکسی های load balancer یک آدرس IP داخلی اختصاص داده شده است. بسته های ارسال شده از یک پروکسی به یک ماشین مجازی پشتیبان یا نقطه پایانی دارای یک آدرس IP منبع از زیر شبکه فقط پراکسی هستند.

هیبرید NEG

در محل و سایر سرویس‌های ابری مانند سایر خدمات Cloud Load Balancing رفتار می‌شود. تفاوت اصلی این است که شما از یک NEG اتصال ترکیبی برای پیکربندی نقاط پایانی این backendها استفاده می کنید. نقاط پایانی باید ترکیبات IP:پورت معتبری باشند که متعادل کننده بار شما می تواند با استفاده از محصولات اتصال ترکیبی مانند Cloud VPN یا Cloud Interconnect به آنها برسد.

خدمات Backend

یک سرویس پشتیبان به عنوان پلی بین متعادل کننده بار و منابع باطن شما عمل می کند. در آموزش، سرویس Backend با Hybrid NEG مرتبط است.

روتر ابری

  • Cloud NAT برای قابلیت های صفحه کنترل به Cloud Routers متکی است، اما برای مدیریت جلسه BGP نه.
  • روتر ابری برای BGP که برای ایجاد HA-VPN بین VPCهای psc-looker-demo و on-prem-demo ایجاد شده است استفاده می شود.

HA-VPN

HA VPN بین شبکه‌های Google Cloud VPC . در این توپولوژی، می توانید با استفاده از یک دروازه HA VPN در هر شبکه، دو شبکه Google Cloud VPC را به هم متصل کنید. شبکه های VPC می توانند در یک منطقه یا چندین منطقه باشند.

Cloud NAT

توسط VPC نسخه ی نمایشی اولیه برای خروج از اینترنت استفاده می شود

4. توپولوژی Codelab

79aeb28b38f237da.png

5. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

6. قبل از شروع

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

7. Producer VPC Network ایجاد کنید

شبکه 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

Hybrid NEG را راه اندازی کنید

یک NEG هیبریدی ایجاد کنید و –network-endpoint-type را روی NON_GCP_PRIVATE_IP_PORT تنظیم کنید

در داخل Cloud Shell، یک NEG Hybrid ایجاد کنید که برای دسترسی به پایگاه داده on-prem استفاده می شود:

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-prem، 5432 را بررسی کند:

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 به تمام نمونه های شبکه اجازه می دهد.

در داخل 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

8. ایجاد سرویس تولید کننده

اجزای Load Balancer را ایجاد کنید

در داخل 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، Backend NEG Hybrid را به سرویس Backend اضافه کنید:

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 هدف ایجاد کنید تا درخواست‌ها را به سرویس باطن خود هدایت کند:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

در دستور زیر، یک قانون فوروارد (internal tcp proxy load balancer) ایجاد کنید.

در 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

در Cloud Console به مسیر زیر بروید:

خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. یک اتصال نقطه پایانی PSC در Looker ایجاد کنید

در بخش بعدی، پیوست سرویس تولیدکنندگان را با Looker Core PSC از طریق استفاده از پرچم‌های –psc-service-attachment در Cloud Shell برای یک دامنه، مرتبط می‌کنید.

در داخل Cloud Shell، با به روز رسانی پارامترهای زیر برای مطابقت با محیط خود، انجمن psc را ایجاد کنید:

  • INSTANCE_NAME: نام نمونه Looker شما (هسته Google Cloud).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI هنگام ایجاد پیوست سرویس، onpremdatabase1-svc-attachment گرفته می شود
  • REGION: منطقه ای که نمونه Looker (هسته Google Cloud) شما در آن میزبانی می شود.

در داخل 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، سرویسAttachments را تأیید کنید وضعیت اتصال «پذیرفته شده است»، با نام Looker PSC Instance خود به‌روزرسانی کنید:

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

از Cloud Console می توانید اتصال PSC را تأیید کنید

در Cloud Console به مسیر زیر بروید:

Looker → Looker Instance → Details

2d4684d722d31e4b.png

993cdaf748f4c030.png

شبکه VPC on-prem را ایجاد کنید

شبکه 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، 192.168.10.4 استفاده می‌شود، رزرو کنید:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

روتر ابری را برای VPC نسخه ی نمایشی اولیه ایجاد کنید

Cloud NAT در آموزش نصب بسته نرم افزاری استفاده می شود زیرا نمونه VM آدرس IP خارجی ندارد.

در داخل Cloud Shell، Cloud Router مورد استفاده با 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 ایجاد کنید که برای آزمایش و اعتبارسنجی اتصال به Looker استفاده می شود.

در داخل Cloud Shell، نمونه را ایجاد کنید:

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 اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:

  • برای تمام نمونه های VM که می خواهید با استفاده از 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

10. اتصال هیبریدی

در بخش زیر، یک Cloud Router ایجاد می کنید که به شما امکان می دهد با استفاده از پروتکل دروازه مرزی (BGP) مسیرها را بین Virtual Private Cloud (VPC) و شبکه همتای خود به صورت پویا مبادله کنید.

Cloud Router می تواند یک جلسه BGP را روی یک تونل Cloud VPN برای اتصال شبکه های شما راه اندازی کند. به طور خودکار محدوده آدرس IP زیرشبکه جدید را می آموزد و آنها را به شبکه همتای شما اعلام می کند.

در مراحل زیر HA VPN را بین Looker-psc-Demo VPC و on-prem-demo VPC برای نشان دادن اتصال 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 CONNECTIVITY → VPN → CLOUD VPN GATEWAYS بروید.

7f1b504616504866.png

Cloud Router را برای looker-psc-demo ایجاد کنید

در داخل Cloud Shell، Cloud Router را ایجاد کنید:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

تونل های VPN را برای Looker-psc-Demo ایجاد کنید

شما دو تونل VPN در هر دروازه HA VPN ایجاد خواهید کرد.

ایجاد VPN tunnel0

در داخل 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

ایجاد VPN tunnel1

در داخل Cloud Shell، tunnel1 ایجاد کنید:

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 ایجاد خواهید کرد.

ایجاد VPN tunnel0

در داخل 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

ایجاد VPN tunnel1

در داخل Cloud Shell، tunnel1 ایجاد کنید:

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 CONNECTIVITY → VPN → CLOUD VPN TUNNELS بروید.

c2fcb340a7614070.png

11. همسایگان BGP را ایجاد کنید

یک رابط BGP و همتاسازی برای 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 و همتاسازی برای نسخه ی نمایشی اولیه ایجاد کنید

در داخل 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 CONNECTIVITY → VPN بروید.

78ab590317919bf5.png

مسیرهای آموخته شده looker-psc-demo را از طریق HA VPN تأیید کنید

اکنون که تونل‌های HA VPN و جلسات BGP ایجاد شده‌اند، رفتار پیش‌فرض Cloud Router تبلیغ مسیرهای زیرشبکه است. مشاهده مسیرهای آموخته شده looker-psc-demo.

با استفاده از کنسول، به شبکه VPC → شبکه های VPC → Looker-psc-Demo → ROUTES → REGION → VIEW بروید.

Observe looker-psc-demo پایگاه داده-subnet 192.168.10.0/28 را از VPC-prem-demo یاد گرفته است.

c11a11ed8b0491c8.png

مسیرهای یادگیری VPC در مرحله آزمایشی را از طریق HA VPN تأیید کنید

از آنجایی که رفتار پیش‌فرض Cloud Router این است که همه زیرشبکه‌ها را تبلیغ کند، تنها زیرشبکه پراکسی از طریق BGP تبلیغ می‌شود. Hybrid NEG در هنگام برقراری ارتباط با سرور onprem.database1.com فقط از زیرشبکه پراکسی به عنوان آدرس منبع استفاده می کند.

Observe on-prem-demo proxy-only-subnet 10.10.10.0/24 را از looker-psc-demo یاد گرفته است.

با استفاده از کنسول، به شبکه VPC → شبکه های VPC → نمایش اولیه → مسیرها → REGION → VIEW بروید.

b0073faed026931f.png

12. Looker postgres-base database

در بخش زیر، SSH را در postgres-database vm با استفاده از Cloud Shell انجام خواهید داد.

در داخل 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-database (192.168.10.4) و زیر شبکه فقط پروکسی (10.10.10.0/24) را در فایل pg_hba.conf تحت اتصالات محلی IPv4 درج می کنید.

sudo nano /etc/postgresql/15/main/pg_hba.conf

اسکرین شات زیر آپدیت کامل شده است: eaff2ed6d27fa7cc.png

در بخش زیر، postgresql.conf را حذف کنید تا همه آدرس‌های IP «*» را در تصویر زیر گوش دهید:

sudo nano /etc/postgresql/15/main/postgresql.conf

قبل از:

65e0b1074dc48644.png

بعد از:

14a0d1fa5455e23e.png

در داخل سیستم عامل، سرویس 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.

13. پایگاه داده postgres را ایجاد کنید

در بخش زیر، یک پایگاه داده postgres با نام postgres_looker و schema 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;

در داخل سیستم عامل، schema 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

14. Looker را با پایگاه داده Postgres postgres ادغام کنید

در بخش زیر از Looker Console برای ایجاد اتصال پایگاه داده به نمونه postgres-database داخلی استفاده خواهید کرد.

به ADMIN → پایگاه داده → اتصالات → انتخاب افزودن اتصال بروید

جزئیات اتصال را در تصویر زیر پر کنید، CONNECT را انتخاب کنید

5900fdf0b698cbfc.png

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

4817157fd3b1277e.png

15. اعتبار اتصال Looker

در بخش بعدی نحوه اعتبارسنجی اتصال Looker به پایگاه داده postgres در on-prem-vpc با استفاده از اکشن Looker 'test' و 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

به ADMIN اتصال داده → پایگاه داده → اتصالات → پایگاه داده postgres → تست بروید

پس از انتخاب Test Looker به پایگاه داده postgres متصل می شود که در زیر نشان داده شده است:

774f9313ece41034.png

تمیز کردن

از یک ترمینال 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

16. تبریک می گویم

تبریک می‌گوییم، شما با موفقیت اتصال به پایگاه داده داخلی را از طریق HA-VPN با استفاده از Looker Console که توسط Private Service Connect پشتیبانی می‌شود، پیکربندی و تأیید کردید.

شما زیرساخت تولیدکننده را ایجاد کردید، یاد گرفتید که چگونه یک NEG هیبریدی، سرویس تولید کننده و نقطه پایانی Looker PSC ایجاد کنید که امکان اتصال به سرویس تولیدکننده را فراهم می کند.

Cosmopup فکر می کند که نرم افزارهای کدنویسی عالی هستند!!

c911c127bffdee57.jpeg

بعدش چی؟

برخی از این کدها را بررسی کنید...

ادامه مطلب و ویدیوها

اسناد مرجع

،

1. مقدمه

در این کد لبه شما با استفاده از یک متعادل کننده بار پروکسی داخلی tcp و گروه نقطه پایانی شبکه ترکیبی که از Looker PSC به عنوان مصرف کننده خدمات فراخوانی شده است، یک اتصال به سمت جنوب به پایگاه داده postgres داخلی از طریق H-VPN انجام خواهید داد.

Private Service Connect یکی از قابلیت‌های شبکه Google Cloud است که به مصرف‌کنندگان اجازه می‌دهد به‌طور خصوصی از داخل شبکه VPC خود به خدمات مدیریت شده دسترسی داشته باشند. به طور مشابه، به تولیدکنندگان خدمات مدیریت شده اجازه می دهد تا این خدمات را در شبکه های VPC جداگانه خود میزبانی کنند و یک اتصال خصوصی به مصرف کنندگان خود ارائه دهند. به عنوان مثال، هنگامی که از Private Service Connect برای دسترسی به Looker استفاده می کنید، شما مصرف کننده سرویس هستید و Google تولید کننده سرویس است، همانطور که در شکل 1 مشخص شده است.

شکل 1.

145ea4672c3a3b14.png

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

شکل 2.

259493afd914f68b.png

چیزی که یاد خواهید گرفت

  • الزامات شبکه
  • یک سرویس تولید کننده Private Service Connect ایجاد کنید
  • یک نقطه پایانی Private Service Connect در Looker ایجاد کنید
  • با استفاده از یک Test Connection از Looker به پایگاه داده postgres در محل متصل شوید

آنچه شما نیاز دارید

def88091b42bfe4d.png

2. آنچه می سازید

شما یک شبکه Producer، looker-psc-demo، برای استقرار متعادل کننده بار پراکسی tcp داخلی و Hybrid NEG که به عنوان یک سرویس از طریق Private Service Connect (PSC) منتشر می شود، ایجاد خواهید کرد. برای نشان دادن یک پایگاه داده در محل، یک VPC روی prem-demo متصل به Looker-psc-Demo VPC با استفاده از HA-VPN مستقر خواهید کرد.

اقدامات زیر را برای تأیید اعتبار دسترسی به سرویس تولیدکننده انجام خواهید داد:

  • یک نقطه پایانی PSC در Looker مرتبط با پیوست سرویس تولیدکننده ایجاد کنید
  • از کنسول Looker برای تأیید اعتبار اتصال به پایگاه داده postgres در محل استفاده کنید

3. الزامات شبکه

در زیر تجزیه و تحلیل الزامات شبکه برای شبکه Producer آورده شده است، مصرف کننده در این Codelab نمونه Looker PSC است.

اجزاء

توضیحات

VPC (looker-psc-demo)

حالت سفارشی VPC

VPC (در نسخه آزمایشی اولیه)

حالت سفارشی VPC

زیرشبکه PSC NAT

بسته‌های شبکه VPC مصرف‌کننده با استفاده از NAT منبع (SNAT) ترجمه می‌شوند تا آدرس‌های IP منبع اصلی آنها به آدرس‌های IP منبع از زیرشبکه NAT در شبکه VPC تولیدکننده تبدیل شود.

زیرشبکه قانون حمل و نقل PSC

برای تخصیص یک آدرس IP برای متعادل کننده بار پراکسی TCP داخلی منطقه ای استفاده می شود

زیرشبکه PSC NEG

برای تخصیص یک آدرس IP برای گروه نقطه پایانی شبکه استفاده می شود

زیرشبکه فقط پروکسی

به هر یک از پراکسی های load balancer یک آدرس IP داخلی اختصاص داده شده است. بسته های ارسال شده از یک پروکسی به یک ماشین مجازی پشتیبان یا نقطه پایانی دارای یک آدرس IP منبع از زیر شبکه فقط پراکسی هستند.

هیبرید NEG

در محل و سایر سرویس‌های ابری مانند سایر خدمات Cloud Load Balancing رفتار می‌شود. تفاوت اصلی این است که شما از یک NEG اتصال ترکیبی برای پیکربندی نقاط پایانی این backendها استفاده می کنید. نقاط پایانی باید ترکیبات IP:پورت معتبری باشند که متعادل کننده بار شما می تواند با استفاده از محصولات اتصال ترکیبی مانند Cloud VPN یا Cloud Interconnect به آنها برسد.

خدمات Backend

یک سرویس پشتیبان به عنوان پلی بین متعادل کننده بار و منابع باطن شما عمل می کند. در آموزش، سرویس Backend با Hybrid NEG مرتبط است.

روتر ابری

  • Cloud NAT برای قابلیت های صفحه کنترل به Cloud Routers متکی است، اما برای مدیریت جلسه BGP نه.
  • روتر ابری برای BGP که برای ایجاد HA-VPN بین VPCهای psc-looker-demo و on-prem-demo ایجاد شده است استفاده می شود.

HA-VPN

HA VPN بین شبکه‌های Google Cloud VPC . در این توپولوژی، می توانید با استفاده از یک دروازه HA VPN در هر شبکه، دو شبکه Google Cloud VPC را به هم متصل کنید. شبکه های VPC می توانند در یک منطقه یا چندین منطقه باشند.

Cloud NAT

توسط VPC نسخه ی نمایشی اولیه برای خروج از اینترنت استفاده می شود

4. توپولوژی Codelab

79aeb28b38f237da.png

5. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.

6. قبل از شروع

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

7. Producer VPC Network ایجاد کنید

شبکه 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

Hybrid NEG را راه اندازی کنید

یک NEG هیبریدی ایجاد کنید و –network-endpoint-type را روی NON_GCP_PRIVATE_IP_PORT تنظیم کنید

در داخل Cloud Shell، یک NEG Hybrid ایجاد کنید که برای دسترسی به پایگاه داده on-prem استفاده می شود:

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-prem، 5432 را بررسی کند:

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 به تمام نمونه های شبکه اجازه می دهد.

در داخل 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

8. ایجاد سرویس تولید کننده

اجزای Load Balancer را ایجاد کنید

در داخل 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، Backend NEG Hybrid را به سرویس Backend اضافه کنید:

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 هدف ایجاد کنید تا درخواست‌ها را به سرویس باطن خود هدایت کند:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

در دستور زیر، یک قانون فوروارد (internal tcp proxy load balancer) ایجاد کنید.

در 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

در Cloud Console به مسیر زیر بروید:

خدمات شبکه → اتصال سرویس خصوصی → خدمات منتشر شده

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. یک اتصال نقطه پایانی PSC در Looker ایجاد کنید

در بخش بعدی، پیوست سرویس تولیدکنندگان را با Looker Core PSC از طریق استفاده از پرچم‌های –psc-service-attachment در Cloud Shell برای یک دامنه، مرتبط می‌کنید.

در داخل Cloud Shell، با به روز رسانی پارامترهای زیر برای مطابقت با محیط خود، انجمن psc را ایجاد کنید:

  • INSTANCE_NAME: نام نمونه Looker شما (هسته Google Cloud).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI هنگام ایجاد پیوست سرویس، onpremdatabase1-svc-attachment گرفته می شود
  • REGION: منطقه ای که نمونه Looker (هسته Google Cloud) شما در آن میزبانی می شود.

در داخل 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، سرویسAttachments را تأیید کنید وضعیت اتصال «پذیرفته شده است»، با نام Looker PSC Instance خود به‌روزرسانی کنید:

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

از Cloud Console می توانید اتصال PSC را تأیید کنید

در Cloud Console به مسیر زیر بروید:

Looker → Looker Instance → Details

2d4684d722d31e4b.png

993cdaf748f4c030.png

شبکه VPC on-prem را ایجاد کنید

شبکه 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، 192.168.10.4 استفاده می‌شود، رزرو کنید:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

روتر ابری را برای VPC نسخه ی نمایشی اولیه ایجاد کنید

Cloud NAT در آموزش نصب بسته نرم افزاری استفاده می شود زیرا نمونه VM آدرس IP خارجی ندارد.

در داخل Cloud Shell، Cloud Router مورد استفاده با 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

نمونه آزمایشی پایگاه داده را ایجاد کنید

یک نمونه پس از داده های پستی را ایجاد کنید که برای آزمایش و اعتبارسنجی اتصال به Looker استفاده خواهد شد.

در داخل پوسته ابر ، نمونه را ایجاد کنید:

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"

خط مشی فایروال شبکه و قوانین فایروال را ایجاد کنید

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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 به موارد VM خود متصل شود ، یک قانون فایروال ایجاد کنید که:

  • برای تمام موارد VM که می خواهید با استفاده از IAP قابل دسترسی باشید ، اعمال می شود.
  • ترافیک Ingress را از محدوده IP 35.235.240.0/20 می گذارد. این محدوده شامل تمام آدرس های IP است که IAP برای حمل و نقل TCP استفاده می کند.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

قانون فایروال زیر امکان ترافیک از محدوده زیر شبکه فقط پروکسی را به کلیه موارد موجود در شبکه می دهد.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

10. اتصال ترکیبی

در بخش زیر ، شما یک روتر ابری ایجاد خواهید کرد که به شما امکان می دهد با استفاده از پروتکل Gateway Border (BGP) ، مسیرها را بین ابر خصوصی مجازی خود (VPC) و شبکه همکار تبادل کنید.

روتر Cloud می تواند یک جلسه BGP را بر روی یک تونل Cloud VPN تنظیم کند تا شبکه های شما را وصل کند. این به طور خودکار دامنه آدرس IP زیر شبکه جدید را می آموزد و آنها را به شبکه همسالان خود اعلام می کند.

در مراحل زیر شما HA VPN را بین Looker-PSC-DEMO VPC و ON-PREM-DEMO VPC مستقر خواهید کرد تا اتصال NEG ترکیبی به onprem.database1.com را نشان دهید.

HA VPN GW را برای Looker-PSC-DEMO ایجاد کنید

هنگامی که هر دروازه ایجاد می شود ، دو آدرس IPv4 خارجی به طور خودکار اختصاص می یابد ، یکی برای هر رابط دروازه.

داخل پوسته ابر ، HA VPN GW را ایجاد کنید:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

HA VPN GW را برای پیش نمایش-دیمو ایجاد کنید

هنگامی که هر دروازه ایجاد می شود ، دو آدرس IPv4 خارجی به طور خودکار اختصاص می یابد ، یکی برای هر رابط دروازه.

داخل پوسته ابر ، HA VPN GW را ایجاد کنید:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

اعتبار ایجاد HA VPN GW

با استفاده از کنسول ، به اتصال Hybrid → VPN → Cloud VPN Gateways بروید.

7F1B504616504866.PNG

روتر ابر را برای Looker-PSC-DEMO ایجاد کنید

داخل پوسته ابر ، روتر ابر را ایجاد کنید:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

تونل های VPN را برای Looker-PSC-DEMO ایجاد کنید

شما دو تونل VPN را در هر دروازه HA VPN ایجاد خواهید کرد.

VPN Tunnel0 را ایجاد کنید

در داخل پوسته ابر ، 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

VPN Tunnel1 ایجاد کنید

در داخل پوسته ابر ، تونل 1 ایجاد کنید:

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 ایجاد خواهید کرد.

VPN Tunnel0 را ایجاد کنید

در داخل پوسته ابر ، 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

VPN Tunnel1 ایجاد کنید

در داخل پوسته ابر ، تونل 1 ایجاد کنید:

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

با استفاده از کنسول ، به تونل های Cloud VPN به اتصال Hybrid → VPN → Cloud VPN بروید.

C2FCB340A7614070.PNG

11. همسایگان BGP را ایجاد کنید

یک رابط BGP ایجاد کنید و برای Looker-PSC-DEMO نگاه کنید

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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 ایجاد کنید و برای پیش نمایش-دیمو نگاه کنید

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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 به اتصال هیبریدی → VPN بروید.

78AB590317919BF5.PNG

اعتبار سنجی Looker-PSC-DEMO آموخته شده از طریق HA VPN

اکنون که تونل های HA VPN و جلسات BGP برقرار شده اند ، رفتار پیش فرض روتر ابر تبلیغ مسیرهای زیر شبکه است. مشاهده مسیرهای آموخته شده Looker-PSC-DEM.

با استفاده از کنسول ، به شبکه VPC → شبکه های VPC → Looker-PSC-DEMO → مسیرها → منطقه → منطقه → مشاهده کنید

مشاهده Looker-PSC-DEMO پایگاه داده-زیر-زیر 192.168.10.0/28 را از On-Prem-Demo VPC آموخته است.

c11a11ed8b0491c8.png

تأیید کنید که VPC در PREM-DEMO از طریق HA VPN آموخته است

از آنجا که رفتار پیش فرض روتر ابر تبلیغ همه زیر شبکه ها است ، فقط زیر شبکه پروکسی از طریق BGP تبلیغ می شود. Hybrid NEG هنگام برقراری ارتباط با سرور onprem.database1.com از Proxy فقط به عنوان آدرس منبع استفاده می کند.

رعایت On-Prem-Demo فقط-زیرزمینی را از 10.10.10.0/24 از Looker-PSC-DEMO آموخته است.

با استفاده از کنسول ، به شبکه VPC → شبکه های VPC → On-Prem-DEMO → مسیرها → منطقه → مشاهده کنید

B0073FAED026931F.PNG

12. Looker Postgres-Database

در بخش زیر ، SSH را با استفاده از Cloud Shell در Postgres-Database VM انجام می دهید.

در داخل پوسته ابر ، یک نمونه SSH را به نمونه-داده پس از پس از آن انجام دهید **: **

 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 IP-Database Postgres-Database (192.168.10.4) و زیر شبکه فقط پروکسی (10.10.10.0/24) را در پرونده PG_HBA.CONF تحت اتصالات محلی IPv4 وارد خواهید کرد.

sudo nano /etc/postgresql/15/main/pg_hba.conf

تصویر زیر بروزرسانی تکمیل شده است: eaff2ed6d27fa7cc.png

در بخش زیر ، برای گوش دادن به همه آدرس های IP "*" در هر تصویر زیر ، از postgresql.conf استفاده کنید:

sudo nano /etc/postgresql/15/main/postgresql.conf

قبل از:

65E0B1074DC48644.PNG

بعد از:

14A0D1FA5455e23e.png

در داخل سیستم عامل ، سرویس 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.

13. پایگاه داده Postgres را ایجاد کنید

در بخش زیر ، یک پایگاه داده Postgres به نام Postgres_Looker و Schema Looker_Schema استفاده می کنید که برای اعتبار سنجی به اتصال در محل استفاده می شود.

در داخل سیستم عامل ، وارد Postgres شوید:

sudo -u postgres psql postgres

در داخل سیستم عامل ، پایگاه داده را ایجاد کنید:

create database postgres_looker;

در داخل سیستم عامل ، پایگاه داده را لیست کنید:

\l

در داخل سیستم عامل ، کاربر postgres_looker را با رمز عبور postgreslooker ایجاد کنید:

create user postgres_looker with password 'postgreslooker';

در داخل سیستم عامل ، به پایگاه داده وصل شوید:

\c postgres_looker;

در داخل سیستم عامل ، طرحواره Schema را ایجاد کرده و از سریع پوسته ابر خارج شوید.

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

14. نگاه کننده را با پس از-پس از پس از

در بخش زیر از Console Looker برای ایجاد اتصال پایگاه داده به نمونه On-Premise Postgres-Database استفاده خواهید کرد.

حرکت به Admin → Database → اتصالات → اضافه کردن اتصال را انتخاب کنید

جزئیات اتصال را در تصویر زیر پر کنید ، اتصال را انتخاب کنید

5900FDF0B698CBFC.PNG

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

4817157FD3B1277e.png

15. اعتبار سنجی نگاه کننده را تأیید کنید

در بخش زیر شما یاد می گیرید که چگونه می توانید اتصال Looker را به Database Postgres در PREM-VPC با استفاده از عمل "آزمایش" Looker و TCPDump اعتبار دهید.

از Cloud Shell ، در صورت پایان جلسه ، وارد نمایش داده های Postgres شوید.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

حرکت به داده اتصال داده Admin → Database → اتصالات → Postgres-Database → آزمون

پس از انتخاب تست ، نگاه کننده به پس از داده های پس از پس از آن وصل می شود ، همانطور که در زیر آمده است:

774f9313ece41034.png

تمیز کردن

از یک ترمینال پوسته ابری اجزای آزمایشگاه حذف

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

16. تبریک می گویم

تبریک می گویم ، شما با استفاده از کنسول Looker که توسط سرویس خصوصی Connect انجام شده است ، با موفقیت اتصال به پایگاه داده On-Premises از طریق HA-VPN را پیکربندی و تأیید کرده اید.

شما زیرساخت های تولید کننده را ایجاد کردید ، یاد گرفتید که چگونه یک NEG ترکیبی ، سرویس تولید کننده و نقطه پایانی PSC را ایجاد کنید که امکان اتصال به سرویس تولید کننده را فراهم می کند.

Cosmopup فکر می کند CodeLabs عالی است !!

c911c127bffdee57.jpeg

بعدش چی؟

برخی از این codelabs را بررسی کنید ...

خواندن و فیلم های بیشتر

اسناد مرجع

،

1. مقدمه

در این CodeLab شما یک اتصال جنوبی به یک پایگاه داده Postgres در محل را از طریق H-VPN با استفاده از یک متعادل کننده بارکسی داخلی TCP و گروه پایانی شبکه هیبریدی که از Looker PSC به عنوان یک مصرف کننده سرویس استفاده می شود ، انجام می دهید.

سرویس خصوصی Connect قابلیت شبکه Google Cloud است که به مصرف کنندگان این امکان را می دهد تا از طریق شبکه VPC خود به خدمات مدیریت شده خصوصی دسترسی پیدا کنند. به طور مشابه، به تولیدکنندگان خدمات مدیریت شده اجازه می دهد تا این خدمات را در شبکه های VPC جداگانه خود میزبانی کنند و یک اتصال خصوصی به مصرف کنندگان خود ارائه دهند. به عنوان مثال ، هنگامی که از خدمات خصوصی برای دسترسی به Access Connect استفاده می کنید ، شما مصرف کننده سرویس هستید و Google تولید کننده خدمات است ، همانطور که در شکل 1 برجسته شده است.

شکل 1.

145EA4672C3A3B14.PNG

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

شکل 2.

259493AFD914F68B.PNG

چیزی که یاد خواهید گرفت

  • الزامات شبکه
  • ایجاد یک سرویس خصوصی Connect Service Connect
  • ایجاد یک سرویس خصوصی Connect Endpoint در Looker
  • با استفاده از یک اتصال تست ، اتصال به پایگاه داده Postgres در محل را از Looker برقرار کنید

آنچه شما نیاز دارید

def88091b42bfe4d.png

2. آنچه را می سازید

شما یک شبکه تولید کننده ، Looker-PSC-DEMO را ایجاد می کنید تا بقایای بارگذاری کننده بار TCP و Hybrid NEG را به عنوان یک سرویس از طریق خدمات خصوصی (PSC) منتشر کنید. برای نشان دادن یک بانک اطلاعاتی پیش فرض ، شما یک VPC را به صورت مقدماتی متصل به Looker-PSC-DEMO VPC با استفاده از HA-VPN مستقر خواهید کرد.

شما اقدامات زیر را برای اعتبار سنجی دسترسی به سرویس تولید کننده انجام می دهید:

  • یک نقطه پایانی PSC را در Looker همراه با ضمیمه سرویس تولید کننده ایجاد کنید
  • از کنسول Looker برای انجام اعتبار سنجی اتصال به پایگاه داده Postgres در محل استفاده کنید

3. الزامات شبکه

در زیر تجزیه و تحلیل نیازهای شبکه برای شبکه تولید کننده ، مصرف کننده در این CodeLab نمونه PSC Looker است.

اجزاء

توضیحات

VPC (Looker-PSC-DEMO)

حالت سفارشی VPC

VPC (On-Prem-Demo)

حالت سفارشی VPC

PSC Nat Subnet

بسته های شبکه VPC مصرف کننده با استفاده از منبع NAT (SNAT) ترجمه می شوند تا آدرس IP منبع اصلی آنها به آدرس IP منبع از زیر شبکه NAT در شبکه VPC تولید کننده تبدیل شود.

Subnet قانون حمل و نقل PSC

برای تخصیص آدرس IP برای متعادل کننده بار پروکسی داخلی منطقه ای استفاده می شود

PSC NEG Subnet

برای تخصیص آدرس IP برای گروه پایانی شبکه استفاده می شود

پروکسی فقط زیر شبکه

به هر یک از پروکسی های متعادل کننده بار ، آدرس IP داخلی اختصاص داده می شود. بسته های ارسال شده از یک پروکسی به یک VM با پس زمینه یا نقطه انتهایی دارای یک آدرس IP منبع از زیر شبکه فقط پروکسی است.

منفی ترکیبی

در محل و سایر سرویس های ابری مانند هر پس زمینه متعادل کننده بار ابری دیگر رفتار می شود. تفاوت اصلی این است که شما برای پیکربندی نقاط پایانی این باکتری ها از اتصال ترکیبی NEG استفاده می کنید. نقاط پایانی باید IP معتبر باشد: ترکیبات پورت که متعادل کننده بار شما می تواند با استفاده از محصولات اتصال ترکیبی مانند Cloud VPN یا Cloud Interconnect به آن برسد.

سرویس پس زمینه

یک سرویس باطن به عنوان پلی بین تعادل بار و منابع باطن شما عمل می کند. در آموزش ، سرویس پس زمینه با NEG ترکیبی همراه است.

روتر ابری

  • Cloud Nat برای کنترل قابلیت های هواپیما به روترهای ابر متکی است ، اما برای مدیریت جلسه BGP نیست.
  • روتر ابر برای BGP ایجاد شده برای تأسیس HA-VPN بین PSC-Looker-Demo و VPC های PREM-DEMO استفاده می شود.

HA-VPN

HA VPN بین شبکه های Google Cloud VPC . در این توپولوژی می توانید با استفاده از یک دروازه HA VPN در هر شبکه ، دو شبکه Google Cloud VPC را وصل کنید. شبکه های VPC می توانند در همان منطقه یا چندین منطقه باشند.

ابر نخی

مورد استفاده توسط پیش نمایش VPC برای خروجی اینترنت

4. توپولوژی Codelab

79aeb28b38f237da.png

5. تنظیم و الزامات

تنظیم محیط خود گام

  1. وارد کنسول Google Cloud شوید و یک پروژه جدید ایجاد کنید یا از یک مورد موجود استفاده کنید. اگر قبلاً یک حساب کاربری Gmail یا Google ندارید ، باید یکی را ایجاد کنید .

fbef9caa1602edd0.png

A99B7ACE416376C4.PNG

5e3ff691252acf41.png

  • نام پروژه نام نمایشگر شرکت کنندگان این پروژه است. این یک رشته کاراکتر است که توسط Google API استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه های Google Cloud بی نظیر است و تغییر ناپذیر است (پس از تنظیم آن قابل تغییر نیست). کنسول ابر یک رشته منحصر به فرد را ایجاد می کند. معمولاً اهمیتی نمی دهید که چیست. در اکثر CodeLabs ، باید شناسه پروژه خود را (که به طور معمول به عنوان PROJECT_ID مشخص می شود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید ، ممکن است یک تصادفی دیگر ایجاد کنید. از طرف دیگر ، می توانید خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. بعد از این مرحله قابل تغییر نیست و برای مدت زمان پروژه باقی می ماند.
  • برای اطلاعات شما ، یک مقدار سوم ، یک شماره پروژه وجود دارد که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بدانید.
  1. در مرحله بعد ، شما باید صورتحساب را در کنسول ابری برای استفاده از منابع ابری/API فعال کنید . در صورت وجود هر چیزی از طریق این CodeLab هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از صدور صورتحساب فراتر از این آموزش ، می توانید منابعی را که ایجاد کرده اید حذف کرده یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری USD هستند.

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

در حالی که Google Cloud می تواند از راه دور از لپ تاپ شما کار کند ، در این CodeLab شما از Google Cloud Shell استفاده می کنید ، یک محیط خط فرمان که در ابر اجرا می شود.

از کنسول Google Cloud ، روی نماد Cloud Shell در نوار ابزار بالا راست کلیک کنید:

55EFC1AA7A4D3AD.PNG

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

7FFE5CBB04455448.PNG

این دستگاه مجازی با تمام ابزارهای توسعه مورد نیاز شما بارگیری شده است. این یک دایرکتوری خانگی مداوم 5 گیگابایتی را ارائه می دهد ، و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی تقویت می کند. تمام کارهای شما در این CodeLab را می توان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.

6 قبل از شروع کار

API را فعال کنید

در داخل پوسته ابر ، اطمینان حاصل کنید که شناسه پروژه شما تنظیم شده است:

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

7. ایجاد شبکه VPC تولید کننده

شبکه VPC

در داخل پوسته ابر ، موارد زیر را انجام دهید:

gcloud compute networks create looker-psc-demo --subnet-mode custom

زیر شبکه ایجاد کنید

زیر شبکه PSC به منظور ترجمه آدرس شبکه با پیوست سرویس PSC همراه خواهد بود.

در داخل پوسته ابر ، زیر شبکه 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

در داخل پوسته ابر ، قانون حمل و نقل تولید کننده را ایجاد کنید:

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

در داخل پوسته ابر ، تولید کننده منطقه ای را فقط زیر شبکه ایجاد کنید:

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 Load Balancer را رزرو کنید

در داخل پوسته ابر ، یک آدرس IP داخلی را برای متعادل کننده بار رزرو کنید:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

در داخل پوسته ابر ، آدرس 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 HYBRID را تنظیم کنید

یک منفی ترکیبی ایجاد کنید ، و نوع –network-endpoint را روی non_gcp_private_ip_port تنظیم کنید

در داخل پوسته ابر ، یک منفی ترکیبی ایجاد کنید که برای دسترسی به پایگاه داده On Preem استفاده می شود:

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 به روز کنید: پورت پایگاه داده On Preem ، 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

یک بررسی سلامت منطقه ای ایجاد کنید

در داخل پوسته ابر ، یک بررسی بهداشتی ایجاد کنید که پورت پایگاه داده در پیش فرض ، 5432 را بررسی کند:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

خط مشی فایروال شبکه و قوانین فایروال را ایجاد کنید

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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 را به کلیه موارد موجود در شبکه امکان پذیر می کند.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

8. ایجاد سرویس تولید کننده

اجزای متعادل کننده بار را ایجاد کنید

در داخل پوسته ابر ، یک سرویس باطن ایجاد کنید ::

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

در داخل پوسته ابر ، Backend 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 هدف را برای هدایت درخواست ها به سرویس باطن خود ایجاد کنید:

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

ایجاد ضمیمه خدمات

داخل پوسته ابر ، ایجاد ضمیمه سرویس ، 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: پروژه ها/<-your-project-id>/مناطق/<ty-region>/serviceattachments/onpremdatabase1-svc-attachment

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

در کنسول ابر ، به:

خدمات شبکه → خدمات خصوصی اتصال → خدمات منتشر شده

9F436251A3AE2CC7.PNG

4C3E8E73D40D1238.png

9. یک اتصال نقطه پایانی PSC را در Looker ایجاد کنید

در بخش زیر ، شما پیوست خدمات تولید کنندگان را با Flags PSC استفاده از Looker Core PSC از طریق پرچم های استفاده از خدمات-PSC-Service در پوسته ابر برای یک دامنه واحد مرتبط خواهید کرد.

در داخل Cloud Shell ، با به روزرسانی پارامترهای زیر ، انجمن PSC را ایجاد کنید تا با محیط خود مطابقت داشته باشید:

  • sustance_name: نام Looker (Google Cloud Core).
  • DOMAIN_1: onprem.database1.com
  • service_attachment_1: URI در هنگام ایجاد دلبستگی سرویس ، onpremdatabase1-svc-attachment اسیر شد
  • منطقه: منطقه ای که در آن نمونه Looker (Google Cloud Core) میزبان است.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

در داخل پوسته ابری ، اعتبارسنجی را تأیید کنید.

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 را در کنسول ابر تأیید کنید

از کنسول ابر می توانید اتصال PSC را تأیید کنید

در کنسول ابر ، به:

Looker → نمونه نگاه کننده → جزئیات

2d4684d722d31e4b.png

993CDAF748F4C030.PNG

شبکه VPC On-Prem را ایجاد کنید

شبکه VPC

در داخل پوسته ابر ، موارد زیر را انجام دهید:

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

زیر شبکه پایگاه داده PostgreSQL را ایجاد کنید

در داخل پوسته ابر ، موارد زیر را انجام دهید:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

در داخل پوسته ابر ، یک آدرس داخلی IPv4 را رزرو کنید ، که برای onprem.database1.com ، 192.168.10.4 استفاده می شود:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

روتر ابری را برای VPC On-Prem-Demo ایجاد کنید

Cloud Nat در آموزش نصب بسته نرم افزاری استفاده می شود زیرا نمونه VM آدرس IP خارجی ندارد.

در داخل پوسته ابر ، روتر ابر را که با Cloud Nat & HA-VPN استفاده می شود ، ایجاد کنید:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

در داخل پوسته ابر ، دروازه 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

نمونه آزمون پایگاه داده را ایجاد کنید

یک نمونه پس از داده های پستی را ایجاد کنید که برای آزمایش و اعتبارسنجی اتصال به Looker استفاده خواهد شد.

در داخل پوسته ابر ، نمونه را ایجاد کنید:

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"

خط مشی فایروال شبکه و قوانین فایروال را ایجاد کنید

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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 به موارد VM خود متصل شود ، یک قانون فایروال ایجاد کنید که:

  • برای تمام موارد VM که می خواهید با استفاده از IAP قابل دسترسی باشید ، اعمال می شود.
  • ترافیک Ingress را از محدوده IP 35.235.240.0/20 می گذارد. این محدوده شامل تمام آدرس های IP است که IAP برای حمل و نقل TCP استفاده می کند.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

قانون فایروال زیر امکان ترافیک از محدوده زیر شبکه فقط پروکسی را به کلیه موارد موجود در شبکه می دهد.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

10. اتصال ترکیبی

در بخش زیر ، شما یک روتر ابری ایجاد خواهید کرد که به شما امکان می دهد با استفاده از پروتکل Gateway Border (BGP) ، مسیرها را بین ابر خصوصی مجازی خود (VPC) و شبکه همکار تبادل کنید.

روتر Cloud می تواند یک جلسه BGP را بر روی یک تونل Cloud VPN تنظیم کند تا شبکه های شما را وصل کند. این به طور خودکار دامنه آدرس IP زیر شبکه جدید را می آموزد و آنها را به شبکه همسالان خود اعلام می کند.

در مراحل زیر شما HA VPN را بین Looker-PSC-DEMO VPC و ON-PREM-DEMO VPC مستقر خواهید کرد تا اتصال NEG ترکیبی به onprem.database1.com را نشان دهید.

HA VPN GW را برای Looker-PSC-DEMO ایجاد کنید

هنگامی که هر دروازه ایجاد می شود ، دو آدرس IPv4 خارجی به طور خودکار اختصاص می یابد ، یکی برای هر رابط دروازه.

داخل پوسته ابر ، HA VPN GW را ایجاد کنید:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

HA VPN GW را برای پیش نمایش-دیمو ایجاد کنید

هنگامی که هر دروازه ایجاد می شود ، دو آدرس IPv4 خارجی به طور خودکار اختصاص می یابد ، یکی برای هر رابط دروازه.

داخل پوسته ابر ، HA VPN GW را ایجاد کنید:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

اعتبار ایجاد HA VPN GW

با استفاده از کنسول ، به اتصال Hybrid → VPN → Cloud VPN Gateways بروید.

7F1B504616504866.PNG

روتر ابر را برای Looker-PSC-DEMO ایجاد کنید

داخل پوسته ابر ، روتر ابر را ایجاد کنید:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

تونل های VPN را برای Looker-PSC-DEMO ایجاد کنید

شما دو تونل VPN را در هر دروازه HA VPN ایجاد خواهید کرد.

VPN Tunnel0 را ایجاد کنید

در داخل پوسته ابر ، 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

VPN Tunnel1 ایجاد کنید

در داخل پوسته ابر ، تونل 1 ایجاد کنید:

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 ایجاد خواهید کرد.

VPN Tunnel0 را ایجاد کنید

در داخل پوسته ابر ، 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

VPN Tunnel1 ایجاد کنید

در داخل پوسته ابر ، تونل 1 ایجاد کنید:

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

با استفاده از کنسول ، به تونل های Cloud VPN به اتصال Hybrid → VPN → Cloud VPN بروید.

C2FCB340A7614070.PNG

11. همسایگان BGP را ایجاد کنید

یک رابط BGP ایجاد کنید و برای Looker-PSC-DEMO نگاه کنید

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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 ایجاد کنید و برای پیش نمایش-دیمو نگاه کنید

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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

در داخل پوسته ابر ، رابط 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

در داخل پوسته ابر ، 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 به اتصال هیبریدی → VPN بروید.

78AB590317919BF5.PNG

اعتبار سنجی Looker-PSC-DEMO آموخته شده از طریق HA VPN

اکنون که تونل های HA VPN و جلسات BGP برقرار شده اند ، رفتار پیش فرض روتر ابر تبلیغ مسیرهای زیر شبکه است. مشاهده مسیرهای آموخته شده Looker-PSC-DEM.

با استفاده از کنسول ، به شبکه VPC → شبکه های VPC → Looker-PSC-DEMO → مسیرها → منطقه → منطقه → مشاهده کنید

مشاهده Looker-PSC-DEMO پایگاه داده-زیر-زیر 192.168.10.0/28 را از On-Prem-Demo VPC آموخته است.

c11a11ed8b0491c8.png

تأیید کنید که VPC در PREM-DEMO از طریق HA VPN آموخته است

از آنجا که رفتار پیش فرض روتر ابر تبلیغ همه زیر شبکه ها است ، فقط زیر شبکه پروکسی از طریق BGP تبلیغ می شود. Hybrid NEG هنگام برقراری ارتباط با سرور onprem.database1.com از Proxy فقط به عنوان آدرس منبع استفاده می کند.

رعایت On-Prem-Demo فقط-زیرزمینی را از 10.10.10.0/24 از Looker-PSC-DEMO آموخته است.

با استفاده از کنسول ، به شبکه VPC → شبکه های VPC → On-Prem-DEMO → مسیرها → منطقه → مشاهده کنید

B0073FAED026931F.PNG

12. Looker Postgres-Database

در بخش زیر ، SSH را با استفاده از Cloud Shell در Postgres-Database VM انجام می دهید.

در داخل پوسته ابر ، یک نمونه SSH را به نمونه-داده پس از پس از آن انجام دهید **: **

 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 IP-Database Postgres-Database (192.168.10.4) و زیر شبکه فقط پروکسی (10.10.10.0/24) را در پرونده PG_HBA.CONF تحت اتصالات محلی IPv4 وارد خواهید کرد.

sudo nano /etc/postgresql/15/main/pg_hba.conf

تصویر زیر بروزرسانی تکمیل شده است: eaff2ed6d27fa7cc.png

در بخش زیر ، برای گوش دادن به همه آدرس های IP "*" در هر تصویر زیر ، از postgresql.conf استفاده کنید:

sudo nano /etc/postgresql/15/main/postgresql.conf

قبل از:

65E0B1074DC48644.PNG

بعد از:

14A0D1FA5455e23e.png

در داخل سیستم عامل ، سرویس 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.

13. پایگاه داده Postgres را ایجاد کنید

در بخش زیر ، یک پایگاه داده Postgres به نام Postgres_Looker و Schema Looker_Schema استفاده می کنید که برای اعتبار سنجی به اتصال در محل استفاده می شود.

در داخل سیستم عامل ، وارد Postgres شوید:

sudo -u postgres psql postgres

در داخل سیستم عامل ، پایگاه داده را ایجاد کنید:

create database postgres_looker;

در داخل سیستم عامل ، پایگاه داده را لیست کنید:

\l

در داخل سیستم عامل ، کاربر postgres_looker را با رمز عبور postgreslooker ایجاد کنید:

create user postgres_looker with password 'postgreslooker';

در داخل سیستم عامل ، به پایگاه داده وصل شوید:

\c postgres_looker;

در داخل سیستم عامل ، طرحواره Schema را ایجاد کرده و از سریع پوسته ابر خارج شوید.

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

14. نگاه کننده را با پس از-پس از پس از

در بخش زیر از Console Looker برای ایجاد اتصال پایگاه داده به نمونه On-Premise Postgres-Database استفاده خواهید کرد.

حرکت به Admin → Database → اتصالات → اضافه کردن اتصال را انتخاب کنید

جزئیات اتصال را در تصویر زیر پر کنید ، اتصال را انتخاب کنید

5900FDF0B698CBFC.PNG

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

4817157FD3B1277e.png

15. اعتبار سنجی نگاه کننده را تأیید کنید

در بخش زیر شما یاد می گیرید که چگونه می توانید اتصال Looker را به Database Postgres در PREM-VPC با استفاده از عمل "آزمایش" Looker و TCPDump اعتبار دهید.

از Cloud Shell ، در صورت پایان جلسه ، وارد نمایش داده های Postgres شوید.

در داخل پوسته ابر ، موارد زیر را انجام دهید:

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

حرکت به داده اتصال داده Admin → Database → اتصالات → Postgres-Database → آزمون

پس از انتخاب تست ، نگاه کننده به پس از داده های پس از پس از آن وصل می شود ، همانطور که در زیر آمده است:

774f9313ece41034.png

تمیز کردن

از یک ترمینال پوسته ابری اجزای آزمایشگاه حذف

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

16. تبریک می گویم

تبریک می گویم ، شما با استفاده از کنسول Looker که توسط سرویس خصوصی Connect انجام شده است ، با موفقیت اتصال به پایگاه داده On-Premises از طریق HA-VPN را پیکربندی و تأیید کرده اید.

شما زیرساخت های تولید کننده را ایجاد کردید ، یاد گرفتید که چگونه یک NEG ترکیبی ، سرویس تولید کننده و نقطه پایانی Looker PSC ایجاد کنید که امکان اتصال به سرویس تولید کننده را فراهم می کند.

Cosmopup فکر می کند CodeLabs عالی است !!

c911c127bffdee57.jpeg

بعدش چی؟

برخی از این codelabs را بررسی کنید ...

خواندن و فیلم های بیشتر

اسناد مرجع

،

1. مقدمه

در این CodeLab شما یک اتصال جنوبی به یک پایگاه داده Postgres در محل را از طریق H-VPN با استفاده از یک متعادل کننده بارکسی داخلی TCP و گروه پایانی شبکه هیبریدی که از Looker PSC به عنوان یک مصرف کننده سرویس استفاده می شود ، انجام می دهید.

سرویس خصوصی Connect قابلیت شبکه Google Cloud است که به مصرف کنندگان این امکان را می دهد تا از طریق شبکه VPC خود به خدمات مدیریت شده خصوصی دسترسی پیدا کنند. به طور مشابه، به تولیدکنندگان خدمات مدیریت شده اجازه می دهد تا این خدمات را در شبکه های VPC جداگانه خود میزبانی کنند و یک اتصال خصوصی به مصرف کنندگان خود ارائه دهند. به عنوان مثال ، هنگامی که از خدمات خصوصی برای دسترسی به Access Connect استفاده می کنید ، شما مصرف کننده سرویس هستید و Google تولید کننده خدمات است ، همانطور که در شکل 1 برجسته شده است.

شکل 1.

145EA4672C3A3B14.PNG

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

شکل 2.

259493AFD914F68B.PNG

چیزی که یاد خواهید گرفت

  • الزامات شبکه
  • ایجاد یک سرویس خصوصی Connect Service Connect
  • ایجاد یک سرویس خصوصی Connect Endpoint در Looker
  • با استفاده از یک اتصال تست ، اتصال به پایگاه داده Postgres در محل را از Looker برقرار کنید

آنچه شما نیاز دارید

def88091b42bfe4d.png

2. آنچه را می سازید

شما یک شبکه تولید کننده ، Looker-PSC-DEMO را ایجاد می کنید تا بقایای بارگذاری کننده بار TCP و Hybrid NEG را به عنوان یک سرویس از طریق خدمات خصوصی (PSC) منتشر کنید. برای نشان دادن یک بانک اطلاعاتی پیش فرض ، شما یک VPC را به صورت مقدماتی متصل به Looker-PSC-DEMO VPC با استفاده از HA-VPN مستقر خواهید کرد.

شما اقدامات زیر را برای اعتبار سنجی دسترسی به سرویس تولید کننده انجام می دهید:

  • یک نقطه پایانی PSC را در Looker همراه با ضمیمه سرویس تولید کننده ایجاد کنید
  • از کنسول Looker برای انجام اعتبار سنجی اتصال به پایگاه داده Postgres در محل استفاده کنید

3. الزامات شبکه

در زیر تجزیه و تحلیل نیازهای شبکه برای شبکه تولید کننده ، مصرف کننده در این CodeLab نمونه PSC Looker است.

اجزاء

توضیحات

VPC (Looker-PSC-DEMO)

حالت سفارشی VPC

VPC (On-Prem-Demo)

حالت سفارشی VPC

PSC Nat Subnet

بسته های شبکه VPC مصرف کننده با استفاده از منبع NAT (SNAT) ترجمه می شوند تا آدرس IP منبع اصلی آنها به آدرس IP منبع از زیر شبکه NAT در شبکه VPC تولید کننده تبدیل شود.

Subnet قانون حمل و نقل PSC

Used to allocate an IP address for the Regional Internal TCP Proxy Load Balancer

PSC NEG Subnet

Used to allocate an IP address for the Network Endpoint Group

Proxy Only Subnet

Each of the load balancer's proxies is assigned an internal IP address. Packets sent from a proxy to a backend VM or endpoint has a source IP address from the proxy-only subnet.

Hybrid NEG

On-premises and other cloud services are treated like any other Cloud Load Balancing backend. The key difference is that you use a hybrid connectivity NEG to configure the endpoints of these backends. The endpoints must be valid IP:port combinations that your load balancer can reach by using hybrid connectivity products such as Cloud VPN or Cloud Interconnect.

Backend Service

A backend service acts as a bridge between your load balancer and your backend resources. In the tutorial, the backend service is associated with the Hybrid NEG.

Cloud Router

  • Cloud NAT relies on Cloud Routers for control plane capabilities, but not for BGP session management.
  • Cloud router is used for BGP established for HA-VPN establishment between the psc-looker-demo and on-prem-demo VPCs.

HA-VPN

HA VPN between Google Cloud VPC networks . In this topology, you can connect two Google Cloud VPC networks by using an HA VPN gateway in each network. The VPC networks can be in the same region or multiple regions.

Cloud NAT

Used by the on-prem-demo VPC for internet egress

4. Codelab topology

79aeb28b38f237da.png

5. Setup and Requirements

Self-paced environment setup

  1. Sign-in to the Google Cloud Console and create a new project or reuse an existing one. If you don't already have a Gmail or Google Workspace account, you must create one .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • The Project name is the display name for this project's participants. It is a character string not used by Google APIs. You can always update it.
  • The Project ID is unique across all Google Cloud projects and is immutable (cannot be changed after it has been set). The Cloud Console auto-generates a unique string; usually you don't care what it is. In most codelabs, you'll need to reference your Project ID (typically identified as PROJECT_ID ). If you don't like the generated ID, you might generate another random one. Alternatively, you can try your own, and see if it's available. It can't be changed after this step and remains for the duration of the project.
  • For your information, there is a third value, a Project Number , which some APIs use. Learn more about all three of these values in the documentation .
  1. Next, you'll need to enable billing in the Cloud Console to use Cloud resources/APIs. Running through this codelab won't cost much, if anything at all. To shut down resources to avoid incurring billing beyond this tutorial, you can delete the resources you created or delete the project. New Google Cloud users are eligible for the $300 USD Free Trial program.

Start Cloud Shell

While Google Cloud can be operated remotely from your laptop, in this codelab you will be using Google Cloud Shell , a command line environment running in the Cloud.

From the Google Cloud Console , click the Cloud Shell icon on the top right toolbar:

55efc1aaa7a4d3ad.png

It should only take a few moments to provision and connect to the environment. When it is finished, you should see something like this:

7ffe5cbb04455448.png

This virtual machine is loaded with all the development tools you'll need. It offers a persistent 5GB home directory, and runs on Google Cloud, greatly enhancing network performance and authentication. All of your work in this codelab can be done within a browser. You do not need to install anything.

6. Before you begin

Enable APIs

Inside Cloud Shell, make sure that your project id is set up:

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

Enable all necessary services:

gcloud services enable compute.googleapis.com

7. Create Producer VPC Network

VPC Network

Inside Cloud Shell, perform the following:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Create Subnets

The PSC subnet will be associated with the PSC Service Attachment for the purpose of Network Address Translation.

Inside Cloud Shell, create the PSC NAT Subnet:

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

Inside Cloud Shell, create the producer forwarding rule subnet:

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

Inside Cloud Shell, create the producer regional proxy only subnet:

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

Reserve the load balancer's IP address

Inside Cloud Shell, reserve an internal IP address for the load balancer:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

Inside Cloud Shell, view the reserved IP Address.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Example output:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Set up the Hybrid NEG

Create a Hybrid NEG, and set the –network-endpoint-type to NON_GCP_PRIVATE_IP_PORT

Inside Cloud Shell, create a Hybrid NEG used to access the on-prem database:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

Inside Cloud Shell, update the Hybrid NEG with the IP:Port of the on-prem database, 192.168.10.4 & Port 5432, generated in a later step in the tutorial:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Create a regional health check

Inside Cloud Shell, create a health-check that probes the on-prem database port, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Create Network Firewall Policy and Firewall Rules

Inside Cloud Shell, perform the following:

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

The following firewall rule allows traffic from the PSC NAT Subnet range to all instances in the network.

Inside Cloud Shell, perform the following:

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

8. Create Producer Service

Create Load Balancer Components

Inside Cloud Shell, create a backend service::

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

Inside Cloud Shell, add the Hybrid NEG backend to the backend service:

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

In Cloud Shell, Create a target TCP proxy to route requests to your backend service:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

In the following syntax, create a forwarding rule (internal tcp proxy load balancer).

In Cloud Shell, perform the following:

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

Create Service Attachment

Inside Cloud Shell, create the Service Attachment, 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

Next, obtain and note the Service Attachment listed in the selfLink URI starting with projects to configure the PSC endpoint in Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

Inside Cloud Shell, perform the following:

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Example Expected Output:

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

In Cloud Console, navigate to:

Network Services → Private Service Connect → Published Services

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Establish a PSC Endpoint Connection in Looker

In the following section, you will associate the Producers Service Attachment with Looker Core PSC through the use –psc-service-attachment flags in Cloud Shell for a single domain.

Inside Cloud Shell, create the psc association by updating the following parameters to match your environment:

  • INSTANCE_NAME: The name of your Looker (Google Cloud core) instance.
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI captured when creating the Service Attachment, onpremdatabase1-svc-attachment
  • REGION: The region in which your Looker (Google Cloud core) instance is hosted.

Inside Cloud Shell, perform the following:

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

Inside Cloud Shell, validate the serviceAttachments connectionStatus is "ACCEPTED", update with your Looker PSC Instance name:

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"
}

Validate the PSC endpoint in Cloud Console

From Cloud Console you can validate the PSC Connection

In Cloud Console, navigate to:

Looker → Looker Instance → Details

2d4684d722d31e4b.png

993cdaf748f4c030.png

Create the on-prem VPC Network

VPC Network

Inside Cloud Shell, perform the following:

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Create the Postgresql database subnet

Inside Cloud Shell, perform the following:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Inside Cloud Shell, reserve an internal IPv4 address, used for onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Create the Cloud Router for the on-prem-demo VPC

Cloud NAT is used in the tutorial for software package installation because the VM instance does not have an external IP address.

Inside Cloud Shell, create the Cloud Router used with Cloud NAT & HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Inside Cloud Shell, create the NAT gateway:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Create the database test instance

Create a postgres-database instance that will be used to test and validate connectivity to Looker.

Inside Cloud Shell, create the 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"

Create Network Firewall Policy and Firewall Rules

Inside Cloud Shell, perform the following:

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

To allow IAP to connect to your VM instances, create a firewall rule that:

  • Applies to all VM instances that you want to be accessible by using IAP.
  • Allows ingress traffic from the IP range 35.235.240.0/20. This range contains all IP addresses that IAP uses for TCP forwarding.

Inside Cloud Shell, perform the following:

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

The following firewall rule allows traffic from the proxy-only subnet range to all instances in the network.

Inside Cloud Shell, perform the following:

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

10. Hybrid connectivity

In the following section, you will create a Cloud Router that enables you to dynamically exchange routes between your Virtual Private Cloud (VPC) and peer network by using Border Gateway Protocol (BGP) .

Cloud Router can set up a BGP session over a Cloud VPN tunnel to connect your networks. It automatically learns new subnet IP address ranges and announces them to your peer network.

In the following steps you will deploy HA VPN between the looker-psc-demo VPC and on-prem-demo VPC to demonstrate Hybrid NEG connectivity to onprem.database1.com.

Create the HA VPN GW for the looker-psc-demo

When each gateway is created, two external IPv4 addresses are automatically allocated, one for each gateway interface.

Inside Cloud Shell, create the HA VPN GW:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Create the HA VPN GW for the on-prem-demo

When each gateway is created, two external IPv4 addresses are automatically allocated, one for each gateway interface.

Inside Cloud Shell, create the HA VPN GW:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

Validate HA VPN GW creation

Using the console, navigate to HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS.

7f1b504616504866.png

Create the Cloud Router for the looker-psc-demo

Inside Cloud Shell, create the Cloud Router:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Create the VPN tunnels for looker-psc-demo

You will create two VPN tunnels on each HA VPN gateway.

Create VPN tunnel0

Inside Cloud Shell, create 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

Create VPN tunnel1

Inside Cloud Shell, create tunnel1:

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

Create the VPN tunnels for on-prem-demo

You will create two VPN tunnels on each HA VPN gateway.

Create VPN tunnel0

Inside Cloud Shell, create 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

Create VPN tunnel1

Inside Cloud Shell, create tunnel1:

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

Validate vpn tunnel creation

Using the console, navigate to HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS.

c2fcb340a7614070.png

11. Establish BGP neighbors

Create a BGP interface and peering for looker-psc-demo

Inside Cloud Shell, create the BGP interface:

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

Inside Cloud Shell, create the BGP peer:

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

Inside Cloud Shell, create the BGP interface:

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

Inside Cloud Shell, create the BGP peer:

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

Create a BGP interface and peering for on-prem-demo

Inside Cloud Shell, create the BGP interface:

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

Inside Cloud Shell, create the BGP peer:

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

Inside Cloud Shell, create the BGP interface:

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

Inside Cloud Shell, create the BGP peer:

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

Navigate to Hybrid CONNECTIVITY → VPN to view the VPN tunnel details.

78ab590317919bf5.png

Validate looker-psc-demo learned routes over HA VPN

Now that the HA VPN tunnels and BGP sessions are established, the default behavior of the Cloud Router is to advertise subnet routes. View looker-psc-demo learned routes.

Using the console, navigate to VPC network → VPC networks → looker-psc-demo → ROUTES → REGION → VIEW

Observe looker-psc-demo has learned database-subnet 192.168.10.0/28 from the on-prem-demo VPC.

c11a11ed8b0491c8.png

Validate that on-prem-demo VPC learned routes over HA VPN

Since the default behavior of the Cloud Router is to advertise all subnets, the proxy only subnet is advertised over BGP. Hybrid NEG will use the proxy only subnet as the source address when communicating with server onprem.database1.com.

Observe on-prem-demo has learned proxy-only-subnet 10.10.10.0/24 from looker-psc-demo.

Using the console, navigate to VPC network → VPC networks → on-prem-demo → ROUTES → REGION → VIEW

b0073faed026931f.png

12. Looker postgres-database creation

In the following section, you will perform a SSH into the postgres-database vm using Cloud Shell.

Inside Cloud Shell, perform a ssh to postgres-database instance**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Inside the OS, identify and note the IP address (ens4) of the postgres-database instance:

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

Inside the OS, log into postgresql:

sudo -u postgres psql postgres

Inside the OS, enter the password prompt:

\password postgres

Inside the OS, set the password to postgres (enter the same password twice):

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: 

Inside the OS, exit postgres:

\q

مثال:

postgres=# \q
user@postgres-database:~$ 

In the following section, you will insert your postgres-database instance IP (192.168.10.4) and proxy-only subnet (10.10.10.0/24) in the pg_hba.conf file under the IPv4 local connections.

sudo nano /etc/postgresql/15/main/pg_hba.conf

The screenshot below is the completed update: eaff2ed6d27fa7cc.png

In the following section, uncomment the postgresql.conf to listen for all '*' IP addresses per the screenshot below:

sudo nano /etc/postgresql/15/main/postgresql.conf

قبل از:

65e0b1074dc48644.png

بعد از:

14a0d1fa5455e23e.png

Inside the OS, restart the postgresql service:

sudo service postgresql restart

Inside the OS, validate the postgresql status as active:

sudo service postgresql status

مثال:

Inside the OS, validate the postgresql status as active:

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.

13. Create the postgres database

In the following section, you will create a postgres database named postgres_looker and schema looker_schema used to validate looker to on-premises connectivity.

Inside the OS, log into postgres:

sudo -u postgres psql postgres

Inside the OS, create the database:

create database postgres_looker;

Inside the OS, list the database:

\l

Inside the OS, create the user postgres_looker with the password postgreslooker:

create user postgres_looker with password 'postgreslooker';

Inside the OS, connect to the database:

\c postgres_looker;

Inside the OS, create the schema looker-schema and exit to the Cloud Shell prompt.

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

14. Integrate Looker with the Postgres postgres-database

In the following section you will use Looker Console to create a Database connection to the on-premises postgres-database instance.

Navigate to ADMIN → DATABASE → CONNECTIONS → Select ADD CONNECTION

Fill out the connection details per the screenshot below, select CONNECT

5900fdf0b698cbfc.png

The connection is now configured

4817157fd3b1277e.png

15. Validate Looker connectivity

In the following section you will learn how to validate Looker connectivity to the postgres-database in the on-prem-vpc using the Looker 'test' action and TCPDUMP.

From Cloud Shell, log into the postgres-database if the session has timed out.

Inside Cloud Shell, perform the following:

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"

From the OS, create a TCPDUMP filter with the proxy-only subnet 10.10.10.0/24

sudo tcpdump -i any net 10.10.10.0/24 -nn

Navigate to the Data Connection ADMIN → DATABASE → CONNECTIONS → postgres-database → Test

Once Test is selected Looker will connect to the postgres-database as indicated below:

774f9313ece41034.png

Clean up

From a single Cloud Shell terminal delete lab components

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

16. Congratulations

Congratulations, you've successfully configured and validated connectivity to the on-premises database over HA-VPN using Looker Console powered by Private Service Connect.

You created the producer infrastructure, learned how to create a Hybrid NEG, Producer Service and Looker PSC endpoint that allowed connectivity to the Producer service.

Cosmopup thinks codelabs are awesome!!

c911c127bffdee57.jpeg

بعدش چی؟

Check out some of these codelabs...

Further reading & Videos

Reference docs