Looker PSC Southbound Hybrid NEG к локальной сети

1. Введение

В этом практическом задании вы выполните подключение к локальной базе данных PostgreSQL через H-VPN, используя внутренний балансировщик нагрузки TCP-прокси и группу конечных точек гибридной сети, вызываемую из Looker PSC в качестве потребителя услуг.

Private Service Connect — это функция сетевых возможностей Google Cloud, которая позволяет потребителям получать доступ к управляемым сервисам в частном порядке из своей сети VPC. Аналогичным образом, она позволяет производителям управляемых сервисов размещать эти сервисы в своих отдельных сетях VPC и предлагать своим потребителям частное соединение. Например, при использовании Private Service Connect для доступа к Looker вы являетесь потребителем сервиса, а Google — производителем сервиса, как показано на рисунке 1.

Рисунок 1.

145ea4672c3a3b14.png

Доступ с юга, также известный как обратный PSC, позволяет потребителю создать опубликованную службу в качестве производителя, чтобы предоставить Looker доступ к конечным точкам в локальной сети, в VPC, к управляемым службам и гибридной среде. Подключения с юга могут быть развернуты в любом регионе, независимо от того, где развернут Looker PSC, как показано на рисунке 2.

Рисунок 2.

259493afd914f68b.png

Что вы узнаете

  • Требования к сети
  • Создайте сервис для работы с частными сервисами.
  • Создайте конечную точку Private Service Connect в Looker.
  • Установите соединение с локальной базой данных PostgreSQL из Looker, используя функцию проверки соединения.

Что вам понадобится

def88091b42bfe4d.png

2. Что вы построите

Вы создадите сеть Producer, looker-psc-demo, для развертывания внутреннего балансировщика нагрузки TCP-прокси и гибридной сети NEG, опубликованной в качестве сервиса через Private Service Connect (PSC). Для демонстрации локальной базы данных вы развернете VPC on-prem-demo, подключенную к VPC looker-psc-demo с использованием HA-VPN.

Для проверки доступа к сервису Producer необходимо выполнить следующие действия:

  • Создайте в Looker конечную точку PSC, связанную с подключением к службе производителя.
  • Используйте консоль Looker для проверки подключения к локальной базе данных PostgreSQL.

3. Требования к сети

Ниже приведено описание сетевых требований для сети производителя; потребителем в данном практическом задании является экземпляр Looker PSC.

Компоненты

Описание

VPC (looker-psc-demo)

Пользовательский режим VPC

VPC (локальная демонстрационная версия)

Пользовательский режим VPC

Подсеть NAT PSC

Пакеты из потребительской сети VPC преобразуются с помощью NAT источника (SNAT), так что их исходные IP-адреса преобразуются в IP-адреса из подсети NAT в сети VPC производителя.

подсеть правил пересылки PSC

Используется для выделения IP-адреса для регионального внутреннего балансировщика нагрузки TCP-прокси.

Подсеть PSC NEG

Используется для выделения IP-адреса группе сетевых конечных точек.

Подсеть только для прокси

Каждому прокси-серверу балансировщика нагрузки присваивается внутренний IP-адрес. Пакеты, отправляемые с прокси-сервера на виртуальную машину или конечную точку бэкэнда, имеют исходный IP-адрес из подсети, предназначенной только для прокси-серверов.

Гибридный NEG

Локальные и другие облачные сервисы обрабатываются так же, как и любые другие бэкэнды облачной балансировки нагрузки. Ключевое отличие заключается в том, что для настройки конечных точек этих бэкэндов используется гибридный интерфейс NEG . Конечные точки должны представлять собой допустимые комбинации IP-адреса и порта, к которым ваш балансировщик нагрузки может получить доступ, используя гибридные продукты подключения, такие как Cloud VPN или Cloud Interconnect.

Бэкенд-сервис

Бэкенд-сервис выступает в качестве связующего звена между вашим балансировщиком нагрузки и вашими бэкенд-ресурсами. В данном руководстве бэкенд-сервис связан с гибридной системой NEG.

Облачный маршрутизатор

  • Облачная NAT использует облачные маршрутизаторы для обеспечения возможностей плоскости управления, но не для управления сессиями BGP.
  • Облачный маршрутизатор используется для установления BGP-соединения для обеспечения высокой доступности (HA-VPN) между VPC psc-looker-demo и on-prem-demo.

HA-VPN

Высокодоступный VPN между сетями Google Cloud VPC . В этой топологии вы можете соединить две сети Google Cloud VPC, используя шлюз HA VPN в каждой сети. Сети VPC могут находиться в одном регионе или в нескольких регионах.

Облачный NAT

Используется локальной демонстрационной VPC для исходящего трафика в интернет.

4. Топология Codelab

79aeb28b38f237da.png

5. Настройка и требования

Настройка среды для самостоятельного обучения

  1. Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как PROJECT_ID ). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта.
  • К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
  1. Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

В консоли Google Cloud нажмите на значок Cloud Shell на панели инструментов в правом верхнем углу:

55efc1aaa7a4d3ad.png

Подготовка и подключение к среде займут всего несколько минут. После завершения вы должны увидеть примерно следующее:

7ffe5cbb04455448.png

Эта виртуальная машина содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Вся работа в этом практическом задании может выполняться в браузере. Вам не нужно ничего устанавливать.

6. Прежде чем начать

Включить API

Внутри Cloud Shell убедитесь, что идентификатор вашего проекта указан правильно:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Включите все необходимые службы:

gcloud services enable compute.googleapis.com

7. Создайте сеть VPC для производителей.

Сеть VPC

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Создание подсетей

Подсеть PSC будет связана с подключением к сервису PSC для целей преобразования сетевых адресов.

Внутри Cloud Shell создайте подсеть PSC NAT:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

Внутри Cloud Shell создайте подсеть правила пересылки производителя:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Внутри Cloud Shell создайте подсеть, предназначенную только для регионального прокси-сервера производителя:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Зарезервировать IP-адрес балансировщика нагрузки

Внутри Cloud Shell зарезервируйте внутренний IP-адрес для балансировщика нагрузки:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

Внутри Cloud Shell можно просмотреть зарезервированный IP-адрес.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Пример выходных данных:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Настройка гибридного NEG

Создайте гибридную сеть NEG и установите параметр –network-endpoint-type в значение NON_GCP_PRIVATE_IP_PORT.

Внутри Cloud Shell создайте гибридную среду NEG, используемую для доступа к локальной базе данных:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

В Cloud Shell обновите Hybrid NEG, указав IP-адрес и порт локальной базы данных: 192.168.10.4 и порт 5432, которые будут сгенерированы на следующем шаге руководства:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Создайте региональную проверку состояния здоровья.

Внутри Cloud Shell создайте проверку работоспособности, которая будет проверять порт локальной базы данных, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Создание политики и правил сетевого брандмауэра

Внутри Cloud Shell выполните следующие действия:

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Следующее правило брандмауэра разрешает трафик из диапазона подсетей NAT PSC ко всем экземплярам в сети.

Внутри Cloud Shell выполните следующие действия:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Создать сервис для производителей.

Создание компонентов балансировки нагрузки

Внутри Cloud Shell создайте серверную службу:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

Внутри Cloud Shell добавьте бэкэнд Hybrid NEG к серверной службе:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

В Cloud Shell создайте целевой TCP-прокси для маршрутизации запросов к вашему бэкэнд-сервису:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

В приведенном ниже синтаксисе создайте правило пересылки (внутренний балансировщик нагрузки TCP-прокси).

В оболочке Cloud Shell выполните следующие действия:

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Создать вложение услуги

Внутри Cloud Shell создайте подключение к службе: onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Далее получите и запишите вложение службы, указанное в URI selfLink, начинающемся с projects, чтобы настроить конечную точку PSC в Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

Внутри Cloud Shell выполните следующие действия:

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Пример ожидаемого результата:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

В консоли Cloud перейдите по следующему пути:

Сетевые службы → Подключение к частной службе → Опубликованные службы

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Установите соединение с конечной точкой PSC в Looker.

В следующем разделе вы свяжете сервис Producers Service Attachment с Looker Core PSC, используя флаги –psc-service-attachment в Cloud Shell для одного домена.

Внутри Cloud Shell создайте связь с psc, обновив следующие параметры в соответствии с вашей средой:

  • INSTANCE_NAME: Имя вашего экземпляра Looker (ядро Google Cloud).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI, полученный при создании вложения службы, onpremdatabase1-svc-attachment
  • РЕГИОН: Регион, в котором размещен ваш экземпляр Looker (ядро Google Cloud).

Внутри Cloud Shell выполните следующие действия:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Пример:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

Внутри Cloud Shell убедитесь, что connectionStatus службы serviceAttachments имеет значение "ACCEPTED", и обновите его, указав имя вашего экземпляра Looker PSC:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Пример:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Пример:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Проверьте конечную точку PSC в Cloud Console.

В консоли Cloud Console можно проверить подключение к PSC.

В консоли Cloud перейдите по следующему пути:

Looker → Looker Instance → Details

2d4684d722d31e4b.png

993cdaf748f4c030.png

Создайте локальную сеть VPC.

Сеть VPC

Внутри Cloud Shell выполните следующие действия:

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

Создайте подсеть для базы данных PostgreSQL.

Внутри Cloud Shell выполните следующие действия:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Внутри Cloud Shell зарезервируйте внутренний IPv4-адрес, используемый для onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Создайте облачный маршрутизатор для локальной демонстрационной VPC.

В данном руководстве для установки программных пакетов используется Cloud NAT, поскольку у экземпляра виртуальной машины нет внешнего IP-адреса.

Внутри Cloud Shell создайте Cloud Router, используемый с Cloud NAT и HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Внутри Cloud Shell создайте NAT-шлюз:

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

Создайте экземпляр для тестирования базы данных.

Создайте экземпляр базы данных postgres, который будет использоваться для тестирования и проверки подключения к Looker.

Внутри Cloud Shell создайте экземпляр:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Создание политики и правил сетевого брандмауэра

Внутри Cloud Shell выполните следующие действия:

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Чтобы разрешить IAP подключаться к вашим виртуальным машинам, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, к которым вы хотите обеспечить доступ с помощью IAP.
  • Разрешает входящий трафик из диапазона IP-адресов 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP-трафика.

Внутри Cloud Shell выполните следующие действия:

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

Следующее правило брандмауэра разрешает трафик из диапазона подсетей, предназначенных только для прокси-сервера, ко всем экземплярам в сети.

Внутри Cloud Shell выполните следующие действия:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

10. Гибридная связь

В следующем разделе вы создадите облачный маршрутизатор, который позволит вам динамически обмениваться маршрутами между вашей виртуальной частной сетью (VPC) и соседней сетью с использованием протокола Border Gateway Protocol (BGP) .

Cloud Router может установить BGP-сессию через туннель Cloud VPN для соединения ваших сетей. Он автоматически изучает новые диапазоны IP-адресов подсетей и сообщает о них вашей партнерской сети.

На следующих шагах вы развернете HA VPN между VPC looker-psc-demo и VPC on-prem-demo, чтобы продемонстрировать подключение Hybrid NEG к onprem.database1.com.

Создайте шлюз HA VPN для looker-psc-demo.

При создании каждого шлюза автоматически выделяются два внешних IPv4-адреса, по одному для каждого интерфейса шлюза.

Внутри Cloud Shell создайте шлюз HA VPN:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Создайте шлюз VPN высокой доступности для демонстрации в локальной среде.

При создании каждого шлюза автоматически выделяются два внешних IPv4-адреса, по одному для каждого интерфейса шлюза.

Внутри Cloud Shell создайте шлюз HA VPN:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

Проверка создания шлюза HA VPN

С помощью консоли перейдите в раздел HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS.

7f1b504616504866.png

Создайте облачный маршрутизатор для looker-psc-demo.

Внутри Cloud Shell создайте Cloud Router:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Создайте VPN-туннели для looker-psc-demo

Вам потребуется создать два VPN-туннеля на каждом VPN-шлюзе высокой доступности.

Создать VPN-туннель0

Внутри Cloud Shell создайте туннель tunnel0:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

Создать VPN-туннель1

Внутри Cloud Shell создайте туннель 1:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Создайте VPN-туннели для локальной демонстрационной версии.

Вам потребуется создать два VPN-туннеля на каждом VPN-шлюзе высокой доступности.

Создать VPN-туннель0

Внутри Cloud Shell создайте туннель tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

Создать VPN-туннель1

Внутри Cloud Shell создайте туннель 1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Проверка создания VPN-туннеля

В консоли перейдите в раздел HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS.

c2fcb340a7614070.png

11. Установите BGP-соседей.

Создание интерфейса BGP и установление пиринговых соединений для looker-psc-demo.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

Внутри Cloud Shell создайте BGP-пир:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

Внутри Cloud Shell создайте BGP-пир:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Создание интерфейса BGP и установление пиринговых соединений для локальной демонстрационной версии.

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

Внутри Cloud Shell создайте BGP-пир:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

Внутри Cloud Shell создайте интерфейс BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

Внутри Cloud Shell создайте BGP-пир:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Для просмотра сведений о VPN-туннеле перейдите в раздел Hybrid CONNECTIVITY → VPN .

78ab590317919bf5.png

Проверка маршрутов, изученных looker-psc-demo, через HA VPN

Теперь, когда установлены VPN-туннели высокой доступности и сессии BGP, Cloud Router по умолчанию объявляет маршруты подсети. Посмотреть изученные маршруты looker-psc-demo.

В консоли перейдите в раздел Сеть VPC → Сети VPC → looker-psc-demo → МАРШРУТЫ → РЕГИОН → ВИД

Обратите внимание, что looker-psc-demo узнал подсеть базы данных 192.168.10.0/28 из локальной VPC-сети demo.

c11a11ed8b0491c8.png

Убедитесь, что VPC в локальной демонстрационной версии (on-prem-demo) изучила маршруты через VPN высокой доступности (HA).

Поскольку по умолчанию Cloud Router объявляет все подсети, подсеть, предназначенная только для прокси, объявляется по протоколу BGP. Hybrid NEG будет использовать подсеть, предназначенную только для прокси, в качестве исходного адреса при взаимодействии с сервером onprem.database1.com.

Observe on-prem-demo получил от looker-psc-demo доступ к подсети proxy-only-subnet 10.10.10.0/24.

В консоли перейдите в раздел Сеть VPC → Сети VPC → on-prem-demo → МАРШРУТЫ → РЕГИОН → ВИД

b0073faed026931f.png

12. Создание базы данных PostgreSQL с помощью Looker

В следующем разделе вы выполните подключение по SSH к виртуальной машине postgres-database с помощью Cloud Shell.

Внутри Cloud Shell выполните SSH-подключение к экземпляру базы данных postgres:

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Внутри операционной системы определите и запишите IP-адрес (ens4) экземпляра базы данных postgres:

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 noprefixroute 
       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:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/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: 

Внутри операционной системы выполните команду `out postgres`:

\q

Пример:

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

В следующем разделе вам нужно будет указать IP-адрес вашего экземпляра базы данных PostgreSQL (192.168.10.4) и подсеть только для прокси (10.10.10.0/24) в файле pg_hba.conf в разделе локальных подключений IPv4.

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

На скриншоте ниже показано завершенное обновление: eaff2ed6d27fa7cc.png

В следующем разделе раскомментируйте файл postgresql.conf, чтобы он прослушивал все IP-адреса, обозначенные символом '*', как показано на скриншоте ниже:

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

До:

65e0b1074dc48644.png

После:

14a0d1fa5455e23e.png

Внутри операционной системы перезапустите службу 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 Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Создайте базу данных PostgreSQL.

В следующем разделе вы создадите базу данных PostgreSQL с именем postgres_looker и схемой looker_schema, используемой для проверки подключения Looker к локальной сети.

Внутри операционной системы войдите в PostgreSQL:

sudo -u postgres psql postgres

Внутри операционной системы создайте базу данных:

create database postgres_looker;

Внутри операционной системы выведите список баз данных:

\l

Внутри операционной системы создайте пользователя postgres_looker с паролем postgreslooker:

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

Exit from the OS, returning you to cloud shell:

\q

Пример:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
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 table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Интеграция Looker с базой данных Postgres postgres-database

В следующем разделе вы будете использовать консоль Looker для создания подключения к базе данных PostgreSQL, расположенной в локальной сети.

Перейдите в раздел АДМИНИСТРИРОВАНИЕ → БАЗЫ ДАННЫХ → ПОДКЛЮЧЕНИЯ → Выберите ДОБАВИТЬ ПОДКЛЮЧЕНИЕ

Заполните данные для подключения в соответствии со скриншотом ниже, затем выберите ПОДКЛЮЧИТЬСЯ.

5900fdf0b698cbfc.png

Соединение настроено.

4817157fd3b1277e.png

15. Проверьте подключение Looker.

В следующем разделе вы узнаете, как проверить подключение Looker к базе данных postgres в локальной VPC с помощью действия Looker 'test' и TCPDUMP.

Если время сеанса истекло, войдите в базу данных postgres через Cloud Shell.

Внутри Cloud Shell выполните следующие действия:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

В операционной системе создайте фильтр TCPDUMP с подсетью 10.10.10.0/24, предназначенной только для прокси-сервера.

sudo tcpdump -i any net 10.10.10.0/24 -nn

Перейдите в раздел «Подключения к данным» АДМИНИСТРАЦИЯ → БАЗЫ ДАННЫХ → ПОДКЛЮЧЕНИЯ → postgres-database → Тест

После выбора параметра «Тест» Looker подключится к базе данных PostgreSQL, как показано ниже:

774f9313ece41034.png

Уборка

Из одного терминала Cloud Shell удалите компоненты лаборатории.

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Поздравляем!

Поздравляем, вы успешно настроили и проверили подключение к локальной базе данных через HA-VPN с помощью Looker Console на базе Private Service Connect.

Вы создали инфраструктуру для производителей, научились создавать конечные точки Hybrid NEG, Producer Service и Looker PSC, обеспечивающие подключение к Producer Service.

Cosmopup считает, что Codelabs — это круто!!

c911c127bffdee57.jpeg

Что дальше?

Посмотрите некоторые из этих практических занятий по программированию...

Дополнительная литература и видеоматериалы

Справочная документация