۱. مقدمه
Looker (هسته Google Cloud) فراهمسازی، پیکربندی و مدیریت ساده و روان یک نمونه Looker را از کنسول Google Cloud فراهم میکند. برخی از وظایف مدیریت نمونه نیز ممکن است از طریق کنسول انجام شود.
سه پیکربندی شبکه برای نمونههای Looker (هسته Google Cloud) وجود دارد:
- عمومی: اتصال شبکه از یک آدرس IP خارجی و قابل دسترسی از طریق اینترنت استفاده میکند.
- خصوصی: اتصال شبکه از یک آدرس IP داخلی ابر خصوصی مجازی (VPC) میزبانی شده توسط گوگل استفاده میکند.
- عمومی و خصوصی: اتصال شبکه از هر دو آدرس IP عمومی و خصوصی استفاده میکند، که در آن ترافیک ورودی از طریق IP عمومی و ترافیک خروجی از طریق IP خصوصی هدایت میشود.
در این آموزش، شما یک شبکه خصوصی جامع end-to-end را برای پشتیبانی از اتصال Looker به یک vpc داخلی از طریق HA VPN مستقر خواهید کرد که میتواند برای برآورده کردن نیازهای شما برای اتصال چند ابری و داخلی، تکثیر شود.
Looker (هسته Google Cloud) از IP خصوصی برای مواردی که معیارهای زیر را داشته باشند، پشتیبانی میکند:
- نسخههای نمونه باید Enterprise یا Embed باشند.
آنچه خواهید ساخت
در این آموزش، شما قصد دارید یک شبکه خصوصی جامع Looker را در یک VPC مستقل که دارای اتصال ترکیبی به چند ابر و در محل است، پیادهسازی کنید.
شما یک شبکه VPC به نام on-prem-vpc راهاندازی خواهید کرد تا یک محیط داخلی را نشان دهد. برای استقرار شما، on-prem-vpc وجود نخواهد داشت، در عوض از شبکه ترکیبی به مرکز داده داخلی یا ارائه دهنده ابری شما استفاده میشود.
در زیر مراحل اصلی آموزش آمده است
- ایجاد یک VPC مستقل در us-central1
- اختصاص یک زیرشبکه IP به دسترسی به سرویس خصوصی
- نمونه Looker را در VPC مستقل مستقر کنید
- ایجاد شبکهی ترکیبی و On-Prem-VPC
- تبلیغ و اعتبارسنجی محدوده IP Looker از طریق BGP
- ادغام و اعتبارسنجی ارتباطات داده Looker و Postgresql
شکل ۱

آنچه یاد خواهید گرفت
- نحوه ایجاد یک VPC و شبکه ترکیبی مرتبط
- نحوهی پیادهسازی Looker در یک vpc مستقل
- نحوه ایجاد یک شبکه ترکیبی on-prem-vpc و مرتبط با آن
- اتصال vpc داخلی به vps تحلیلی از طریق HA VPN
- نحوه تبلیغ زیرشبکههای Looker روی شبکههای ترکیبی
- نحوه نظارت بر زیرساخت شبکه ترکیبی
- نحوه ادغام پایگاه داده Postgresql با Looker Cloud Core
آنچه نیاز دارید
- پروژه ابری گوگل
مجوزهای IAM
۲. قبل از شروع
پروژه را برای پشتیبانی از آموزش بهروزرسانی کنید
این آموزش از متغیرها (variables) برای کمک به پیادهسازی پیکربندی gcloud در Cloud Shell استفاده میکند.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
۳. راهاندازی VPC
Analytics-vpc را ایجاد کنید
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
ایجاد سرور مجازی آماده (on-prem-vpc)
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
ایجاد زیرشبکه پایگاه داده Postgresql
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
پیکربندی روتر ابری و NAT
در آموزش نصب بسته نرمافزاری، از Cloud NAT استفاده شده است زیرا نمونه ماشین مجازی پایگاه داده، آدرس IP خارجی ندارد.
درون Cloud Shell، روتر ابری را ایجاد کنید.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
درون Cloud Shell، دروازه NAT را ایجاد کنید.
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
ایجاد نمونه آزمایشی پایگاه داده
یک نمونه از postgres-database ایجاد کنید که برای آزمایش و اعتبارسنجی اتصال به Looker استفاده خواهد شد.
درون Cloud Shell، نمونه را ایجاد کنید.
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
ایجاد قوانین فایروال
برای اینکه به IAP اجازه دهید به ماشینهای مجازی شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونههای ماشین مجازی که میخواهید با استفاده از IAP به آنها دسترسی داشته باشید، اعمال میشود.
- اجازه ورود ترافیک از محدوده IP 35.235.240.0/20 را میدهد. این محدوده شامل تمام آدرسهای IP است که IAP برای ارسال TCP استفاده میکند.
از پوسته ابری
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
۴. دسترسی به سرویس خصوصی
دسترسی به خدمات خصوصی، یک اتصال خصوصی بین شبکه VPC شما و شبکهای متعلق به گوگل یا شخص ثالث است. گوگل یا شخص ثالث، نهادهای ارائه دهنده خدمات، به عنوان تولیدکنندگان خدمات نیز شناخته میشوند. Looker Cloud Core یک تولیدکننده خدمات است.
اتصال خصوصی، نمونههای ماشین مجازی را در شبکه VPC شما و سرویسهایی که به آنها دسترسی دارید، قادر میسازد تا منحصراً با استفاده از آدرسهای IP داخلی ارتباط برقرار کنند.
در سطح بالا، برای استفاده از دسترسی به سرویسهای خصوصی، باید یک محدوده آدرس IP (بلوک CIDR) را در شبکه VPC خود اختصاص دهید و سپس یک اتصال خصوصی به یک تولیدکننده سرویس ایجاد کنید .
اختصاص محدوده آدرس IP برای سرویسها
قبل از ایجاد یک اتصال خصوصی، باید یک محدوده آدرس IPv4 را برای استفاده توسط شبکه VPC تولیدکننده سرویس اختصاص دهید. این تضمین میکند که هیچ تصادمی آدرس IP بین شبکه VPC شما و شبکه تولیدکننده سرویس وجود ندارد.
وقتی محدودهای را در شبکه VPC خود اختصاص میدهید، آن محدوده برای زیرشبکهها (محدودههای اولیه و ثانویه) و مقاصد مسیرهای استاتیک سفارشی واجد شرایط نیست.
استفاده از محدودههای آدرس IPv6 با دسترسی به سرویسهای خصوصی پشتیبانی نمیشود.
API شبکه سرویس (Service Networking API) را برای پروژه خود در کنسول Google Cloud فعال کنید. هنگام فعال کردن API، ممکن است لازم باشد صفحه کنسول را رفرش کنید تا تأیید شود که API فعال شده است.
ایجاد تخصیص IP
برای مشخص کردن محدوده آدرس و طول پیشوند (ماسک زیرشبکه)، از پرچمهای آدرسها و طول پیشوند استفاده کنید. به عنوان مثال، برای اختصاص بلوک CIDR 192.168.0.0/22، برای آدرس 192.168.0.0 و برای طول پیشوند 22 را مشخص کنید.
درون Cloud Shell، تخصیص IP را برای Looker ایجاد کنید.
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
درون Cloud Shell، تخصیص IP را اعتبارسنجی کنید.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
مثال:
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
ایجاد یک اتصال خصوصی
پس از ایجاد یک محدوده اختصاص داده شده، میتوانید یک اتصال خصوصی به یک تولیدکننده سرویس، Looker Cloud Core، ایجاد کنید. این اتصال خصوصی، پس از ایجاد نمونه Looker، یک اتصال VPC Network Peering بین شبکه VPC شما و شبکه تولیدکننده سرویس برقرار میکند.
اتصالات خصوصی یک رابطه یک به یک بین شبکه VPC شما و یک تولیدکننده سرویس است. اگر یک تولیدکننده سرویس، چندین سرویس ارائه میدهد، شما فقط به یک اتصال خصوصی برای همه سرویسهای آن تولیدکننده نیاز دارید.
اگر به چندین تولیدکننده سرویس متصل میشوید، برای هر تولیدکننده سرویس از یک تخصیص منحصر به فرد استفاده کنید. این روش به شما کمک میکند تنظیمات شبکه خود، مانند مسیرها و قوانین فایروال، را برای هر تولیدکننده سرویس مدیریت کنید.
درون Cloud Shell، یک اتصال خصوصی ایجاد کنید، نام عملیات را یادداشت کنید.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
مثال:
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
درون Cloud Shell، بررسی کنید که آیا عملیات موفقیتآمیز بوده است یا خیر، OPERATION_NAME را با نامی که در مرحله قبل تولید شده است جایگزین کنید.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
مثال:
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
۵. یک نمونه Looker (هسته ابری گوگل) ایجاد کنید
قبل از اینکه شروع کنی
API مربوط به Looker را برای پروژه خود در کنسول Google Cloud فعال کنید. هنگام فعال کردن API، ممکن است لازم باشد صفحه کنسول را رفرش کنید تا تأیید شود که API فعال شده است.
یک کلاینت OAuth برای احراز هویت و دسترسی به نمونه راهاندازی کنید .
در بخش بعدی، برای ایجاد نمونه Looker باید از شناسه و راز کلاینت OAuth استفاده کنید.
نیازی به مبدأهای مجاز جاوا اسکریپت و URIهای ریدایرکت نیست.

درون کنسول ابری، بر اساس اسکرینشاتهای ارائه شده، یک نمونه ایجاد کنید.
به LOOKER بروید → یک نمونه ایجاد کنید
شناسه و رمز کلاینت OAuth که قبلاً ایجاد شده بود را وارد کنید.



ایجاد را انتخاب کنید
همزمان با ایجاد نمونه، به صفحه Instances در کنسول هدایت خواهید شد. ممکن است لازم باشد صفحه را رفرش کنید تا وضعیت نمونه جدید خود را مشاهده کنید. همچنین میتوانید با کلیک بر روی نماد اعلانها در منوی کنسول Google Cloud، فعالیت ایجاد نمونه خود را مشاهده کنید. در حین ایجاد نمونه، نماد اعلانها در منوی کنسول Google Cloud توسط یک نماد بارگیری احاطه میشود.
پس از ایجاد نمونه Looker، یک URL نمونه ایجاد میشود. این URL را یادداشت کنید.

۶. شناسه کلاینت OAuth 2.0 را بهروزرسانی کنید
در بخش بعدی، باید URI تغییر مسیر مجاز OAuth Client ID که قبلاً ایجاد شده است را با افزودن /oauth2callback به URL نمونه، بهروزرسانی کنید.
پس از تکمیل، میتوانید از URL نمونه برای ورود به Looker UI استفاده کنید.
در داخل کنسول ابری، به APIها و خدمات → اعتبارنامهها بروید
شناسه کلاینت Oauth 2.0 خود را انتخاب کنید و آدرس اینترنتی نمونه خود را بهروزرسانی کنید، مثال زیر:

۷. اعتبارسنجی دسترسی Looker
در Cloud Console، به Looker بروید و آدرس اینترنتی نمونه خود را که رابط کاربری Looker را باز میکند، انتخاب کنید.

پس از اجرا، مطابق تصویر زیر، صفحه فرودی به شما نمایش داده میشود که دسترسی شما به Looker Cloud Core را تأیید میکند.

۸. اتصال ترکیبی
در بخش بعدی، شما یک روتر ابری ایجاد خواهید کرد که به شما امکان میدهد با استفاده از پروتکل دروازه مرزی (BGP) به صورت پویا مسیرها را بین ابر خصوصی مجازی (VPC) و شبکه همتا تبادل کنید.
روتر ابری میتواند یک جلسه BGP را از طریق یک تونل VPN ابری برای اتصال شبکههای شما راهاندازی کند. این روتر به طور خودکار محدوده آدرسهای IP زیرشبکه جدید را یاد میگیرد و آنها را به شبکه همتای شما اعلام میکند.
در این آموزش، شما HA VPN را بین analytics-vpc و on-prem-vpc مستقر خواهید کرد تا اتصال خصوصی به Looker را نشان دهید.
ایجاد HA VPN GW برای analytics-vpc
وقتی هر دروازه ایجاد میشود، دو آدرس IPv4 خارجی به طور خودکار اختصاص داده میشود، یکی برای هر رابط دروازه. این آدرسهای IP را یادداشت کنید تا بعداً در مراحل پیکربندی از آنها استفاده کنید.
درون Cloud Shell، HA VPN GW را ایجاد کنید
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
ایجاد HA VPN GW برای vpc آماده
وقتی هر دروازه ایجاد میشود، دو آدرس IPv4 خارجی به طور خودکار اختصاص داده میشود، یکی برای هر رابط دروازه. این آدرسهای IP را یادداشت کنید تا بعداً در مراحل پیکربندی از آنها استفاده کنید.
درون Cloud Shell، HA VPN GW را ایجاد کنید.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
اعتبارسنجی ایجاد HA VPN GW
با استفاده از کنسول، به مسیر HYBRID CONNECIVITY → VPN → CLOUD VPN GATEWAYS بروید.

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

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

اعتبارسنجی مسیرهای آموختهشده توسط Analytics-vpc از طریق HA VPN
از آنجایی که تونلهای HA VPN و جلسات BGP برقرار شدهاند، مسیرهای on-prem-vpc از analytics-vpc یاد گرفته میشوند. با استفاده از کنسول، به مسیر VPC network → VPC networks → analytics-vpc → ROUTES → REGION → us-central1 → VIEW بروید.
مشاهده کنید که analytics-vpc مسیرهایی را از on-prem-vpc database-subnet-us-central1 172.16.10.0/27 آموخته است.

تأیید کنید که vpc فعال، مسیرهای HA VPN را یاد نگرفته باشد.
analytics-vpc زیرشبکه ندارد، بنابراین روتر ابری هیچ زیرشبکهای را به on-prem-vpc اعلام نمیکند. با استفاده از کنسول، به مسیر VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW بروید.

۱۰. زیرشبکه Looker را به on-prem تبلیغ کنید
زیرشبکهی Looker Private Service Access (PSA) به طور خودکار توسط روتر ابری analytics-cr-us-central1 اعلان نمیشود، زیرا این زیرشبکه به PSA اختصاص داده شده است، نه به VPC.
شما باید یک اعلان مسیر سفارشی از analytics-cr-central1 برای زیرشبکه PSA 192.168.0.0/22 (psa-range-looker) ایجاد کنید که به محیط داخلی اعلان شده و توسط بارهای کاری برای دسترسی به Looker استفاده میشود.
از کنسول به مسیر HYBRID CONNECIVITY → CLOUD ROUTERS → analytics-cr-us-central1 بروید، سپس گزینه EDIT را انتخاب کنید.
در بخش مسیرهای تبلیغشده، گزینه ایجاد مسیرهای سفارشی را انتخاب کنید، فیلدها را بر اساس مثال زیر بهروزرسانی کنید، انجام شد را انتخاب کنید و سپس روی ذخیره کلیک کنید.

۱۱. تأیید کنید که سرور مجازیِ on-prem-vpc، زیرشبکهی Looker را یاد گرفته است.
اکنون، از آنجایی که سرور on-prem-vpc از طریق analytics-cr-us-central1 به عنوان یک مسیر سفارشی تبلیغ شده است، میتواند به زیرشبکه Looker PSA دسترسی پیدا کند.
با استفاده از کنسول، به مسیر VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW بروید.
به مسیرهای Looker که از analytics-vpc تبلیغ میشوند، توجه کنید:

۱۲. اعتبارسنجی VPC Peering فعلی
ارتباط بین Looker Cloud Core و analytics-vpc از طریق VPC peering است که امکان تبادل مسیرهای سفارشی آموخته شده از طریق BGP را فراهم میکند. در این آموزش، analytics-vpc باید مسیرهای آموخته شده توسط on-prem-vpc را در Looker منتشر کند. برای فعال کردن این قابلیت، VPC peering نیاز به یک بهروزرسانی برای خروجی گرفتن از مسیرهای سفارشی دارد.
اعتبارسنجی مسیرهای وارد شده و صادر شده فعلی.
به شبکه VPC بروید → VPC NETWORK PEARING → servicenetworking-googleapis-com

تصویر زیر جزئیات مربوط به analytics-vpc را که psa-range-looker را از شبکه vpc مدیریتشدهی همتا (Managed Peer) گوگل و servicesnetworking وارد میکند، نشان میدهد.

گزینه EXPORTED ROUTES را انتخاب کنید. هیچ مسیری به شبکه Peered VPC صادر نشده است زیرا ۱) زیرشبکهها در analytics-vpc پیکربندی نشدهاند. ۲) مسیرهای سفارشی Export انتخاب نشدهاند.

۱۳. بهروزرسانی VPC Peering
به شبکه VPC بروید → VPC NETWORK PEARING → servicenetworking-googleapis-com → ویرایش
انتخاب کنید مسیرهای سفارشی را صادر کنید → ذخیره کنید

۱۴. اعتبارسنجی بهروزرسانی VPC Peering
اعتبارسنجی مسیرهای صادر شده
به شبکه VPC بروید → VPC NETWORK PEARING → servicenetworking-googleapis-com
گزینه EXPORTED ROUTES نشان میدهد که مسیرهای on-prem-vpc (زیرشبکه پایگاه داده 172.16.10.0/27) توسط analytics-vpc به Looker میزبان شبکه Peered VPC صادر میشوند.

۱۵. ایجاد پایگاه دادهی Looker postgres
در بخش بعدی، با استفاده از Cloud Shell، یک SSH به ماشین مجازی postgres-database اجرا خواهید کرد.
درون Cloud Shell، یک ssh به نمونه postgres-database اجرا کنید**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
در داخل سیستم عامل، آدرس IP (ens4) نمونه postgres-database را شناسایی و یادداشت کنید.
ip a
مثال:
user@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
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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/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 و زیرشبکه Looker Private Google Access (192.168.0.0/22) را در فایل pg_hba.conf در زیر اتصالات محلی IPv4 مطابق تصویر زیر وارد خواهید کرد:

sudo nano /etc/postgresql/15/main/pg_hba.conf
در بخش زیر، فایل postgresql.conf را از حالت کامنت خارج کنید تا مطابق تصویر زیر، تمام آدرسهای IP با پسوند '*' را شنود کند:
sudo nano /etc/postgresql/15/main/postgresql.conf
قبل از:

بعد از:

در داخل سیستم عامل، سرویس postgresql را مجدداً راه اندازی کنید.
sudo service postgresql restart
در داخل سیستم عامل، وضعیت postgresql را به عنوان فعال تأیید کنید.
sudo service postgresql status
مثال:
در داخل سیستم عامل، وضعیت postgresql را به عنوان فعال تأیید کنید.
user@postgres-database$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
۱۶. ایجاد پایگاه داده postgres
در بخش بعدی، یک پایگاه داده postgres با نام postgres_looker و طرحواره looker_schema ایجاد خواهید کرد که برای اعتبارسنجی اتصال looker به محل استفاده میشود.
در داخل سیستم عامل، وارد postgres شوید.
sudo -u postgres psql postgres
در داخل سیستم عامل، پایگاه داده را ایجاد کنید.
create database postgres_looker;
درون سیستم عامل، پایگاه داده را فهرست کنید.
\l
درون سیستم عامل، ابزار مشاهده کاربر را به همراه ابزار مشاهده رمز عبور ایجاد کنید.
create user postgres_looker with password 'postgreslooker';
داخل سیستم عامل، به پایگاه داده متصل شوید.
\c postgres_looker;
در داخل سیستم عامل، طرحواره looker-schema را ایجاد کنید و از خط فرمان Cloud Shell خارج شوید.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
مثال:
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
از سیستم عامل خارج شوید و به پوسته ابری بازگردید.
\q
exit
۱۷. یک فایروال در سرور مجازی (vpc) ایجاد کنید.
در بخش بعدی، یک فایروال Ingress با قابلیت ثبت وقایع ایجاد کنید که امکان ارتباط زیرشبکه Looker با نمونه postgres-database را فراهم کند.
از Cloud Shell، فایروال on-prem-vpc را ایجاد کنید.
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
۱۸. ایجاد DNS خصوصی در analytics-vpc
اگرچه Looker در یک VPC مدیریتشده توسط گوگل مستقر است، دسترسی به DNS خصوصی analytics-vpc از طریق اتصال به شبکههای سرویسها پشتیبانی میشود.
در بخش بعدی، شما یک منطقه DNS خصوصی در analytics-vpc ایجاد خواهید کرد که شامل یک رکورد A از نمونه postgres-database با نام دامنه کاملاً واجد شرایط ( postgres.analytics.com) و آدرس IP است.
از Cloud Shell، منطقه خصوصی analytics.com را ایجاد کنید.
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
از Cloud Shell، آدرس IP نمونه postgres-database را شناسایی کنید.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
مثال:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
از Cloud Shell، رکورد A را ایجاد کنید، مطمئن شوید که آدرس IP شناساییشدهی قبلی را اضافه میکنید.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
مثال:
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
از Cloud Shell، نظیر dns-suffix analytics.com گرفته تا شبکههای خدماتی که به Looker اجازه دسترسی به منطقه خصوصی analytics-vpc را میدهند.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
۱۹. ادغام Looker با پایگاه داده postgres در Postgres
در بخش بعدی، از Cloud Console برای ایجاد یک اتصال پایگاه داده به نمونهی داخلی postgres-database استفاده خواهید کرد.
در Cloud Console، به Looker بروید و آدرس اینترنتی نمونه خود را که رابط کاربری Looker را باز میکند، انتخاب کنید.

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

به بخش مدیریت → پایگاه داده → اتصالات بروید و گزینه افزودن اتصال را انتخاب کنید.
جزئیات اتصال را مطابق تصویر زیر پر کنید، CONNECT را انتخاب کنید

اتصال اکنون با موفقیت انجام شد

۲۰. اعتبارسنجی اتصال Looker
در بخش بعدی یاد خواهید گرفت که چگونه اتصال Looker به پایگاه داده postgres را در on-prem-vpc با استفاده از اکشن 'test' Looker و TCPDUMP اعتبارسنجی کنید.
اگر مهلت زمانی جلسه به پایان رسیده است، از Cloud Shell وارد پایگاه داده postgres شوید.
درون Cloud Shell، موارد زیر را انجام دهید:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
از طریق سیستم عامل، یک فیلتر TCPDUMP با زیرشبکه psa-range-looker به شماره ۱۹۲.۱۶۸.۰.۰/۲۲ ایجاد کنید.
sudo tcpdump -i any net 192.168.0.0/22 -nn
به مسیر مدیریت اتصال داده → پایگاه داده → اتصالات → انتخاب → آزمایش بروید
پس از انتخاب Test، Looker با موفقیت به پایگاه داده postgres متصل میشود، همانطور که در زیر نشان داده شده است:

به ترمینال سیستم عامل برگردید و تأیید کنید که TCPDUMP اتصال psc-range-looker به نمونه داخلی postgres-database را شناسایی کرده است.
یک نکته اضافه کنید که هر IP از محدوده PSA از Looker نمایش داده خواهد شد.
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
۲۱. توصیههای امنیتی
توصیههای امنیتی و بهترین شیوههای کمی در رابطه با ایمنسازی Looker و پایگاه داده Postgres وجود دارد. این موارد شامل موارد زیر است:
- تنظیم مجوزهای حساب پایگاه داده با کمترین امتیاز برای Looker که همچنان به آن اجازه میدهد عملکردهای مورد نیاز را انجام دهد.
- دادههای در حال انتقال بین رابط کاربری کلاینت و Looker و Looker به پایگاه داده با استفاده از TLS 1.2+ رمزگذاری شدهاند.
- دادههای در حالت استراحت به طور پیشفرض رمزگذاری میشوند، مشتری همچنین میتواند از CMEK برای نمونههای Looker ( https://cloud.google.com/looker/docs/looker-core-cmek ) و برای Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek ) استفاده کند.
- کنترل دسترسی Looker - مدیران Looker میتوانند با اعطای دسترسی به محتوا، دسترسی به دادهها و دسترسی به ویژگیها، آنچه را که یک مدیر یا گروهی از کاربران میتوانند در Looker ببینند و انجام دهند، کنترل کنند. این گزینهها به مدیر Looker اجازه میدهد تا نقشهای خاصی را تعریف کند که شامل مدل و مجموعه مجوزها میشود و کنترل دسترسی دقیقی به دادهها ایجاد کند.
- Looker از هر دو گزارشهای حسابرسی (Audit Logs) و گزارشهای دسترسی به دادهها (Data Access Logs) پشتیبانی میکند که ثبت میکند چه کسی، چه کاری را در چه زمانی و کجا انجام داده است. گزارشهای حسابرسی (Audit Logs) به طور پیشفرض فعال هستند در حالی که گزارشهای دسترسی به دادهها (Data Access logs) باید به طور صریح فعال شوند .
- در حال حاضر VPC-SC از نمونههای Enterprise و Embed که فقط با IP خصوصی پیکربندی شدهاند، پشتیبانی میکند.
۲۲. تمیز کردن
نمونه Looker Cloud Core را حذف کنید، به مسیر زیر بروید:
جستجوگر → آموزش جستجوگر → حذف

از Cloud Shell، اجزای آموزشی را حذف کنید.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
۲۳. تبریک
تبریک میگوییم، شما با موفقیت اتصال Looker را از طریق شبکه ترکیبی پیکربندی و اعتبارسنجی کردید که امکان ارتباط دادهها را در محیطهای داخلی و چند ابری فراهم میکند.
شما همچنین توانستید با موفقیت اتصال Looker Cloud Core به پایگاه داده postgres را با استفاده از ابزار Lookers Connect 'Test' و TCPDUMP در نمونه postgres-database آزمایش کنید.
کازموپاپ فکر میکند آموزشها فوقالعاده هستند!!
