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 ใน Inside 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 ระหว่างที่สร้างอินสแตนซ์ ไอคอนการแจ้งเตือนในเมนูคอนโซล Google Cloud จะล้อมรอบด้วยไอคอนกำลังโหลด
หลังจากสร้างอินสแตนซ์ Looker แล้ว ระบบจะสร้าง URL ของอินสแตนซ์ จด URL ไว้
6. อัปเดตรหัสไคลเอ็นต์ OAuth 2.0
ในส่วนต่อไปนี้ คุณจะต้องอัปเดตรหัสไคลเอ็นต์ OAuth ที่สร้างไว้ก่อนหน้านี้ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตโดยการเพิ่ม /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
สร้าง GW VPN ความพร้อมใช้งานสูงสำหรับ 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
สร้าง GW VPN ความพร้อมใช้งานสูงสำหรับ 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 Shell ให้สร้าง Cloud Router ใน us-central1
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
สร้างอุโมงค์ข้อมูล VPN สำหรับ Analytics-vpc
คุณจะต้องสร้างอุโมงค์ข้อมูล VPN 2 รายการบนเกตเวย์ HA VPN แต่ละรายการ
สร้างอุโมงค์ข้อมูล 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 รายการบนเกตเวย์ HA VPN แต่ละรายการ
สร้างอุโมงค์ข้อมูล 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
ในการใช้คอนโซล ให้ไปที่ HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS
9. สร้างเพื่อนบ้าน BGP
สร้างเซสชัน BGP
ในส่วนนี้ คุณจะได้กำหนดค่าอินเทอร์เฟซ Cloud Router และเพียร์ BGP
สร้างอินเทอร์เฟซ 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
สร้างเพียร์ 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
สร้างเพียร์ 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 ความพร้อมใช้งานสูงและเซสชัน BGP ระบบจึงเรียนรู้เส้นทางจาก VPN ภายในองค์กรจาก Analytics-vpc ในการใช้คอนโซล ให้ไปที่เครือข่าย VPC → เครือข่าย VPC → analytics-vpc → ROUTES → REGION → us-central1 → VIEW
สังเกตเส้นทาง VPN ที่เรียนรู้จากฐานข้อมูล VPC ภายในองค์กร-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
จากคอนโซล ให้ไปที่ HYBRID CONNECTIVITY → CLOUD ROUTERS → analytics-cr-us-central1 แล้วเลือกแก้ไข
ในส่วนเส้นทางที่โฆษณา ให้เลือกตัวเลือกสร้างเส้นทางที่กำหนดเอง อัปเดตช่องตามตัวอย่างด้านล่าง เลือกเสร็จสิ้น แล้วคลิกบันทึก
11. ตรวจสอบว่า on-prem-vpc เรียนรู้ซับเน็ตของ Looker แล้ว
ตอนนี้ VPN ภายในองค์กรจะเข้าถึงซับเน็ต 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 จะต้องเผยแพร่เส้นทางที่เรียนรู้โดย VPN ภายในองค์กรไปยัง 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
การเลือกเส้นทางที่ส่งออกจะแสดงเส้นทาง VPC ภายในองค์กร (ซับเน็ต 172.16.10.0/27) ของฐานข้อมูลไปยัง Looker โฮสติ้งเครือข่าย VPC ที่มีการเชื่อมต่อโดย Analytics-vpc
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-database และซับเน็ตของ Google Access ส่วนตัวของ 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
สร้างระเบียน A จาก Cloud Shell และตรวจสอบว่าได้เพิ่มที่อยู่ 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
คุณจะต้องใช้ Cloud Console ในการสร้างการเชื่อมต่อฐานข้อมูลกับอินสแตนซ์ Postgres-database ภายในองค์กร
ใน Cloud Console ให้ไปที่ Looker แล้วเลือก URL อินสแตนซ์ที่จะเปิด UI ของ Looker
เมื่อเปิดตัวแล้ว ระบบจะแสดงหน้า Landing Page ตามภาพหน้าจอด้านล่าง
ไปที่ผู้ดูแลระบบ → ฐานข้อมูล → การเชื่อมต่อ → เลือกเพิ่มการเชื่อมต่อ
กรอกรายละเอียดการเชื่อมต่อตามภาพหน้าจอด้านล่าง เลือกเชื่อมต่อ
เชื่อมต่อสำเร็จแล้ว
20. ตรวจสอบการเชื่อมต่อ Looker
ในส่วนต่อไปนี้ คุณจะได้ดูวิธีตรวจสอบการเชื่อมต่อ Looker กับฐานข้อมูล Postgres ใน VM ขององค์กรโดยใช้ "การทดสอบ" ของ Looker และ TCPDUMP
จาก 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. ล้างข้อมูล
ลบอินสแตนซ์ Cloud Core ของ Looker จากนั้นไปที่
LOOKER → บทแนะนำ Looker → ลบ
ลบคอมโพเนนต์บทแนะนำจาก 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 ได้สำเร็จโดยใช้ "การทดสอบ" ของ Lookers Connect และ TCPDUMP ในอินสแตนซ์ postgres-database
Cosmopup คิดว่าบทแนะนำยอดเยี่ยม!!
อ่านเพิ่มเติมและ วิดีโอ
- ขอแนะนำวิวัฒนาการขั้นถัดไปของ Looker
- หากต้องการย้ายข้อมูลไปยัง GCP สิ่งสำคัญที่ต้องทำก่อน: VPC
- การกำหนดเส้นทางแบบไดนามิกด้วยเราเตอร์ระบบคลาวด์