1. บทนำ
Looker (Google Cloud Core) มีการจัดสรร การกำหนดค่า และการจัดการอินสแตนซ์ Looker จากคอนโซล Google Cloud ที่เรียบง่ายและมีประสิทธิภาพ คุณยังทำงานด้านการดูแลระบบอินสแตนซ์บางอย่างจากคอนโซลได้ด้วย
การกำหนดค่าเครือข่ายสำหรับอินสแตนซ์ Looker (Google Cloud Core) มี 3 แบบดังนี้
- สาธารณะ: การเชื่อมต่อเครือข่ายใช้ที่อยู่ IP ภายนอกที่เข้าถึงอินเทอร์เน็ตได้
- ส่วนตัว: การเชื่อมต่อเครือข่ายใช้ที่อยู่ IP ของ Virtual Private Cloud (VPC) ภายในซึ่งโฮสต์โดย Google
- สาธารณะและส่วนตัว: การเชื่อมต่อเครือข่ายใช้ทั้งที่อยู่ IP สาธารณะและที่อยู่ IP ส่วนตัว โดยระบบจะกำหนดเส้นทางการรับส่งข้อมูลขาเข้าผ่าน IP สาธารณะ และกำหนดเส้นทางการรับส่งข้อมูลขาออกผ่าน IP ส่วนตัว
ในบทแนะนำ คุณจะได้ติดตั้งใช้งานเครือข่ายส่วนตัว แบบต้นทางถึงปลายทางที่ครอบคลุมเพื่อรองรับการเชื่อมต่อ Looker กับ VPN ภายในองค์กรผ่าน HA VPN ซึ่งสามารถจำลองข้อมูลให้ตรงกับข้อกำหนดสำหรับการเชื่อมต่อหลายระบบคลาวด์และภายในองค์กรได้
Looker (Google Cloud Core) รองรับ IP ส่วนตัวสำหรับอินสแตนซ์ที่เป็นไปตามเกณฑ์ต่อไปนี้
- รุ่น Instance ต้องเป็นรุ่น Enterprise หรือ Embed
สิ่งที่คุณจะสร้าง
ในบทแนะนำนี้ คุณจะได้สร้างการใช้งานเครือข่าย Looker ส่วนตัวที่ครอบคลุมใน VPC แบบสแตนด์อโลนซึ่งมีการเชื่อมต่อแบบผสมกับระบบคลาวด์หลายระบบและระบบภายในองค์กร
คุณจะต้องตั้งค่าเครือข่าย VPC ชื่อ on-prem-vpc
เพื่อแสดงถึงสภาพแวดล้อมในองค์กร ไม่มี VPN ภายในองค์กรสำหรับการติดตั้งใช้งาน แต่จะใช้เครือข่ายแบบผสมไปยังศูนย์ข้อมูลภายในองค์กรหรือผู้ให้บริการคลาวด์แทน
ขั้นตอนหลักๆ ของบทแนะนำมีดังนี้
- สร้าง VPC แบบสแตนด์อโลนใน us-central1
- จัดสรรซับเน็ต IP สำหรับการเข้าถึงบริการส่วนตัว
- ติดตั้งใช้งานอินสแตนซ์ Looker ใน VPC แบบสแตนด์อโลน
- สร้างเครือข่ายภายในองค์กรและเครือข่ายแบบผสม
- ประกาศและตรวจสอบช่วง IP ของ Looker ผ่าน BGP
- ผสานรวมและตรวจสอบการสื่อสารข้อมูลระหว่าง Looker กับ PostgreSQL
Figure1
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้าง VPC และเครือข่ายแบบผสมที่เกี่ยวข้อง
- วิธีติดตั้งใช้งาน Looker ใน VPC แบบสแตนด์อโลน
- วิธีสร้าง VPC ภายในองค์กรและเครือข่ายแบบผสมที่เกี่ยวข้อง
- เชื่อมต่อ VPC ภายในองค์กรด้วย Analytics-vps ผ่าน HA VPN
- วิธีโฆษณาซับเน็ตของ Looker ผ่านเครือข่ายแบบผสม
- วิธีตรวจสอบโครงสร้างพื้นฐานเครือข่ายแบบผสม
- วิธีผสานรวมฐานข้อมูล Postgresql กับ Looker Cloud Core
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud
สิทธิ์ IAM
2. ก่อนเริ่มต้น
อัปเดตโปรเจ็กต์เพื่อรองรับบทแนะนำ
บทแนะนำนี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
ใน Cloud Shell ให้ทําดังนี้
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. การตั้งค่า 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
การกำหนดค่า Cloud Router และ NAT
Cloud NAT ใช้ในบทแนะนำสำหรับการติดตั้งแพ็กเกจซอฟต์แวร์เนื่องจากอินสแตนซ์ VM ของฐานข้อมูลไม่มีที่อยู่ IP ภายนอก
สร้าง Cloud Router ใน Cloud Shell
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
สร้างเกตเวย์ NAT ภายใน Cloud Shell
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 เชื่อมต่อกับอินสแตนซ์ VM ให้สร้างกฎของไฟร์วอลล์ที่มีลักษณะดังนี้
- มีผลกับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการเข้าถึงโดยใช้ IAP
- อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้ประกอบด้วยที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP
จาก Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. การเข้าถึงบริการส่วนตัว
การเข้าถึงบริการส่วนตัวคือการเชื่อมต่อส่วนตัวระหว่างเครือข่าย VPC ของคุณกับเครือข่ายที่ Google หรือบุคคลที่สามเป็นเจ้าของ Google หรือบุคคลที่สามซึ่งเป็นนิติบุคคลที่ให้บริการหรือที่เรียกว่า "ผู้จัดหาบริการ" Looker Cloud Core เป็นบริการที่ผลิต
การเชื่อมต่อส่วนตัวจะเปิดใช้อินสแตนซ์ VM ในเครือข่าย VPC และบริการที่คุณเข้าถึงเพื่อสื่อสารโดยเฉพาะโดยใช้ที่อยู่ IP ภายใน
หากต้องการใช้การเข้าถึงบริการส่วนตัวในระดับสูง คุณต้องจัดสรรช่วงที่อยู่ IP (บล็อก CIDR) ในเครือข่าย VPC แล้วสร้างการเชื่อมต่อส่วนตัวกับผู้ผลิตบริการ
จัดสรรช่วงที่อยู่ IP สำหรับบริการ
ก่อนสร้างการเชื่อมต่อส่วนตัว คุณต้องจัดสรรช่วงที่อยู่ IPv4 ที่เครือข่าย VPC ของผู้ผลิตบริการจะใช้ วิธีนี้ช่วยให้มั่นใจว่าเครือข่าย VPC และเครือข่ายของผู้ผลิตบริการจะไม่ขัดแย้งกันของที่อยู่ IP
เมื่อคุณจัดสรรช่วงในเครือข่าย VPC ช่วงดังกล่าวจะไม่มีสิทธิ์ใช้กับซับเน็ต (ช่วงหลักและรอง) และปลายทางของเส้นทางแบบคงที่ที่กำหนดเอง
ระบบไม่รองรับการใช้ช่วงที่อยู่ IPv6 กับการเข้าถึงบริการส่วนตัว
เปิดใช้ Service Networking API สำหรับโปรเจ็กต์ในคอนโซล Google Cloud เมื่อเปิดใช้ API คุณอาจต้องรีเฟรชหน้าคอนโซลเพื่อยืนยันว่าเปิดใช้ API แล้ว
สร้างการจัดสรร IP
หากต้องการระบุช่วงที่อยู่และความยาวของคำนำหน้า (มาสก์ซับเน็ต) ให้ใช้แฟล็กที่อยู่และความยาวคำนำหน้า เช่น หากต้องการจัดสรรบล็อก CIDR 192.168.0.0/22 ให้ระบุ 192.168.0.0 สำหรับที่อยู่ และระบุ 22 สำหรับความยาวของคำนำหน้า
สร้างการจัดสรร IP สําหรับ Looker ใน Cloud Shell
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
ตรวจสอบการจัดสรร IP ใน Cloud Shell
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 ได้ การเชื่อมต่อส่วนตัวจะสร้างการเชื่อมต่อการเพียร์เครือข่าย VPC ระหว่างเครือข่าย VPC ของคุณกับเครือข่ายของผู้ผลิตบริการเมื่อสร้างอินสแตนซ์ Looker แล้ว
การเชื่อมต่อส่วนตัวเป็นความสัมพันธ์แบบหนึ่งต่อหนึ่งระหว่างเครือข่าย VPC ของคุณและผู้ผลิตบริการ หากผู้ผลิตบริการรายเดียวเสนอบริการหลายรายการ คุณต้องใช้การเชื่อมต่อส่วนตัวเพียง 1 รายการสำหรับบริการทั้งหมดของผู้ผลิต
หากคุณเชื่อมต่อกับผู้ผลิตบริการหลายราย ให้ใช้การจัดสรรที่ไม่ซ้ำกันสำหรับผู้ผลิตบริการแต่ละราย แนวทางปฏิบัตินี้จะช่วยคุณจัดการการตั้งค่าเครือข่าย เช่น เส้นทางและกฎไฟร์วอลล์ สำหรับผู้ผลิตบริการแต่ละราย
สร้างการเชื่อมต่อส่วนตัวใน 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.
5. สร้างอินสแตนซ์ Looker (Google Cloud Core)
ก่อนเริ่มต้น
เปิดใช้ Looker API สำหรับโปรเจ็กต์ในคอนโซล Google Cloud เมื่อเปิดใช้ API คุณอาจต้องรีเฟรชหน้าคอนโซลเพื่อยืนยันว่าเปิดใช้ API แล้ว
ตั้งค่าไคลเอ็นต์ OAuth เพื่อตรวจสอบสิทธิ์และเข้าถึงอินสแตนซ์
ในส่วนต่อไปนี้ คุณจะต้องใช้รหัสไคลเอ็นต์และรหัสลับ OAuth ในการสร้างอินสแตนซ์ Looker
คุณไม่จำเป็นต้องระบุต้นทางของ JavaScript และ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต
สร้างอินสแตนซ์ใน Cloud Console โดยอิงตามภาพหน้าจอที่ให้มา
ไปที่ LOOKER → สร้างอินสแตนซ์
ป้อนข้อมูลรหัสไคลเอ็นต์และรหัสลับ OAuth ที่สร้างก่อนหน้านี้
เลือกสร้าง
ขณะสร้างอินสแตนซ์ ระบบจะเปลี่ยนเส้นทางคุณไปยังหน้าอินสแตนซ์ในคอนโซล คุณอาจต้องรีเฟรชหน้าเว็บเพื่อดูสถานะของอินสแตนซ์ใหม่ นอกจากนี้ คุณยังดูกิจกรรมการสร้างอินสแตนซ์ได้โดยคลิกไอคอนการแจ้งเตือนในเมนู Google Cloud Console ระหว่างที่สร้างอินสแตนซ์ ไอคอนการแจ้งเตือนในเมนูคอนโซล Google Cloud จะล้อมรอบด้วยไอคอนกำลังโหลด
หลังจากสร้างอินสแตนซ์ Looker แล้ว ระบบจะสร้าง URL ของอินสแตนซ์ จด URL ไว้
6. อัปเดตรหัสไคลเอ็นต์ OAuth 2.0
ในส่วนต่อไปนี้ คุณจะต้องอัปเดต URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตของรหัสไคลเอ็นต์ OAuth ที่สร้างไว้ก่อนหน้านี้โดยเพิ่ม /oauth2callback
ต่อท้าย URL อินสแตนซ์
เมื่อเสร็จสิ้นแล้ว คุณจะใช้ URL ของอินสแตนซ์เพื่อเข้าสู่ระบบ Looker UI ได้
ใน Cloud Console ให้ไปที่ API และบริการ → ข้อมูลเข้าสู่ระบบ
เลือกรหัสไคลเอ็นต์ OAuth 2.0 และอัปเดต URL ของอินสแตนซ์ตามตัวอย่างด้านล่าง
7. ตรวจสอบการเข้าถึง Looker
ใน Cloud Console ให้ไปที่ Looker แล้วเลือก URL อินสแตนซ์ที่จะเปิด UI ของ Looker
เมื่อเปิดใช้งานแล้ว คุณจะเห็นหน้า Landing Page ตามภาพหน้าจอด้านล่างเพื่อยืนยันสิทธิ์เข้าถึง Looker Cloud Core
8. การเชื่อมต่อแบบผสม
ในส่วนต่อไปนี้ คุณจะสร้าง Cloud Router เพื่อแลกเปลี่ยนเส้นทางแบบไดนามิกระหว่าง Virtual Private Cloud (VPC) และเครือข่ายเพียร์โดยใช้ Border Gateway Protocol (BGP)
เราเตอร์ระบบคลาวด์สามารถตั้งค่าเซสชัน BGP ผ่านอุโมงค์ข้อมูล Cloud VPN เพื่อเชื่อมต่อเครือข่ายของคุณ โดยจะเรียนรู้ช่วงที่อยู่ IP ใหม่ของซับเน็ตโดยอัตโนมัติและประกาศให้เครือข่ายเพียร์ทราบ
ในบทแนะนํานี้ คุณจะใช้ HA VPN ระหว่าง analytics-vpc กับ on-prem-vpc เพื่อแสดงการเชื่อมต่อส่วนตัวกับ Looker
สร้าง HA VPN GW สําหรับ analytics-vpc
เมื่อสร้างเกตเวย์แต่ละรายการ ระบบจะจัดสรรที่อยู่ IPv4 ภายนอก 2 รายการโดยอัตโนมัติ โดยจัดสรร 1 รายการสำหรับอินเทอร์เฟซเกตเวย์แต่ละรายการ จดที่อยู่ IP เหล่านี้ไว้เพื่อใช้ในขั้นตอนการกำหนดค่าในภายหลัง
สร้าง HA VPN GW ใน Cloud Shell
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
สร้าง HA VPN GW สำหรับ on-prem-vpc
เมื่อสร้างเกตเวย์แต่ละรายการแล้ว ระบบจะจัดสรรที่อยู่ IPv4 ภายนอก 2 รายการโดยอัตโนมัติ 1 รายการสำหรับแต่ละอินเทอร์เฟซเกตเวย์ จดที่อยู่ IP เหล่านี้ไว้เพื่อใช้ในภายหลังในขั้นตอนการกำหนดค่า
สร้าง HA VPN GW ใน Cloud Shell
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
ตรวจสอบการสร้าง GW ของ VPN ความพร้อมใช้งานสูง
ในคอนโซล ให้ไปที่ HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS
สร้างเราเตอร์ระบบคลาวด์สำหรับ Analytics-vpc
ใน Cloud Shell ให้สร้าง Cloud Router ใน us-central1
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
สร้างเราเตอร์ระบบคลาวด์สำหรับ on-prem-vpc
สร้าง Cloud Router ใน us-central1 ภายใน Cloud Shell
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
สร้างอุโมงค์ข้อมูล VPN สำหรับ Analytics-vpc
คุณจะต้องสร้างอุโมงค์ข้อมูล VPN 2 รายการในเกตเวย์ VPN HA แต่ละรายการ
สร้างอุโมงค์ข้อมูล VPN0
สร้าง Tunnel0 ใน Cloud Shell:
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
สร้างอุโมงค์ข้อมูล VPN 1
สร้าง Tunnel1 ใน 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 2 รายการในเกตเวย์ VPN HA แต่ละรายการ
สร้างอุโมงค์ข้อมูล VPN0
สร้าง Tunnel0 ใน Cloud Shell:
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
สร้างอุโมงค์ข้อมูล VPN 1
สร้าง tunnel1 ใน 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
ใช้คอนโซลเพื่อไปที่การเชื่อมต่อแบบผสมผสาน → VPN → อุโมงค์ข้อมูล Cloud VPN
9. สร้างเพื่อนบ้าน BGP
สร้างเซสชัน BGP
ในส่วนนี้ คุณกำหนดค่าอินเทอร์เฟซเราเตอร์ระบบคลาวด์และ BGP Peer
สร้างอินเทอร์เฟซ BGP และการเพียร์สำหรับ analytics-vpc
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้าง Peer BGP ใน Cloud Shell โดยทำดังนี้
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
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้างเพียร์ BGP ใน Cloud Shell ดังนี้
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 และการเพียร์สำหรับ on-prem-vpc
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell โดยทำดังนี้
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
สร้าง Peer BGP ใน Cloud Shell โดยทำดังนี้
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
สร้างอินเทอร์เฟซ BGP ใน Cloud Shell ดังนี้
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
สร้างเพียร์ BGP ใน Cloud Shell ดังนี้
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 เพื่อดูรายละเอียดอุโมงค์ข้อมูล VPN
ตรวจสอบเส้นทางที่เรียนรู้ VPN ของ Analytics ผ่าน HA VPN
เนื่องจากมีการสร้างอุโมงค์ข้อมูล VPN HA และเซสชัน BGP ระบบจึงเรียนรู้เส้นทางจาก VPN ภายในองค์กรจาก Analytics-vpc ใช้คอนโซลเพื่อไปที่เครือข่าย VPC → เครือข่าย VPC → analytics-vpc → ROUTES → REGION → us-central1 → VIEW
สังเกตว่า analytics-vpc ได้เรียนรู้เส้นทางจาก on-prem-vpc database-subnet-us-central1 172.16.10.0/27
ตรวจสอบว่า on-prem-vpc ไม่ได้เรียนรู้เส้นทางผ่าน HA VPN
analytics-vpc ไม่มีซับเน็ต ดังนั้น Cloud Router จะไม่กระจายข้อมูลซับเน็ตไปยัง on-prem-vpc ใช้คอนโซลเพื่อไปที่เครือข่าย VPC → เครือข่าย VPC → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW
10. โฆษณาซับเน็ตของ Looker ไปยังภายในองค์กร
เราเตอร์ระบบคลาวด์ analytics-cr-us-central1 จะไม่โฆษณาซับเน็ตของ Looker Private Service Access (PSA) โดยอัตโนมัติเนื่องจากมีการกำหนดซับเน็ตให้กับ PSA ไม่ใช่ VPC
คุณจะต้องสร้างโฆษณาเส้นทางที่กำหนดเองจาก analytics-cr-central1 สำหรับซับเน็ต PSA 192.168.0.0/22 (psa-range-looker) ที่จะโฆษณาไปยังสภาพแวดล้อมภายในองค์กรและใช้โดยภาระงานเพื่อเข้าถึง Looker
จากคอนโซล ให้ไปที่การเชื่อมต่อแบบผสม → CLOUD ROUTERS → analytics-cr-us-central1 แล้วเลือกแก้ไข
ในส่วนเส้นทางที่โฆษณา ให้เลือกตัวเลือกสร้างเส้นทางที่กำหนดเอง อัปเดตช่องตามตัวอย่างด้านล่าง เลือกเสร็จสิ้น แล้วคลิกบันทึก
11. ตรวจสอบว่า on-prem-vpc เรียนรู้ซับเน็ตของ Looker แล้ว
ตอนนี้ on-prem-vpc จะเข้าถึงซับเน็ต PSA ของ Looker ได้เนื่องจากมีการประกาศจาก analytics-cr-us-central1 เป็นการประกาศเส้นทางที่กำหนดเอง
ใช้คอนโซลโดยไปที่เครือข่าย VPC → เครือข่าย VPC → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW
สังเกตเส้นทาง Looker ที่โฆษณาได้จาก Analytics-vpc ดังนี้
12. ตรวจสอบการเพียร์ VPC ปัจจุบัน
การเชื่อมต่อระหว่าง Looker Cloud Core และ Analytics-vpc ผ่านการเพียร์ VPC ที่ช่วยให้แลกเปลี่ยนเส้นทางที่กำหนดเองซึ่งเรียนรู้ผ่าน BGP ได้ ในบทแนะนํานี้ analytics-vpc จะต้องเผยแพร่เส้นทางที่ on-prem-vpc เรียนรู้ไปยัง Looker หากต้องการเปิดใช้ฟังก์ชันนี้ การเพียร์ VPC ต้องมีการอัปเดตเพื่อส่งออกเส้นทางที่กำหนดเอง
ตรวจสอบเส้นทางที่นำเข้าและส่งออกในปัจจุบัน
ไปที่ เครือข่าย VPC → การเพียร์เครือข่าย VPC → servicenetworking-googleapis-com
ภาพหน้าจอด้านล่างแสดงรายละเอียดของ analytics-vpc ที่นำเข้า psa-range-looker จากเครือข่าย VPC ที่มีการเชื่อมต่อแบบเพียร์ที่ Google, servicesnetworking
เลือก "เส้นทางที่ส่งออก" แสดงว่าไม่มีการส่งออกเส้นทางไปยังเครือข่าย VPC ที่เพียร์เนื่องจาก 1) ไม่ได้กําหนดค่าซับเน็ตใน analytics-vpc 2) ไม่ได้เลือก "ส่งออกเส้นทางที่กําหนดเอง"
13. อัปเดตการเพียร์ VPC
ไปที่เครือข่าย VPC → การเพียร์เครือข่าย VPC → servicenetworking-googleapis-com → แก้ไข
เลือกส่งออกเส้นทางที่กำหนดเอง → บันทึก
14. ตรวจสอบการเพียร์ VPC ที่อัปเดต
ตรวจสอบเส้นทางที่ส่งออก
ไปที่เครือข่าย VPC → การเพียร์เครือข่าย VPC → servicenetworking-googleapis-com
เลือก "เส้นทางที่ส่งออก" เพื่อดูว่า analytics-vpc ส่งออกเส้นทาง on-prem-vpc (ซับเน็ตฐานข้อมูล 172.16.10.0/27) ไปยังเครือข่าย VPC ที่เพียร์ซึ่งโฮสต์ Looker หรือไม่
15. การสร้างฐานข้อมูล Postgres ของ Looker
ในส่วนต่อไปนี้ คุณจะดำเนินการ SSH ไปยัง VM ของ postgres-database โดยใช้ Cloud Shell
ใน 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 (ป้อนรหัสผ่านเดียวกัน 2 ครั้ง)
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 และซับเน็ตการเข้าถึง Google ส่วนตัวของ Looker (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.
16. สร้างฐานข้อมูล postgres
ในส่วนต่อไปนี้ คุณจะสร้างฐานข้อมูล Postgres ชื่อ postgres_looker และ schema Looker_schema ที่ใช้ตรวจสอบการเชื่อมต่อภายในองค์กร
เข้าสู่ระบบ 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
ออกจากระบบปฏิบัติการและกลับไปยัง Cloud Shell
\q
exit
17. สร้างไฟร์วอลล์ใน on-prem-vpc
ในส่วนต่อไปนี้ ให้สร้างไฟร์วอลล์ขาเข้าที่มีการบันทึกซึ่งอนุญาตการสื่อสารของซับเน็ตของ Looker กับอินสแตนซ์ Postgres-database
สร้างไฟร์วอลล์ VPC ภายในองค์กรจาก Cloud Shell
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
18. สร้าง DNS ส่วนตัวใน analytics-vpc
แม้ว่า Looker จะติดตั้งใช้งานใน VPC ที่ Google จัดการ แต่ระบบจะรองรับการเข้าถึง DNS ส่วนตัวของ analytics-vpc ผ่านการเพียร์กับเครือข่ายบริการ
ในส่วนต่อไปนี้ คุณจะต้องสร้างโซน DNS ส่วนตัวใน analytics-vpc ที่มีระเบียน A ของอินสแตนซ์ Postgres-database Fully Qualified Domain Name (postgres.analytics.com)
และที่อยู่ IP
สร้างโซนส่วนตัว analytics.com จาก Cloud Shell
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"
ระบุที่อยู่ IP ของอินสแตนซ์ postgres-database จาก Cloud Shell
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.
19. ผสานรวม Looker กับ postgres-database ของ PostgreSQL
คุณจะต้องใช้ Cloud Console ในการสร้างการเชื่อมต่อฐานข้อมูลกับอินสแตนซ์ Postgres-database ภายในองค์กร
ใน Cloud Console ให้ไปที่ Looker แล้วเลือก URL อินสแตนซ์ที่จะเปิด UI ของ Looker
เมื่อเปิดใช้งานแล้ว คุณจะเห็นหน้า Landing Page ตามภาพหน้าจอด้านล่าง
ไปที่ผู้ดูแลระบบ → ฐานข้อมูล → การเชื่อมต่อ → เลือกเพิ่มการเชื่อมต่อ
กรอกรายละเอียดการเชื่อมต่อตามภาพหน้าจอด้านล่าง เลือกเชื่อมต่อ
เชื่อมต่อสำเร็จแล้ว
20. ตรวจสอบการเชื่อมต่อ Looker
ในส่วนต่อไปนี้ คุณจะได้ดูวิธีตรวจสอบการเชื่อมต่อ Looker กับฐานข้อมูล Postgres ใน VM ขององค์กรโดยใช้การดำเนินการ "ทดสอบ" และ TCPDUMP ของ Looker
จาก Cloud Shell ให้เข้าสู่ระบบ postgres-database หากเซสชันดังกล่าวหมดเวลา
ภายใน 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 192.168.0.0/22
sudo tcpdump -i any net 192.168.0.0/22 -nn
ไปที่การเชื่อมต่อข้อมูล ผู้ดูแลระบบ → ฐานข้อมูล → การเชื่อมต่อ → เลือก → ทดสอบ
เมื่อเลือก "ทดสอบ" แล้ว Looker จะเชื่อมต่อกับฐานข้อมูล postgres สำเร็จดังที่แสดงด้านล่าง
กลับไปยังเทอร์มินัลระบบปฏิบัติการ แล้วตรวจสอบว่า TCPDUMP ตรวจพบช่วง psc-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
21. คำแนะนำเกี่ยวกับความปลอดภัย
ต่อไปนี้คือคําแนะนําด้านความปลอดภัยและแนวทางปฏิบัติแนะนําบางส่วนที่เกี่ยวข้องกับการรักษาความปลอดภัยของ Looker และฐานข้อมูล Postgres ซึ่งรวมถึง
- การตั้งค่าสิทธิ์ของบัญชีฐานข้อมูลที่มีสิทธิ์น้อยที่สุดสำหรับ Looker ที่ยังคงอนุญาตให้บัญชีทำงานที่จำเป็นได้
- ข้อมูลที่อยู่ระหว่างการส่งระหว่างไคลเอ็นต์กับ UI ของ 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 รองรับทั้งบันทึกการตรวจสอบและบันทึกการเข้าถึงข้อมูล ซึ่งจะบันทึกว่าใครทําอะไรเมื่อใดและที่ใด ระบบจะเปิดใช้บันทึกการตรวจสอบโดยค่าเริ่มต้น ขณะที่บันทึกการเข้าถึงข้อมูลจะต้องเปิดใช้อย่างชัดแจ้ง
- ปัจจุบัน VPC-SC รองรับอินสแตนซ์ Enterprise และอินสแตนซ์ที่ฝังที่กำหนดค่าด้วย IP ส่วนตัวเท่านั้น
22. ล้างข้อมูล
ลบอินสแตนซ์ Looker Cloud Core โดยไปที่
LOOKER → looker-tutorial → DELETE
ลบคอมโพเนนต์บทแนะนำจาก 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
23. ขอแสดงความยินดี
ยินดีด้วย คุณได้กําหนดค่าและตรวจสอบการเชื่อมต่อ Looker ผ่านเครือข่ายแบบผสมเรียบร้อยแล้ว ซึ่งช่วยให้การสื่อสารข้อมูลในสภาพแวดล้อมแบบมัลติคลาวด์และภายในองค์กรเป็นไปได้
นอกจากนี้ยังสามารถทดสอบการเชื่อมต่อ Looker Cloud Core กับฐานข้อมูล Postgres โดยใช้เครื่องมือ "Test" ของ Lookers Connect และ TCPDUMP ในอินสแตนซ์ Postgres-database ได้ด้วย
Cosmopup คิดว่าบทแนะนำยอดเยี่ยม!!
การอ่านและวิดีโอเพิ่มเติม
- ขอแนะนำวิวัฒนาการขั้นถัดไปของ Looker
- หากจะย้ายข้อมูลไปยัง GCP สิ่งสำคัญที่ต้องทำก่อน: VPC
- การกำหนดเส้นทางแบบไดนามิกด้วยเราเตอร์ระบบคลาวด์