1. Введение
Looker (ядро Google Cloud) обеспечивает упрощенное и оптимизированное предоставление, настройку и управление экземпляром Looker из консоли Google Cloud. Некоторые задачи администрирования экземпляра также можно выполнять с консоли.
Для экземпляров Looker (ядро Google Cloud) доступны три конфигурации сети:
- Общедоступный: сетевое соединение использует внешний IP-адрес, доступный из Интернета.
- Частное: сетевое соединение использует внутренний IP-адрес виртуального частного облака (VPC), размещенный в Google.
- Общедоступный и частный: сетевое соединение использует как общедоступный IP-адрес, так и частный IP-адрес, при этом входящий трафик будет маршрутизироваться через общедоступный IP-адрес, а исходящий трафик будет маршрутизироваться через частный IP-адрес.
В этом руководстве вы развернете комплексную сквозную частную сеть для поддержки подключения Looker к локальному виртуальному компьютеру через HA VPN, которую можно реплицировать в соответствии с вашими требованиями к многооблачному и локальному подключению.
Looker (ядро Google Cloud) поддерживает частный IP-адрес для экземпляров, соответствующих следующим критериям:
- Редакции экземпляра должны быть Enterprise или Embed.
Что ты построишь
В этом руководстве вы собираетесь создать комплексное развертывание частной сети Looker в автономном VPC с гибридным подключением к нескольким облакам и локальным средам.
Вы настроите сеть VPC под названием on-prem-vpc
для представления локальной среды. Для вашего развертывания локальный виртуальный компьютер не будет существовать, вместо этого будет использоваться гибридная сеть с вашим локальным центром обработки данных или облачным провайдером.
Ниже приведены основные этапы руководства.
- Создайте автономный VPC в us-central1.
- Выделение IP-подсети для доступа к частным услугам
- Разверните экземпляр Looker в автономном VPC.
- Создайте локальную VPC и гибридную сеть.
- Объявление и проверка диапазона IP-адресов Looker через BGP
- Интегрируйте и проверяйте обмен данными Looker и Postgresql.
Рисунок 1
Что вы узнаете
- Как создать VPC и связанную с ним гибридную сеть
- Как развернуть Looker на автономном виртуальном компьютере
- Как создать локальный виртуальный компьютер и связанную с ним гибридную сеть
- Подключите локальный виртуальный компьютер к аналитическому VPN через HA VPN.
- Как рекламировать подсети Looker в гибридной сети
- Как контролировать гибридную сетевую инфраструктуру
- Как интегрировать базу данных Postgresql с Looker Cloud Core
Что вам понадобится
- Облачный проект Google
IAM-разрешения
2. Прежде чем начать
Обновите проект для поддержки руководства.
В этом руководстве переменные $variables используются для облегчения реализации конфигурации gcloud в Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Настройка VPC
Создайте Analytics-VPC.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Создайте on-prem-vpc
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Создайте подсеть базы данных Postgresql.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Облачный маршрутизатор и конфигурация 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, который будет использоваться для тестирования и проверки подключения к 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. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.
Из Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. Доступ к частному сервису
Доступ к частным сервисам – это частное соединение между вашей сетью VPC и сетью, принадлежащей Google или третьей стороне. Google или третья сторона, предоставляющая услуги, также называются производителями услуг. Looker Cloud Core — производитель услуг.
Частное подключение позволяет экземплярам виртуальных машин в вашей сети VPC и службам, к которым вы получаете доступ, взаимодействовать исключительно с использованием внутренних IP-адресов .
На высоком уровне, чтобы использовать доступ к частным сервисам, вы должны выделить диапазон IP-адресов (блок CIDR) в сети VPC, а затем создать частное соединение с производителем услуг.
Выделить диапазон IP-адресов для служб
Прежде чем создавать частное подключение, необходимо выделить диапазон адресов IPv4, который будет использоваться сетью VPC поставщика услуг. Это гарантирует отсутствие конфликта IP-адресов между вашей сетью VPC и сетью поставщика услуг.
Когда вы выделяете диапазон в сети VPC, этот диапазон не подходит для подсетей (основных и дополнительных диапазонов) и пунктов назначения пользовательских статических маршрутов.
Использование диапазонов адресов IPv6 для доступа к частным службам не поддерживается.
Включите API сервисной сети для своего проекта в консоли Google Cloud. При включении API вам может потребоваться обновить страницу консоли, чтобы подтвердить, что API включен.
Создайте распределение IP-адресов
Чтобы указать диапазон адресов и длину префикса (маску подсети), используйте флаги адресов и длины префикса. Например, чтобы выделить блок CIDR 192.168.0.0/22, укажите 192.168.0.0 в качестве адреса и 22 в качестве длины префикса.
В Cloud Shell создайте выделение IP-адресов для 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
В 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. Частное соединение устанавливает пиринговое соединение сети VPC между вашей сетью VPC и сетью поставщика услуг после установки экземпляра Looker.
Частные подключения — это отношения «один к одному» между вашей сетью 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).
Прежде чем начать
Включите Looker API для своего проекта в консоли Google Cloud. При включении API вам может потребоваться обновить страницу консоли, чтобы подтвердить, что API включен.
Настройте клиент OAuth для аутентификации и доступа к экземпляру.
В следующем разделе вам нужно будет использовать идентификатор и секрет клиента OAuth для создания экземпляра Looker.
Авторизованные источники Javascript и URI перенаправления не требуются.
Внутри Cloud Console создайте экземпляр на основе предоставленных снимков экрана.
Перейдите в LOOKER → СОЗДАТЬ ЭКЗЕМПЛЯР.
Заполните ранее созданный идентификатор и секрет клиента OAuth.
Выберите СОЗДАТЬ
По мере создания экземпляра вы будете перенаправлены на страницу «Экземпляры» в консоли. Возможно, вам придется обновить страницу, чтобы просмотреть статус вашего нового экземпляра. Вы также можете просмотреть активность создания экземпляра, щелкнув значок уведомлений в меню консоли Google Cloud. Во время создания вашего экземпляра значок уведомлений в меню консоли Google Cloud будет окружен значком загрузки.
После создания экземпляра Looker создается URL-адрес экземпляра. Запишите URL-адрес.
6. Обновите идентификатор клиента OAuth 2.0.
В следующем разделе вам нужно будет обновить ранее созданный URI авторизованного перенаправления идентификатора клиента OAuth, добавив /oauth2callback
к URL-адресу экземпляра.
После завершения вы можете использовать URL-адрес экземпляра для входа в пользовательский интерфейс Looker.
В Cloud Console перейдите в раздел «API и УСЛУГИ» → «УЧЕТНЫЕ ДАННЫЕ».
Выберите свой идентификатор клиента Oauth 2.0 и обновите URL-адрес экземпляра, пример ниже:
7. Подтвердите доступ к Looker
В Cloud Console перейдите к Looker и выберите URL-адрес экземпляра, который откроет пользовательский интерфейс Looker.
После запуска вам будет представлена целевая страница, как показано на снимке экрана ниже, подтверждающая ваш доступ к Looker Cloud Core.
8. Гибридное подключение
В следующем разделе вы создадите облачный маршрутизатор, который позволит вам динамически обмениваться маршрутами между вашим виртуальным частным облаком (VPC) и одноранговой сетью с помощью протокола пограничного шлюза (BGP) .
Cloud Router может настроить сеанс BGP через туннель Cloud VPN для соединения ваших сетей. Он автоматически изучает новые диапазоны IP-адресов подсети и объявляет их вашей одноранговой сети.
В этом руководстве вы развернете HA VPN между Analytics-VPC и on-Prem-VPC, чтобы проиллюстрировать частное подключение к Looker.
Создайте шлюз высокой доступности VPN для аналитики-vpc.
При создании каждого шлюза автоматически выделяются два внешних адреса IPv4 — по одному для каждого интерфейса шлюза. Запишите эти IP-адреса, чтобы использовать их позже на этапах настройки.
Внутри Cloud Shell создайте шлюз HA VPN GW.
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Создайте шлюз HA VPN для локального виртуального ПК.
При создании каждого шлюза автоматически выделяются два внешних адреса IPv4 — по одному для каждого интерфейса шлюза. Запишите эти IP-адреса, чтобы использовать их позже на этапах настройки.
Внутри Cloud Shell создайте шлюз HA VPN GW.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Проверка создания шлюза HA VPN GW
С помощью консоли перейдите в раздел ГИБРИДНОЕ ПОДКЛЮЧЕНИЕ → VPN → ОБЛАЧНЫЕ VPN-ШЛЮЗЫ.
Создайте облачный маршрутизатор для Analytics-VPC.
Внутри Cloud Shell создайте Cloud Router, расположенный в us-central1.
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Создайте облачный маршрутизатор для on-prem-vpc.
Внутри Cloud Shell создайте Cloud Router, расположенный в us-central1.
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Создайте VPN-туннели для Analytics-VPC.
Вы создадите два VPN-туннеля на каждом VPN-шлюзе высокой доступности.
Создать VPN-туннель0
Внутри Cloud Shell создайте туннель0:
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 создайте туннель1:
gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 1
Создайте VPN-туннели для on-prem-vpc.
Вы создадите два VPN-туннеля на каждом VPN-шлюзе высокой доступности.
Создать VPN-туннель0
Внутри Cloud Shell создайте туннель0:
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 создайте туннель1:
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 → ОБЛАЧНЫЕ VPN-ТУННЕЛИ.
9. Установите соседей BGP
Создание сеансов BGP
В этом разделе вы настраиваете интерфейсы Cloud Router и узлы BGP.
Создайте интерфейс BGP и пиринг для аналитики-vpc.
Внутри 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
Создайте интерфейс BGP и пиринг для on-prem-vpc.
Внутри 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-туннеле.
Проверка полученных маршрутов аналитики-vpc через HA VPN
Поскольку туннели HA VPN и сеансы BGP установлены, маршруты из on-prem-vpc изучаются из Analytics-vpc. С помощью консоли перейдите в Сеть VPC → Сети VPC → Analytics-VPC → МАРШРУТЫ → РЕГИОН → us-central1 → ПРОСМОТР.
Обратите внимание, что Analytics-vpc изучил маршруты из локальной базы данных vpc-subnet-us-central1 172.16.10.0/27.
Убедитесь, что on-prem-vpc не изучил маршруты через HA VPN.
Analytics-vpc не имеет подсети, поэтому Cloud Router не будет объявлять какие-либо подсети для on-prem-vpc . С помощью консоли перейдите в сеть VPC → Сети VPC → on-prem-vpc → МАРШРУТЫ → РЕГИОН → us-central1 → ПРОСМОТР.
10. Рекламируйте подсеть Looker локально
Подсеть Looker Private Service Access (PSA) не объявляется автоматически облачным маршрутизаторомanalytics-cr-us-central1, поскольку подсеть назначена PSA, а не VPC.
Вам потребуется создать настраиваемое объявление маршрута из аналитики-cr-central1 для подсети PSA 192.168.0.0/22 (psa-range-looker), которое будет объявляться в локальной среде и использоваться рабочими нагрузками для доступа к Looker.
В консоли перейдите в раздел ГИБРИДНОЕ ПОДКЛЮЧЕНИЕ → ОБЛАЧНЫЕ МАРШРУТИЗАТОРЫ → Analytics-cr-us-central1 , затем выберите РЕДАКТИРОВАТЬ.
В разделе «Объявленные маршруты» выберите параметр «Создать пользовательские маршруты» , обновите поля на основе примера ниже, выберите «ГОТОВО», а затем нажмите «СОХРАНИТЬ».
11. Убедитесь, что локальный виртуальный компьютер узнал подсеть Looker.
Теперь локальный vpc сможет получить доступ к подсети Looker PSA, поскольку он был объявлен из аналитики-cr-us-central1 как объявление настраиваемого маршрута.
С помощью консоли перейдите в СЕТЬ VPC → СЕТИ VPC → on-prem-vpc → МАРШРУТЫ → РЕГИОН → us-central1 → ПРОСМОТР.
Наблюдайте за маршрутами Looker, объявленными из Analytics-VPC:
12. Проверка текущего пиринга VPC.
Соединение между Looker Cloud Core и Analytics-VPC осуществляется через пиринг VPC, который позволяет обмениваться настраиваемыми маршрутами, полученными через BGP. В этом руководстве аналитика-vpc должна будет опубликовать маршруты, полученные локальным виртуальным компьютером, в Looker. Чтобы включить эту функцию, пиринг VPC требует обновления для экспорта пользовательских маршрутов.
Проверьте текущие импортированные и экспортированные маршруты.
Перейдите в СЕТЬ VPC → ПИИРИНГ СЕТИ VPC → servicenetworking-googleapis-com.
На снимке экрана ниже подробно показано, какanalytics-vpc импортирует psa-range-looker из управляемой Google одноранговой сети vpc, ServicesNetworking.
При выборе ЭКСПОРТИРОВАННЫХ МАРШРУТОВ маршруты не экспортируются в одноранговую сеть VPC, поскольку 1) Подсети не настроены в аналитике-vpc 2) Экспортировать пользовательские маршруты не выбран
13. Обновление пиринга VPC
Перейдите в СЕТЬ VPC → ПИИРИНГ СЕТИ VPC → servicenetworking-googleapis-com → ИЗМЕНИТЬ.
Выберите ЭКСПОРТ ПОЛЬЗОВАТЕЛЬСКИХ МАРШРУТОВ → СОХРАНИТЬ.
14. Проверка обновленного пиринга VPC.
Проверьте экспортированные маршруты.
Перейдите в СЕТЬ VPC → ПИИРИНГ СЕТИ VPC → servicenetworking-googleapis-com.
Выбор ЭКСПОРТИРОВАННЫХ МАРШРУТОВ показывает, что маршруты on-prem-vpc (подсеть базы данных 172.16.10.0/27) экспортируются в средство поиска хостинга одноранговой сети VPC с помощью аналитики-vpc.
15. Создание постгрес-базы данных Looker
В следующем разделе вы выполните SSH к виртуальной машине базы данных postgres с помощью Cloud Shell.
Внутри Cloud Shell выполните подключение по протоколу SSH к экземпляру базы данных postgres**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Внутри ОС определите и запишите IP-адрес (ens4) экземпляра базы данных postgres.
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:~$
В следующем разделе вы вставите IP-адрес экземпляра базы данных postgres и подсеть Looker Private Google Access (192.168.0.0/22) в файл pg_hba.conf в разделе локальных подключений IPv4, как показано на снимке экрана ниже:
sudo nano /etc/postgresql/15/main/pg_hba.conf
В следующем разделе раскомментируйте postgresql.conf, чтобы прослушивать все IP-адреса «*», как показано на снимке экрана ниже:
sudo nano /etc/postgresql/15/main/postgresql.conf
До:
После:
Внутри ОС перезапустите службу postgresql.
sudo service postgresql restart
Внутри ОС проверьте статус postgresql как активный.
sudo service postgresql status
Пример:
Внутри ОС проверьте статус postgresql как активный.
user@postgres-database$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. Создайте базу данных Postgres.
В следующем разделе вы создадите базу данных postgres с именем postgres_looker и схему Looker_schema, используемую для проверки подключения средства просмотра к локальной среде.
Внутри ОС войдите в postgres.
sudo -u postgres psql postgres
Внутри ОС создайте базу данных.
create database postgres_looker;
Внутри ОС перечислите базу данных.
\l
Внутри ОС создайте средство просмотра пользователей со средством поиска паролей.
create user postgres_looker with password 'postgreslooker';
Внутри ОС подключитесь к базе данных.
\c postgres_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
Выйдите из ОС, вернув вас в облачную оболочку.
\q
exit
17. Создайте брандмауэр в on-prem-vpc.
В следующем разделе создайте Ingress-брандмауэр с ведением журнала, который позволит подсети Looker обмениваться данными с экземпляром базы данных postgres.
В 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. Создайте частный DNS в аналитике-vpc.
Хотя Looker развертывается в VPC, управляемом Google, доступ к частному DNS Analytics-vpc поддерживается посредством пиринга с сетевыми службами.
В следующем разделе вы создадите частную зону DNS в Analytics-VPC, состоящую из записи A полного доменного имени экземпляра базы данных postgres ( postgres.analytics.com)
и IP-адреса.
В 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 определите IP-адрес экземпляра базы данных postgres.
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-суффикс 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.
В следующем разделе вы будете использовать Cloud Console для создания подключения базы данных к локальному экземпляру базы данных postgres.
В Cloud Console перейдите к Looker и выберите URL-адрес экземпляра, который откроет пользовательский интерфейс Looker.
После запуска вам будет представлена целевая страница, как показано на скриншоте ниже.
Перейдите в «АДМИНИСТРАТОР» → «БАЗА ДАННЫХ» → «ПОДКЛЮЧЕНИЯ» → выберите «ДОБАВИТЬ СОЕДИНЕНИЕ».
Заполните данные подключения, как показано на скриншоте ниже, выберите ПОДКЛЮЧИТЬСЯ.
Соединение теперь успешно
20. Проверка подключения Looker
В следующем разделе вы узнаете, как проверить подключение Looker к базе данных postgres в on-prem-vpc с помощью действия «test» Looker и TCPDUMP.
Из Cloud Shell войдите в базу данных postgres, если время сеанса истекло.
Внутри Cloud Shell выполните следующие действия:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
В ОС создайте фильтр TCPDUMP с подсетью psa-range-looker 192.168.0.0/22.
sudo tcpdump -i any net 192.168.0.0/22 -nn
Перейдите к соединению данных ADMIN → БАЗА ДАННЫХ → ПОДКЛЮЧЕНИЯ → Выбрать → Тест.
После выбора «Тест» Looker успешно подключится к базе данных postgres, как показано ниже:
Вернитесь к терминалу ОС и убедитесь, что TCPDUMP определил, что psc-range-looker подключается к локальному экземпляру базы данных postgres.
Добавьте примечание, что любой IP-адрес из диапазона PSA будет отображаться в Looker.
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. Рекомендации по безопасности
Существует несколько рекомендаций и лучших практик по обеспечению безопасности Looker и базы данных Postgres. К ним относятся:
- Настройка разрешений учетной записи базы данных с наименьшими привилегиями для Looker, которые по-прежнему позволяют ему выполнять необходимые функции.
- Данные, передаваемые между клиентом и пользовательским интерфейсом Looker и Looker в базу данных, зашифрованы с использованием TLS 1.2+.
- По умолчанию хранящиеся данные шифруются. Клиент также может использовать CMEK для экземпляров Looker ( https://cloud.google.com/looker/docs/looker-core-cmek ) и Postgres ( https://cloud.google.com ). /sql/docs/postgres/configure-cmek )
- Контроль доступа к Looker . Администраторы Looker могут контролировать, что принцип или группа пользователей могут видеть и делать в Looker, предоставляя доступ к контенту, доступ к данным и доступ к функциям. Эти параметры позволяют администратору Looker определять конкретные роли, включая модель и набор разрешений, а также создавать детальный контроль доступа к данным.
- Looker поддерживает как журналы аудита, так и журналы доступа к данным , в которых фиксируется, кто, что, когда и где сделал. Журналы аудита включены по умолчанию, тогда как журналы доступа к данным необходимо включить явно .
- В настоящее время VPC-SC поддерживает экземпляры Enterprise и Embed, настроенные только с частным IP-адресом.
22. Очистка
Удалите экземпляр Looker Cloud Core. Перейдите к:
LOOKER → Looker-tutorial → УДАЛИТЬ
Из Cloud Shell удалите компоненты учебника.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. Поздравления
Поздравляем, вы успешно настроили и проверили возможность подключения Looker через гибридную сеть, обеспечивающую передачу данных в локальных и мультиоблачных средах.
Вы также смогли успешно протестировать подключение Looker Cloud Core к базе данных postgres с помощью инструмента «Test» Lookers Connect и TCPDUMP в экземпляре базы данных postgres.
Cosmopup считает, что уроки — это здорово!!
Дальнейшее чтение и видео
- Представляем следующую эволюцию Looker
- Переходите на GCP? Прежде всего: VPC
- Динамическая маршрутизация с помощью Cloud Router