Kết nối Looker Cloud qua mạng kết hợp

1. Giới thiệu

Looker (Google Cloud core) giúp đơn giản hoá và tinh giản quy trình cấp phép, định cấu hình và quản lý một phiên bản Looker từ bảng điều khiển Google Cloud. Bạn cũng có thể thực hiện một số tác vụ quản trị phiên bản trên bảng điều khiển.

Có 3 cấu hình mạng có sẵn cho các phiên bản Looker (Google Cloud core):

  • Công khai: Kết nối mạng sử dụng địa chỉ IP bên ngoài có thể truy cập vào Internet.
  • Riêng tư: Kết nối mạng sử dụng địa chỉ IP Virtual Private Cloud (VPC) nội bộ do Google lưu trữ.
  • Công khai và riêng tư: Kết nối mạng sử dụng cả địa chỉ IP công khai và địa chỉ IP riêng tư, trong đó lưu lượng truy cập đến sẽ được định tuyến qua IP công khai và lưu lượng truy cập đi sẽ được định tuyến qua IP riêng tư.

Trong hướng dẫn này, bạn sẽ triển khai một Mạng riêng tư toàn diện để hỗ trợ kết nối Looker với một VPC tại chỗ qua VPN có tính sẵn sàng cao. VPN này có thể được sao chép để đáp ứng các yêu cầu của bạn về khả năng kết nối nhiều đám mây và tại chỗ.

Looker (Google Cloud core) hỗ trợ IP riêng tư cho những phiên bản đáp ứng các tiêu chí sau:

Sản phẩm bạn sẽ tạo ra

Trong hướng dẫn này, bạn sẽ xây dựng một mạng Looker riêng tư toàn diện trong một VPC độc lập có khả năng kết nối kết hợp với nhiều đám mây và tại chỗ.

Bạn sẽ thiết lập một mạng VPC có tên là on-prem-vpc để biểu thị một môi trường tại chỗ. Đối với việc triển khai của bạn, on-prem-vpc sẽ không tồn tại, thay vào đó, bạn sẽ sử dụng mạng kết hợp cho trung tâm dữ liệu tại cơ sở hoặc nhà cung cấp dịch vụ đám mây.

Dưới đây là các bước chính của hướng dẫn

  1. Tạo một VPC độc lập trong us-central1
  2. Phân bổ một mạng con IP cho Private Service Access
  3. Triển khai phiên bản Looker trong VPC độc lập
  4. Tạo on-prem-vpc và mạng kết hợp
  5. Quảng cáo và xác thực dải IP của Looker qua BGP
  6. Tích hợp và xác thực hoạt động giao tiếp dữ liệu giữa Looker và Postgresql

Figure1

8436cc4802b670db.png

Kiến thức bạn sẽ học được

  • Cách tạo VPC và mạng kết hợp liên kết
  • Cách triển khai Looker trong một VPC độc lập
  • Cách tạo VPC tại chỗ và mạng kết hợp liên kết
  • Kết nối on-prem-vpc với analytics-vps qua HA VPN
  • Cách quảng cáo mạng con Looker qua mạng kết hợp
  • Cách giám sát cơ sở hạ tầng mạng kết hợp
  • Cách tích hợp cơ sở dữ liệu Postgresql với Looker Cloud Core

Bạn cần có

  • Dự án trên Google Cloud

Quyền IAM

2. Trước khi bắt đầu

Cập nhật dự án để hỗ trợ hướng dẫn

Hướng dẫn này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Thiết lập VPC

Tạo analytics-vpc

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom

Tạo on-prem-vpc

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo mạng con cơ sở dữ liệu Postgresql

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1

Cấu hình Cloud Router và NAT

Cloud NAT được dùng trong hướng dẫn cài đặt gói phần mềm vì phiên bản VM cơ sở dữ liệu không có địa chỉ IP ngoài.

Trong Cloud Shell, hãy tạo Cloud Router.

gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1

Trong Cloud Shell, hãy tạo cổng 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

Tạo thực thể kiểm thử cơ sở dữ liệu

Tạo một thực thể postgres-database sẽ được dùng để kiểm thử và xác thực khả năng kết nối với Looker.

Tạo phiên bản trong 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"

Tạo quy tắc tường lửa

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Từ 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. Quyền truy cập vào dịch vụ riêng tư

Quyền truy cập vào dịch vụ riêng tư là một kết nối riêng tư giữa mạng VPC của bạn và một mạng thuộc sở hữu của Google hoặc bên thứ ba. Google hoặc bên thứ ba, các pháp nhân cung cấp dịch vụ, còn được gọi là nhà sản xuất dịch vụ. Looker Cloud Core là một nhà sản xuất dịch vụ.

Kết nối riêng tư cho phép các phiên bản máy ảo trong mạng VPC và các dịch vụ mà bạn truy cập giao tiếp độc quyền bằng cách sử dụng địa chỉ IP nội bộ.

Ở cấp độ cao, để sử dụng quyền truy cập vào dịch vụ riêng tư, bạn phải phân bổ một dải địa chỉ IP (khối CIDR) trong mạng VPC của mình, sau đó tạo một kết nối riêng tư với nhà sản xuất dịch vụ.

Phân bổ dải địa chỉ IP cho các dịch vụ

Trước khi tạo một kết nối riêng tư, bạn phải phân bổ một dải địa chỉ IPv4 để mạng VPC của nhà sản xuất dịch vụ sử dụng. Điều này đảm bảo không có sự trùng lặp địa chỉ IP giữa mạng VPC của bạn và mạng của nhà sản xuất dịch vụ.

Khi bạn phân bổ một dải trong mạng VPC, dải đó sẽ không đủ điều kiện cho các mạng con (dải chính và dải phụ) và đích đến của các tuyến tĩnh tuỳ chỉnh.

Không hỗ trợ việc sử dụng dải địa chỉ IPv6 với quyền truy cập vào các dịch vụ riêng tư.

Bật Service Networking API cho dự án của bạn trong bảng điều khiển Cloud. Khi bật API, bạn có thể cần làm mới trang bảng điều khiển để xác nhận rằng API đã được bật.

Tạo một địa chỉ IP được phân bổ

Để chỉ định một dải địa chỉ và độ dài tiền tố (mặt nạ mạng con), hãy sử dụng các cờ địa chỉ và độ dài tiền tố. Ví dụ: để phân bổ khối CIDR 192.168.0.0/22, hãy chỉ định 192.168.0.0 cho địa chỉ và 22 cho độ dài tiền tố.

Trong Cloud Shell, hãy tạo chế độ phân bổ IP cho 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

Trong Cloud Shell, hãy xác thực việc phân bổ IP.

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Ví dụ:

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

Tạo kết nối riêng tư

Sau khi tạo một dải địa chỉ được phân bổ, bạn có thể tạo một kết nối riêng tư đến một nhà sản xuất dịch vụ, Looker Cloud Core. Kết nối riêng tư sẽ thiết lập kết nối VPC Network Peering (Kết nối ngang hàng mạng VPC) giữa mạng VPC của bạn và mạng của nhà sản xuất dịch vụ sau khi phiên bản Looker được thiết lập.

Kết nối riêng tư là mối quan hệ một-một giữa mạng VPC của bạn và một nhà sản xuất dịch vụ. Nếu một nhà sản xuất dịch vụ duy nhất cung cấp nhiều dịch vụ, bạn chỉ cần một kết nối riêng cho tất cả các dịch vụ của nhà sản xuất đó.

Nếu bạn kết nối với nhiều nhà sản xuất dịch vụ, hãy sử dụng một chỉ số phân bổ riêng cho mỗi nhà sản xuất dịch vụ. Phương pháp này giúp bạn quản lý các chế độ cài đặt mạng, chẳng hạn như các quy tắc về tuyến đường và tường lửa, cho từng nhà sản xuất dịch vụ.

Trong Cloud Shell, hãy tạo một kết nối riêng tư và ghi lại tên thao tác.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc

Ví dụ:

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.

Trong Cloud Shell, hãy kiểm tra xem thao tác có thành công hay không, thay thế OPERATION_NAME bằng tên được tạo ở bước trước.

gcloud services vpc-peerings operations describe \
    --name=OPERATION_NAME

Ví dụ:

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. Tạo một phiên bản Looker (Google Cloud core)

Trước khi bắt đầu

Bật Looker API cho dự án của bạn trong bảng điều khiển Cloud của Google. Khi bật API, bạn có thể cần làm mới trang bảng điều khiển để xác nhận rằng API đã được bật.

Thiết lập một Ứng dụng OAuth để xác thực và truy cập vào phiên bản.

Trong phần sau, bạn sẽ cần sử dụng Mã ứng dụng khách OAuth và Khoá bí mật để tạo phiên bản Looker.

Bạn không bắt buộc phải có nguồn gốc JavaScript được phép và URI chuyển hướng.

103601bca0b6ebe8.png

Trong Cloud Console, hãy tạo một phiên bản dựa trên ảnh chụp màn hình được cung cấp.

Chuyển đến LOOKER → CREATE AN INSTANCE (LOOKER → TẠO MỘT THỰC THỂ)

Điền Mã ứng dụng khách và Khoá bí mật OAuth đã tạo trước đó.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Chọn TẠO

Khi phiên bản đang được tạo, bạn sẽ được chuyển hướng đến trang Instances (Phiên bản) trong bảng điều khiển. Bạn có thể cần làm mới trang để xem trạng thái của phiên bản mới. Bạn cũng có thể xem hoạt động tạo phiên bản bằng cách nhấp vào biểu tượng thông báo trong trình đơn bảng điều khiển Google Cloud. Trong khi phiên bản của bạn đang được tạo, biểu tượng thông báo trong trình đơn bảng điều khiển Google Cloud sẽ được bao quanh bởi biểu tượng tải.

Sau khi phiên bản Looker được tạo, một URL phiên bản sẽ được tạo. Ghi lại URL.

5ac8a1b8b438dce6.png

6. Cập nhật mã ứng dụng khách OAuth 2.0

Trong phần sau, bạn sẽ cần cập nhật URI chuyển hướng được uỷ quyền của Mã ứng dụng khách OAuth đã tạo trước đó bằng cách thêm /oauth2callback vào URL của phiên bản.

Sau khi hoàn tất, bạn có thể dùng URL phiên bản để đăng nhập vào giao diện người dùng Looker.

Trong Cloud Console, hãy chuyển đến phần API VÀ DỊCH VỤ → THÔNG TIN XÁC THỰC

Chọn Mã ứng dụng khách OAuth 2.0 và cập nhật URL của phiên bản, ví dụ:

793c5b82ec34fb1f.png

7. Xác thực quyền truy cập vào Looker

Trong Cloud Console, hãy chuyển đến Looker rồi chọn URL thực thể của bạn để mở giao diện người dùng Looker.

9d132a67c532279e.png

Sau khi khởi chạy, bạn sẽ thấy trang đích như trong ảnh chụp màn hình bên dưới để xác nhận quyền truy cập vào Looker Cloud Core.

b77055fd674f8a69.png

8. Kết nối kết hợp

Trong phần sau, bạn sẽ tạo một Cloud Router cho phép bạn trao đổi các tuyến đường một cách linh hoạt giữa Đám mây riêng tư ảo (VPC) và mạng ngang hàng bằng cách sử dụng Giao thức cổng nối biên (BGP).

Cloud Router có thể thiết lập một phiên BGP qua đường hầm Cloud VPN để kết nối các mạng của bạn. Thiết bị này tự động tìm hiểu các dải địa chỉ IP mạng con mới và thông báo cho mạng ngang hàng của bạn.

Trong hướng dẫn này, bạn sẽ triển khai VPN có tính sẵn sàng cao giữa analytics-vpcon-prem-vpc để minh hoạ khả năng kết nối riêng tư với Looker.

Tạo HA VPN GW cho analytics-vpc

Khi mỗi cổng được tạo, hai địa chỉ IPv4 bên ngoài sẽ được phân bổ tự động, mỗi địa chỉ cho một giao diện cổng. Hãy ghi lại các địa chỉ IP này để sử dụng sau trong các bước định cấu hình.

Trong Cloud Shell, hãy tạo HA VPN GW

gcloud compute vpn-gateways create analytics-vpn-gw \
   --network=analytics-vpc\
   --region=us-central1

Tạo GW VPN có tính sẵn sàng cao cho on-prem-vpc

Khi mỗi cổng được tạo, hai địa chỉ IPv4 bên ngoài sẽ được phân bổ tự động, mỗi địa chỉ cho một giao diện cổng. Hãy ghi lại các địa chỉ IP này để sử dụng sau trong các bước định cấu hình.

Trong Cloud Shell, hãy tạo HA VPN GW.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

Xác thực việc tạo HA VPN GW

Trong bảng điều khiển, hãy chuyển đến mục KẾT NỐI KẾT HỢP → VPN → CỔNG VPN TRÊN ĐÁM MÂY.

a3973b2bbb832bae.png

Tạo Cloud Router cho analytics-vpc

Trong Cloud Shell, hãy tạo Cloud Router nằm ở us-central1

gcloud compute routers create analytics-cr-us-central1 \
   --region=us-central1 \
   --network=analytics-vpc\
   --asn=65001

Tạo Cloud Router cho on-prem-vpc

Trong Cloud Shell, hãy tạo Cloud Router nằm ở us-central1

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

Tạo đường hầm VPN cho analytics-vpc

Bạn sẽ tạo 2 đường hầm VPN trên mỗi cổng HA VPN.

Tạo đường hầm VPN0

Trong Cloud Shell, hãy tạo 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

Tạo đường hầm VPN1

Trong Cloud Shell, hãy tạo tunnel1:

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

Tạo đường hầm VPN cho on-prem-vpc

Bạn sẽ tạo 2 đường hầm VPN trên mỗi cổng HA VPN.

Tạo đường hầm VPN0

Trong Cloud Shell, hãy tạo 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

Tạo đường hầm VPN1

Trong Cloud Shell, hãy tạo tunnel1:

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

Xác thực việc tạo đường hầm VPN

Sử dụng bảng điều khiển, chuyển đến mục KẾT NỐI KẾT HỢP → VPN → ĐƯỜNG HẦM CLOUD VPN.

61c09b3d3102149d.png

9. Thiết lập các thiết bị lân cận BGP

Tạo phiên BGP

Trong phần này, bạn sẽ định cấu hình các giao diện Cloud Router và các thiết bị ngang hàng BGP.

Tạo giao diện BGP và kết nối ngang hàng cho analytics-vpc

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Tạo giao diện BGP và thiết lập quan hệ ngang hàng cho on-prem-vpc

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Trong Cloud Shell, hãy tạo giao diện 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

Trong Cloud Shell, hãy tạo BGP ngang hàng:

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

Chuyển đến Hybrid CONNECTIVITY → VPN (Kết nối kết hợp → VPN) để xem thông tin chi tiết về đường hầm VPN.

ddd4a8f851d44fd6.png

Xác thực các tuyến đường đã học được của analytics-vpc qua VPN có tính năng HA

Vì các đường hầm VPN có tính sẵn sàng cao và phiên BGP được thiết lập, nên các tuyến đường từ on-prem-vpc được tìm hiểu từ analytics-vpc. Sử dụng bảng điều khiển, chuyển đến VPC network → VPC networks → analytics-vpc → ROUTES → REGION → us-central1 → VIEW (Mạng VPC → Mạng VPC → analytics-vpc → TUYẾN ĐƯỜNG → KHU VỰC → us-central1 → XEM)

Quan sát analytics-vpc đã học được các tuyến đường từ on-prem-vpc database-subnet-us-central1 172.16.10.0/27

57c7898390db4bcb.png

Xác thực rằng on-prem-vpc chưa tìm hiểu các tuyến qua HA VPN

analytics-vpc không có mạng con, do đó, Cloud Router sẽ không quảng cáo bất kỳ mạng con nào cho on-prem-vpc . Sử dụng bảng điều khiển, chuyển đến VPC network → VPC networks → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW (Mạng VPC → Mạng VPC → on-prem-vpc → TUYẾN ĐƯỜNG → KHU VỰC → us-central1 → XEM)

5b007e46a7c7026.png

10. Quảng cáo mạng con Looker cho mạng nội bộ

Bộ định tuyến đám mây analytics-cr-us-central1 không tự động quảng cáo mạng con Looker Private Service Access (PSA) vì mạng con được chỉ định cho PSA chứ không phải VPC.

Bạn sẽ cần tạo một quảng cáo tuyến đường tuỳ chỉnh từ analytics-cr-central1 cho mạng con PSA 192.168.0.0/22 (psa-range-looker) sẽ được quảng cáo cho môi trường tại chỗ và được các tải sử dụng để truy cập vào Looker.

Trên bảng điều khiển, hãy chuyển đến HYBRID CONNECTIVITY (KHẢ NĂNG KẾT NỐI KẾT HỢP) → CLOUD ROUTERS (BỘ ĐỊNH TUYẾN TRÊN ĐÁM MÂY) → analytics-cr-us-central1, rồi chọn CHỈNH SỬA.

Trong phần Tuyến đường được quảng cáo, hãy chọn mục Tạo tuyến đường tuỳ chỉnh, cập nhật các trường dựa trên ví dụ bên dưới, chọn XONG rồi nhấp vào LƯU.

87f95ee3d1cd8521.png

11. Xác thực rằng VPC tại cơ sở đã tìm hiểu được mạng con Looker

Giờ đây, on-prem-vpc sẽ có thể truy cập vào mạng con PSA của Looker vì mạng con này đã được quảng cáo từ analytics-cr-us-central1 dưới dạng một quảng cáo tuyến đường tuỳ chỉnh.

Sử dụng bảng điều khiển để chuyển đến VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW

Quan sát các tuyến đường Looker được thông báo từ analytics-vpc:

a987a76fd57ddedd.png

12. Xác thực kết nối ngang hàng VPC hiện tại

Mối kết nối giữa Looker Cloud Core và analytics-vpc là thông qua tính năng kết nối ngang hàng VPC, cho phép trao đổi các tuyến đường tuỳ chỉnh được tìm hiểu thông qua BGP. Trong hướng dẫn này, analytics-vpc sẽ cần xuất bản các tuyến đường mà on-prem-vpc đã tìm hiểu được cho Looker. Để bật chức năng này, tính năng kết nối VPC ngang hàng cần được cập nhật để xuất các tuyến đường tuỳ chỉnh.

Xác thực các tuyến đường đã nhập và xuất hiện tại.

Chuyển đến MẠNG VPC → KẾT NỐI NGANG HÀNG MẠNG VPC → servicenetworking-googleapis-com

f6d9395712934cd8.png

Ảnh chụp màn hình bên dưới trình bày chi tiết về analytics-vpc nhập psa-range-looker từ mạng vpc ngang hàng do Google quản lý, servicesnetworking.

86a0e8c3534c6986.png

Chọn EXPORTED ROUTES (TUYẾN ĐƯỜNG ĐƯỢC XUẤT) không có tuyến đường nào được xuất sang mạng VPC ngang hàng vì 1) Mạng con chưa được định cấu hình trong analytics-vpc 2) Bạn chưa chọn Xuất các tuyến đường tuỳ chỉnh

a52de427fa73fb22.png

13. Cập nhật kết nối ngang hàng VPC

Chuyển đến MẠNG VPC → VPC NETWORK PEERING (Kết nối mạng VPC ngang hàng) → servicenetworking-googleapis-com → CHỈNH SỬA

Chọn XUẤT TUYẾN ĐƯỜNG TUỲ CHỈNH → LƯU

a2309e4c3a7cee80.png

14. Xác thực VPC Peering đã cập nhật

Xác thực các tuyến đường đã xuất.

Chuyển đến MẠNG VPC → KẾT NỐI NGANG HÀNG MẠNG VPC → servicenetworking-googleapis-com

Chọn EXPORTED ROUTES (TUYẾN ĐƯỜNG ĐƯỢC XUẤT) để cho biết các tuyến đường on-prem-vpc (mạng con cơ sở dữ liệu 172.16.10.0/27) được xuất sang mạng VPC ngang hàng lưu trữ Looker bằng analytics-vpc.

47e953268d78a469.png

15. Tạo cơ sở dữ liệu postgres của Looker

Trong phần sau, bạn sẽ thực hiện SSH vào VM postgres-database bằng Cloud Shell.

Trong Cloud Shell, hãy thực hiện thao tác ssh đến phiên bản postgres-database**.**

 gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

Trong hệ điều hành, hãy xác định và ghi lại địa chỉ IP (ens4) của phiên bản postgres-database.

ip a

Ví dụ:

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

Trong hệ điều hành, hãy đăng nhập vào postgresql.

sudo -u postgres psql postgres

Trong hệ điều hành, hãy nhập câu lệnh mật khẩu.

\password postgres

Trong hệ điều hành, hãy đặt mật khẩu thành postgres (nhập cùng một mật khẩu hai lần)

postgres

Ví dụ:

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: 

Trong hệ điều hành, hãy thoát postgres.

\q

Ví dụ:

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

Trong phần sau, bạn sẽ chèn địa chỉ IP của phiên bản postgres-database và mạng con Looker Private Google Access (192.168.0.0/22) vào tệp pg_hba.conf trong mục IPv4 local connections (Các kết nối cục bộ IPv4) theo ảnh chụp màn hình bên dưới:

178364a8ee9b6233.png

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

Trong phần sau, hãy bỏ chú thích postgresql.conf để nghe tất cả địa chỉ IP "*" theo ảnh chụp màn hình bên dưới:

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

Trước:

aad52092c0a9408.png

Sau:

7e80b916d29e097c.png

Trong hệ điều hành, hãy khởi động lại dịch vụ postgresql.

sudo service postgresql restart

Trong hệ điều hành, hãy xác thực trạng thái postgresql là đang hoạt động.

sudo service postgresql status

Ví dụ:

Trong hệ điều hành, hãy xác thực trạng thái postgresql là đang hoạt động.

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. Tạo cơ sở dữ liệu postgres

Trong phần sau, bạn sẽ tạo một cơ sở dữ liệu postgres có tên là postgres_looker và giản đồ looker_schema dùng để xác thực khả năng kết nối Looker với cơ sở dữ liệu tại chỗ.

Trong hệ điều hành, hãy đăng nhập vào postgres.

sudo -u postgres psql postgres

Trong hệ điều hành, hãy tạo cơ sở dữ liệu.

create database postgres_looker;

Bên trong hệ điều hành, hãy liệt kê cơ sở dữ liệu.

\l

Trong hệ điều hành, hãy tạo trình xem người dùng bằng trình xem mật khẩu

create user postgres_looker with password 'postgreslooker';

Bên trong hệ điều hành, hãy kết nối với cơ sở dữ liệu.

\c postgres_looker;

Trong hệ điều hành, hãy tạo lược đồ looker-schema rồi thoát về dấu nhắc Cloud Shell.

create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit

Ví dụ:

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

Thoát khỏi hệ điều hành, đưa bạn trở lại Cloud Shell.

\q
exit

17. Tạo Tường lửa trong on-prem-vpc

Trong phần sau, hãy tạo một tường lửa Ingress có tính năng ghi nhật ký cho phép giao tiếp giữa mạng con Looker và thực thể postgres-database.

Trong Cloud Shell, hãy tạo tường lửa 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

18. Tạo DNS riêng trong analytics-vpc

Mặc dù Looker được triển khai trong một VPC do Google quản lý, nhưng quyền truy cập vào DNS riêng tư analytics-vpc được hỗ trợ thông qua việc kết nối ngang hàng với mạng dịch vụ.

Trong phần sau, bạn sẽ tạo một Vùng DNS riêng tư trong analytics-vpc bao gồm một bản ghi A của Tên miền đủ điều kiện (postgres.analytics.com) và địa chỉ IP của phiên bản postgres-database.

Trong Cloud Shell, hãy tạo analytics.com của vùng riêng tư.

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"

Trong Cloud Shell, hãy xác định địa chỉ IP của phiên bản postgres-database.

gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:

Ví dụ:

user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
  networkIP: 172.16.10.2

Trong Cloud Shell, hãy tạo bản ghi A và nhớ thêm địa chỉ IP đã xác định trước đó.

gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"

Ví dụ:

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

Từ Cloud Shell, hãy kết nối ngang hàng dns-suffix analytics.com với mạng dịch vụ, nhờ đó cho phép Looker truy cập vào vùng riêng tư analytics-vpc.

gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.

19. Tích hợp Looker với postgres-database Postgres

Trong phần sau, bạn sẽ sử dụng Cloud Console để tạo một kết nối Cơ sở dữ liệu đến phiên bản postgres-database tại cơ sở.

Trong Cloud Console, hãy chuyển đến Looker rồi chọn URL thực thể của bạn để mở giao diện người dùng Looker.

9d132a67c532279e.png

Sau khi khởi chạy, bạn sẽ thấy trang đích như trong ảnh chụp màn hình bên dưới.

b77055fd674f8a69.png

Chuyển đến QUẢN TRỊ → CƠ SỞ DỮ LIỆU → KẾT NỐI → Chọn THÊM KẾT NỐI

Điền thông tin chi tiết về mối kết nối theo ảnh chụp màn hình bên dưới, chọn KẾT NỐI

c8cca15252c2020d.png

Kết nối đã thành công

3e51b7e2cc62fb45.png

20. Xác thực khả năng kết nối Looker

Trong phần sau, bạn sẽ tìm hiểu cách xác thực khả năng kết nối Looker với cơ sở dữ liệu postgres trong on-prem-vpc bằng cách sử dụng thao tác "kiểm thử" của Looker và TCPDUMP.

Từ Cloud Shell, hãy đăng nhập vào postgres-database nếu phiên đã hết thời gian chờ.

Trong Cloud Shell, hãy thực hiện các bước sau:

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"

Từ hệ điều hành, hãy tạo bộ lọc TCPDUMP bằng mạng con psa-range-looker 192.168.0.0/22

sudo tcpdump -i any net 192.168.0.0/22 -nn

Chuyển đến phần Kết nối dữ liệu QUẢN TRỊ → CƠ SỞ DỮ LIỆU → KẾT NỐI → Chọn → Kiểm thử

Sau khi bạn chọn Kiểm thử, Looker sẽ kết nối thành công với cơ sở dữ liệu postgres như minh hoạ bên dưới:

ef25b837b6a41fe.png

Quay lại thiết bị đầu cuối của hệ điều hành và xác thực rằng TCPDUMP đã xác định psc-range-looker đang kết nối với phiên bản postgres-database tại cơ sở.

Thêm ghi chú rằng mọi IP trong dải IP PSA sẽ xuất hiện trong 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. Đề xuất bảo mật

Có một số đề xuất về bảo mật và các phương pháp hay nhất liên quan đến việc bảo mật Looker và cơ sở dữ liệu Postgres. Các cách này bao gồm:

  • Thiết lập các quyền tài khoản cơ sở dữ liệu có đặc quyền thấp nhất cho Looker nhưng vẫn cho phép Looker thực hiện các chức năng cần thiết.
  • Dữ liệu đang truyền giữa Ứng dụng và giao diện người dùng Looker, cũng như giữa Looker và Cơ sở dữ liệu được mã hoá bằng TLS 1.2 trở lên
  • Dữ liệu tĩnh được mã hoá theo mặc định, khách hàng cũng có thể tận dụng CMEK cho các phiên bản Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) và cho Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek)
  • Quyền kiểm soát truy cập của Looker – Quản trị viên Looker có thể kiểm soát những nội dung mà một người dùng hoặc nhóm người dùng có thể xem và làm trong Looker bằng cách cấp quyền truy cập nội dung, quyền truy cập dữ liệu và quyền truy cập vào tính năng. Các lựa chọn này cho phép Quản trị viên Looker xác định các vai trò cụ thể bao gồm Mô hình và bộ quyền, đồng thời tạo quyền kiểm soát truy cập chi tiết vào dữ liệu.
  • Looker hỗ trợ cả Nhật ký kiểm tra và Nhật ký truy cập vào dữ liệu, ghi lại thông tin về người dùng, hành động, thời gian và vị trí. Nhật ký kiểm tra được bật theo mặc định, trong khi Nhật ký truy cập dữ liệu cần được bật một cách rõ ràng.
  • Hiện tại, VPC-SC hỗ trợ các thực thể Enterprise và Embed được định cấu hình chỉ bằng IP riêng tư

22. Dọn dẹp

Xoá phiên bản Looker Cloud Core, chuyển đến:

LOOKER → looker-tutorial → DELETE

e5a2e3af9e7ffd40.png

Trong Cloud Shell, hãy xoá các thành phần hướng dẫn.

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. Xin chúc mừng

Xin chúc mừng, bạn đã định cấu hình và xác thực thành công khả năng kết nối Looker thông qua mạng kết hợp, cho phép giao tiếp dữ liệu trên các môi trường tại chỗ và nhiều đám mây.

Bạn cũng có thể kiểm tra thành công khả năng kết nối Looker Cloud Core với cơ sở dữ liệu postgres bằng cách sử dụng công cụ "Kiểm thử" của Looker Connect và TCPDUMP trong phiên bản cơ sở dữ liệu postgres.

Cosmopup cho rằng các hướng dẫn rất hữu ích!!

e6d3675ca7c6911f.jpeg

Tài liệu đọc thêm và video

Tài liệu tham khảo