通过混合网络连接 Looker Cloud

1. 简介

Looker (Google Cloud Core) 支持通过 Google Cloud 控制台简化 Looker 实例的预配、配置和管理。一些实例管理任务也可以从控制台执行。

Looker (Google Cloud Core) 实例有三种可用的网络配置:

  • 公共:网络连接使用可通过互联网访问的外部 IP 地址。
  • 专用:网络连接使用 Google 托管的内部 Virtual Private Cloud (VPC) IP 地址。
  • 公共和专用:网络连接使用公共 IP 地址和专用 IP 地址,其中传入流量将通过公共 IP 路由,传出流量将通过专用 IP 路由。

在本教程中,您将部署一个全面的端到端专用网络 ,以支持 Looker 通过高可用性 VPN 连接到本地 VPC 网络,该网络可被复制以满足您对多云和本地连接的要求。

Looker (Google Cloud Core) 支持为满足以下条件的实例使用专用 IP 地址:

构建内容

在本教程中,您将在独立 VPC 中构建全面的专用 Looker 网络部署,该 VPC 具有与多云和本地的混合连接。

您将设置一个名为 on-prem-vpc 的 VPC 网络来表示本地环境。在部署过程中,本地 vCPU 并不存在,而是使用与本地数据中心或云服务提供商的混合网络。

以下是本教程中的主要步骤

  1. 在 us-central1 中创建一个独立 VPC
  2. 为专用服务访问通道分配一个 IP 子网
  3. 在独立 VPC 中部署 Looker 实例
  4. 创建 on-prem-vpc 和混合网络
  5. 通过 BGP 通告和验证 Looker IP 范围
  6. 集成并验证 Looker 和 Postgresql 数据通信

Figure1

8436cc4802b670db

学习内容

  • 如何创建 VPC 和关联的混合网络
  • 如何在独立的 VPC 中部署 Looker
  • 如何创建 On-Prem-vpc 和关联的混合网络
  • 通过高可用性 VPN 将 on-prem-vpc 与 analytics-vps 相连
  • 如何通过混合网络通告 Looker 子网
  • 如何监控混合网络基础架构
  • 如何将 Postgresql 数据库与 Looker Cloud Core 集成

所需条件

  • Google Cloud 项目

IAM 权限

2. 准备工作

更新项目以支持本教程

本教程利用 $variables 辅助在 Cloud Shell 中实现 gcloud 配置。

在 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 安装软件包,因为数据库虚拟机实例没有外部 IP 地址。

在 Cloud Shell 中,创建 Cloud Router 路由器。

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

在 Cloud Shell 中,创建 NAT 网关。

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

创建数据库测试实例

创建一个 postgres-database 实例,该实例将用于测试和验证与 Looker 的连接。

在 Cloud Shell 中,创建实例。

gcloud compute instances create postgres-database \
    --project=$projectid \
    --zone=us-central1-a \
    --machine-type=e2-medium \
    --subnet=database-subnet-us-central1 \
    --no-address \
   --image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

创建防火墙规则

要允许 IAP 连接到您的虚拟机实例,请创建以下防火墙规则:

  • 适用于您希望可以使用 IAP 访问的所有虚拟机实例。
  • 允许来自 IP 范围 35.235.240.0/20 的入站流量。此范围包含 IAP 用于 TCP 转发的所有 IP 地址。

通过 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 是服务提供方。

通过专用连接,VPC 网络中的虚拟机实例和您访问的服务可以使用内部 IP 地址进行专有的通信。

概括来讲,若要使用专用服务访问通道,您必须在 VPC 网络中分配一个 IP 地址范围(CIDR 块),然后创建连接到服务提供方的专用连接

为服务分配 IP 地址范围

创建专用连接之前,您必须分配一个 IPv4 地址范围,以供服务提供方的 VPC 网络使用。这可确保您的 VPC 网络与服务提供方的网络不发生 IP 地址冲突。

当您在 VPC 网络中分配范围时,该范围不能用于子网(主要范围和次要范围)和自定义静态路由的目标。

不支持将 IPv6 地址范围用于专用服务访问通道。

在 Google Cloud 控制台中为您的项目启用 Service Networking API。启用该 API 时,您可能需要刷新控制台页面,确认该 API 是否已启用。

创建 IP 分配

要指定地址范围和前缀长度(子网掩码),请使用地址和前缀长度标志。举例来说,如要分配 CIDR 地址块 192.168.0.0/22,请为地址指定 192.168.0.0,为前缀长度指定 22。

在 Cloud Shell 中,为 Looker 创建 IP 分配。

gcloud compute addresses create psa-range-looker \
    --global \
    --purpose=VPC_PEERING \
    --addresses=192.168.0.0 \
    --prefix-length=22 \
    --description="psa range for looker" \
    --network=analytics-vpc

在 Cloud Shell 中,验证 IP 分配。

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

示例:

userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION: 
SUBNET: 
STATUS: RESERVED

创建专用连接

创建分配的范围后,您可以创建到服务提供方 Looker Cloud Core 的专用连接。建立 Looker 实例后,专用连接会在您的 VPC 网络与服务提供方的网络之间建立 VPC 网络对等互连连接。

专用连接在您的 VPC 网络与服务提供方之间提供一对一关系。如果单个服务提供方提供多种服务,您只需一个专用连接即可用于提供方的所有服务。

如果您连接到多个服务提供方,请为每个服务提供方使用唯一的分配。这有助于您管理各个服务提供方的网络设置,例如路由和防火墙规则。

在 Cloud Shell 中,创建一个专用连接,记下操作名称。

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

示例:

user@cloudshell$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

在 Cloud Shell 中,检查操作是否成功,将 OPERATION_NAME 替换为上一步中生成的名称。

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

示例:

user@cloudshell$ gcloud services vpc-peerings operations describe \
    --name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

5. 创建 Looker (Google Cloud Core) 实例

准备工作

在 Google Cloud 控制台中为您的项目启用 Looker API 。启用该 API 时,您可能需要刷新控制台页面,确认该 API 是否已启用。

设置 OAuth 客户端以进行身份验证和访问实例。

在下一部分,您需要使用 OAuth 客户端 ID 和密钥来创建 Looker 实例。

已获授权的 JavaScript 来源和重定向 URI 不是必需的。

103601bca0b6ebe8

在 Cloud 控制台内,根据提供的屏幕截图创建实例。

导航到 LOOKER → 创建实例

填充之前创建的 OAuth 客户端 ID 和密钥。

b780ed751824176c.png

3fe880e26a81a756

91acffd74c68a067

选择创建

在创建实例时,系统会将您重定向到控制台中的实例页面。您可能需要刷新页面以查看新实例的状态。您也可以点击 Google Cloud 控制台菜单中的通知图标来查看实例创建活动。在系统创建实例的过程中,Google Cloud 控制台菜单中的通知图标会显示“正在加载”图标。

创建 Looker 实例后,系统会生成一个实例网址。记下网址。

5ac8a1b8b438dce6

6. 更新 OAuth 2.0 客户端 ID

在下面的部分中,您需要将 /oauth2callback 附加到实例网址,以更新之前创建的 OAuth 客户端 ID 已获授权的重定向 URI

完成后,您就可以使用实例网址登录 Looker 界面。

在 Cloud 控制台中,前往 API 和服务 → 凭据

选择您的 OAuth 2.0 客户端 ID 并更新您的实例网址,如下所示:

793c5b82ec34fb1f

7. 验证 Looker 访问权限

在 Cloud 控制台中,前往 Looker,然后选择将打开 Looker 界面的实例网址。

9d132a67c532279e

启动后,系统会按照以下屏幕截图显示着陆页,确认您对 Looker Cloud Core 的访问权限。

b77055fd674f8a69.png

8. 混合连接

在下一部分中,您将创建一个 Cloud Router 路由器,以便使用边界网关协议 (BGP) 在虚拟私有云 (VPC) 和对等网络之间动态交换路由。

Cloud Router 可以通过 Cloud VPN 隧道设置 BGP 会话,以连接到您的网络。它会自动获知新的子网 IP 地址范围,并将其通告给您的对等网络。

在本教程中,您将在 analytics-vpcon-prem-vpc 之间部署高可用性 VPN,以说明与 Looker 的专用连接。

analytics-vpc 创建高可用性 VPN GW

每个网关创建后,系统会自动分配两个外部 IPv4 地址,每个网关接口各一个。记下这些 IP 地址,以便稍后在配置步骤中使用。

在 Cloud Shell 中,创建高可用性 VPN GW

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

on-prem-vpc 创建高可用性 VPN 网关

每个网关创建后,系统会自动分配两个外部 IPv4 地址,每个网关接口各一个。记下这些 IP 地址,以便稍后在配置步骤中使用。

在 Cloud Shell 中,创建高可用性 VPN GW。

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

验证高可用性 VPN 网关的创建

在控制台中,依次转到“混合连接”→“VPN”→“Cloud VPN 网关”。

a3973b2bbb832bae.png

为 analytics-vpc 创建 Cloud Router 路由器

在 Cloud Shell 中,创建位于 us-central1 的 Cloud Router 路由器

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

为 on-prem-vpc 创建 Cloud Router 路由器

在 Cloud Shell 中,创建位于 us-central1 的 Cloud Router 路由器

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

为 analytics-vpc 创建 VPN 隧道

您将在每个高可用性 VPN 网关上创建两个 VPN 隧道。

创建 VPN 隧道 0

在 Cloud Shell 中,创建 tunnel0:

gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 0

创建 VPN 隧道 1

在 Cloud Shell 中,创建 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

为 on-prem-vpc 创建 VPN 隧道

您将在每个高可用性 VPN 网关上创建两个 VPN 隧道。

创建 VPN 隧道 0

在 Cloud Shell 中,创建 tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

创建 VPN 隧道 1

在 Cloud Shell 中,创建 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

验证 VPN 隧道创建

在控制台中,依次前往“混合连接”→“VPN”→“Cloud VPN 隧道”。

61c09b3d3102149d

9. 建立 BGP 邻居

创建 BGP 会话

在本部分中,您将配置 Cloud Router 路由器接口和 BGP 对等端。

为 analytics-vpc 创建 BGP 接口和对等互连

在 Cloud Shell 中,创建 BGP 接口:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel0 \
    --region us-central1

在 Cloud Shell 中,创建 BGP 对等端:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

在 Cloud Shell 中,创建 BGP 接口:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel1 \
    --region us-central1

在 Cloud Shell 中,创建 BGP 对等端:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

为 on-prem-vpc 创建 BGP 接口和对等互连

在 Cloud Shell 中,创建 BGP 接口:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-analytics-vpc \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

在 Cloud Shell 中,创建 BGP 对等端:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel0 \
    --interface if-tunnel1-to-analytics-vpc \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

在 Cloud Shell 中,创建 BGP 接口:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-analytics-vpc \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

在 Cloud Shell 中,创建 BGP 对等端:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel1\
    --interface if-tunnel2-to-analytics-vpc \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

导航到混合连接 → VPN 以查看 VPN 隧道详细信息。

ddd4a8f851d44fd6.png

验证通过高可用性 VPN 的 analytics-VPC 已知路由

由于高可用性 VPN 隧道和 BGP 会话已建立,因此来自 on-prem-vpc 的路由会从 analytics-vpc 获知。使用控制台导航到 VPC 网络 → VPC 网络 → analytics-vpc → ROUTES → REGION → us-central1 → 查看

观察 analytics-vpc 从 on-prem-vpc database-subnet-us-central1 172.16.10.0/27 获知的路由

57c7898390db4bcb.png

验证 on-prem-vpc 尚未通过高可用性 VPN 获知路由

analytics-vpc 没有子网,因此 Cloud Router 不会向 on-prem-vpc 通告任何子网。使用控制台,依次前往 VPC 网络 → VPC 网络 → on-prem-vpc → ROUTES → REGION → us-central1 → 查看

5b007e46a7c7026

10. 将 Looker 子网通告到本地

analytics-cr-us-central1 Cloud Router 路由器不会自动通告 Looker 专用服务访问通道 (PSA) 子网,因为该子网分配给 PSA,而不是 VPC。

您需要从 analytics-cr-central1 为 PSA 子网 192.168.0.0/22 (psa-range-looker) 创建自定义路由通告,该通告将通告到本地环境,并供工作负载用于访问 Looker。

从控制台导航到混合连接 → 云路由 → analytics-cr-us-central1,然后选择修改

在“通告的路由”部分,选择创建自定义路由选项,根据以下示例更新字段,选择完成,然后点击保存

87f95ee3d1cd8521

11. 验证 on-prem-vpc 是否已获知 Looker 子网

on-prem-vpc 现在可以访问 Looker PSA 子网,因为它已作为自定义路由通告从 analytics-cr-us-central1 进行通告。

在控制台中,依次前往 VPC 网络 → VPC 网络 → on-prem-vpc → ROUTES → REGION → us-central1 → 查看

查看通过 analytics-vpc 通告的 Looker 路由:

a987a76fd57ddedd.png

12. 验证当前 VPC 对等互连

Looker Cloud Core 与 analytics-vpc 之间的连接是通过 VPC 对等互连进行连接,允许交换通过 BGP 获知的自定义路由。在本教程中,analytics-vpc 需要将 on-prem-vpc 获知的路由发布到 Looker。如需启用此功能,VPC 对等互连需要更新才能导出自定义路由。

验证当前导入和导出的路由。

前往 VPC 网络 → VPC 网络对等互连 → servicenetworking-googleapis-com

f6d9395712934cd8.png

以下屏幕截图详细介绍了 analytics-vpc 从 Google 管理的对等互连 VPC 网络 servicesnetworking 导入 psa-range-looker 的过程。

86a0e8c3534c6986

选择“导出路由”确认没有将路由导出到对等 VPC 网络,因为 1) analytics-vpc 中未配置子网 2) 未选择“导出自定义路由”

a52de427fa73fb22.png

13. 更新 VPC 对等互连

前往 VPC 网络 → VPC 网络对等互连 → servicenetworking-googleapis-com → 修改

选择导出自定义路线 → 保存

a2309e4c3a7cee80.png

14. 验证更新后的 VPC 对等互连

验证导出的路由。

前往 VPC 网络 → VPC 网络对等互连 → servicenetworking-googleapis-com

选择“导出路由”后,analytics-vpc 会将 on-prem-vpc 路由(数据库子网 172.16.10.0/27)导出到托管 Looker 的对等互连 VPC 网络。

47e953268d78a469

15. Looker Postgres-database 创建

在下一部分,您将使用 Cloud Shell 通过 SSH 连接到 postgres-database 虚拟机。

在 Cloud Shell 中,通过 SSH 连接到 postgres-database 实例**。**

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

在操作系统内,识别并记下 postgres-database 实例的 IP 地址 (ens4)。

ip a

示例:

user@postgres-database:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 172.16.10.2/32 metric 100 scope global dynamic ens4
       valid_lft 84592sec preferred_lft 84592sec
    inet6 fe80::4001:acff:fe10:a02/64 scope link 
       valid_lft forever preferred_lft forever

在操作系统中,登录 postgresql。

sudo -u postgres psql postgres

在操作系统中,输入密码提示。

\password postgres

在操作系统中,将密码设置为 postgres(输入两次相同的密码)

postgres

示例:

user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.

postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 

在操作系统中,退出 postgres。

\q

示例:

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

在下一部分中,您将在 IPv4 本地连接下的 pg_hba.conf 文件中插入 postgres-database 实例 IP 地址和 Looker 专用 Google 访问通道子网 (192.168.0.0/22),具体如以下屏幕截图所示:

178364a8ee9b6233

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

在下一部分中,取消对 postgresql.conf 的注释,以监听所有“*”IP 地址如以下屏幕截图所示:

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

Before:

aad52092c0a9408.png

之后:

7e80b916d29e097c

在操作系统中,重启 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_looker 的 postgres 数据库,以及用于验证 Looker 与本地连接的架构 looker_schema。

在操作系统中,登录 postgres。

sudo -u postgres psql postgres

在操作系统中,创建数据库。

create database postgres_looker;

在操作系统中,列出数据库。

\l

在操作系统内,使用密码 Looker 创建用户 Looker

create user postgres_looker with password 'postgreslooker';

在操作系统内,连接到数据库。

\c postgres_looker;

在操作系统中,创建架构 Looker 并退出到 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 中创建防火墙

在下一部分,创建具有日志记录的 Ingress 防火墙,以允许 Looker 子网与 postgres-database 实例进行通信。

在 Cloud Shell 中,创建 on-prem-vpc 防火墙。

gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging

18. 在 analytics-vpc 中创建专用 DNS

虽然 Looker 部署在 Google 管理的 VPC 中,但支持通过与服务网络的对等互连来访问 analytics-vpc 专用 DNS。

在接下来的部分中,您将在 analytics-vpc 中创建一个专用 DNS 区域,该区域包含 postgres-database 实例的完全限定域名(postgres.analytics.com) 和 IP 地址)的 A 记录。

在 Cloud Shell 中,创建专用区域 analytics.com。

gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"

在 Cloud Shell 中,确定 postgres-database 实例的 IP 地址。

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 postgres-database 集成

在下一部分中,您将使用 Cloud 控制台创建与本地 postgres-database 实例的数据库连接。

在 Cloud 控制台中,前往 Looker,然后选择将打开 Looker 界面的实例网址。

9d132a67c532279e

启动后,您将看到如以下屏幕截图所示的着陆页。

b77055fd674f8a69.png

依次点击管理 → 数据库 → 连接 → 选择添加连接

根据下面的屏幕截图填写连接详情,然后选择连接

c8cca15252c2020d.png

现已成功连接

3e51b7e2cc62fb45

20. 验证 Looker 连接

在下一部分,您将学习如何使用 Looker“test”验证 Looker 与 on-prem-vpc 中的 postgres-database 的连接操作和 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"

在操作系统中,使用 psa-range-looker 子网 192.168.0.0/22 创建 TCPDUMP 过滤器

sudo tcpdump -i any net 192.168.0.0/22 -nn

依次转到“数据连接”管理 → 数据库 → 连接 → 选择 → 测试

选择“Test”后,Looker 将成功连接到 postgres-database,如下所示:

ef25b837b6a41fe.png

导航回操作系统终端,并验证 TCPDUMP 是否已确定 psc-range-looker 正在连接到本地 postgres-database 实例。

添加备注,说明 PSA 范围中的任何 IP 都会显示来自 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 设置权限最低的数据库账号权限,以使 Looker 仍能执行所需功能。
  • 数据在客户端和 Looker 界面与 Looker 之间传输至数据库,并采用 TLS 1.2+ 加密
  • 静态数据默认会加密,客户还可以将 CMEK 用于 Looker 实例 ( https://cloud.google.com/looker/docs/looker-core-cmek) 和 Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek)。
  • Looker 访问权限控制 - Looker 管理员可以通过授予内容访问权限、数据访问权限和功能访问权限,控制一个原则或一组用户可以在 Looker 中查看的内容和可执行的操作。通过这些选项,Looker 管理员可以定义特定角色(包括模型和权限集),并创建精细的数据访问权限控制。
  • Looker 支持审核日志和数据访问日志,记录哪些人在何时何处执行了哪些操作。默认情况下,审核日志处于启用状态,而数据访问日志需要明确启用
  • 目前 VPC-SC 支持仅配置了 专用 IP 的 Enterprise 和 Embed 实例

22. 清理

删除 Looker Cloud Core 实例,然后前往:

LOOKER → looker-tutorials → 删除

e5a2e3af9e7ffd40.png

从 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 连接,从而实现了跨本地和多云环境的数据通信。

您还能够使用 Lookers Connect“测试”成功测试 Looker Cloud Core 与 postgres-database 的连接工具和 TCPDUMP 都可以在 postgres-database 实例中使用。

Cosmopup 认为教程很棒!!

e6d3675ca7c6911f.jpeg

补充阅读材料和视频

参考文档