Looker PSC Southbound Hybrid NEG to on-premises

1. Wprowadzenie

W tym ćwiczeniu wykonasz połączenie wychodzące z lokalną bazą danych Postgres przez sieć H-VPN przy użyciu wewnętrznego systemu równoważenia obciążenia proxy TCP i hybrydowej grupy punktów końcowych sieci wywoływanych z usługi PSC Looker jako konsumenta usługi.

Private Service Connect to funkcja sieci Google Cloud, która umożliwia konsumentom prywatny dostęp do usług zarządzanych z poziomu sieci VPC. Podobnie umożliwia producentom usług zarządzanych hostowanie tych usług we własnych, oddzielnych sieciach VPC i oferowanie prywatnego połączenia z klientami. Na przykład gdy używasz Private Service Connect do uzyskiwania dostępu do Lookera, jesteś konsumentem usługi, a Google jest producentem usługi, jak pokazano na ilustracji 1.

Rysunek 1.

145ea4672c3a3b14.png

Dostęp wychodzący, zwany też odwróconym PSC, umożliwia konsumentowi utworzenie opublikowanej usługi jako producenta, aby umożliwić Looker dostęp do punktów końcowych lokalnie, w sieci VPC, do usług zarządzanych i hybrydowych. Połączenia wychodzące można wdrażać w dowolnym regionie, niezależnie od tego, gdzie jest wdrożona usługa PSC Looker, jak pokazano na rysunku 2.

Rysunek 2.

259493afd914f68b.png

Czego się nauczysz

  • Wymagania związane z siecią
  • Tworzenie usługi producenta Private Service Connect
  • Tworzenie punktu końcowego Private Service Connect w Lookerze
  • Ustanów połączenie z lokalną bazą danych Postgres z Lookera za pomocą opcji Test Connection (Testuj połączenie).

Czego potrzebujesz

def88091b42bfe4d.png

2. Co utworzysz

Utworzysz sieć producenta looker-psc-demo, aby wdrożyć wewnętrzny system równoważenia obciążenia serwera proxy TCP i hybrydową grupę NEG opublikowaną jako usługa za pomocą usługi Private Service Connect (PSC). Aby zademonstrować bazę danych lokalną, wdrożysz sieć VPC on-prem-demo połączoną z siecią VPC looker-psc-demo za pomocą sieci VPN o wysokiej dostępności.

Aby zweryfikować dostęp do usługi Producer, wykonaj te czynności:

  • Tworzenie w Lookerze punktu końcowego PSC powiązanego z przyłączem usługi producenta
  • Użyj konsoli Looker, aby przeprowadzić weryfikację połączenia z lokalną bazą danych Postgres.

3. Wymagania związane z siecią

Poniżej znajdziesz zestawienie wymagań sieciowych dla sieci producenta. Konsumentem w tym ćwiczeniu jest instancja PSC Lookera.

Komponenty

Opis

VPC (looker-psc-demo)

Sieć VPC w trybie niestandardowym

VPC (lokalna wersja demonstracyjna)

Sieć VPC w trybie niestandardowym

Podsieć NAT PSC

Pakiety z sieci VPC klienta są tłumaczone za pomocą źródłowego NAT (SNAT), dzięki czemu ich pierwotne źródłowe adresy IP są konwertowane na źródłowe adresy IP z podsieci NAT w sieci VPC producenta.

Podsieć reguły przekierowania PSC

Służy do przydzielania adresu IP regionalnemu wewnętrznemu systemowi równoważenia obciążenia TCP serwera proxy.

Podsieć grupy punktów końcowych sieci PSC

Służy do przydzielania adresu IP grupie punktów końcowych sieci.

Podsieć tylko-proxy

Każdy serwer proxy systemu równoważenia obciążenia ma przypisany wewnętrzny adres IP. Pakiety wysyłane z proxy do maszyny wirtualnej lub punktu końcowego backendu mają źródłowy adres IP z podsieci tylko-proxy.

Hybrydowa grupa punktów końcowych sieci

Usługi lokalne i inne usługi w chmurze są traktowane jak każdy inny backend Cloud Load Balancing. Główna różnica polega na tym, że do skonfigurowania punktów końcowych tych backendów używasz hybrydowej grupy NEG. Punkty końcowe muszą być prawidłowymi kombinacjami IP:port, do których system równoważenia obciążenia może dotrzeć za pomocą usług łączności hybrydowej, takich jak Cloud VPN lub Cloud Interconnect.

Usługa backendu

Usługa backendu pełni funkcję pomostu między systemem równoważenia obciążenia a zasobami backendu. W samouczku usługa backendu jest powiązana z hybrydową grupą NEG.

Cloud Router

  • Cloud NAT korzysta z routerów Cloud Router w zakresie funkcji platformy sterującej, ale nie do zarządzania sesjami BGP.
  • Router Cloud Router jest używany w przypadku protokołu BGP ustanowionego na potrzeby połączenia HA-VPN między sieciami VPC psc-looker-demo i on-prem-demo.

Sieć VPN o wysokiej dostępności

Sieć VPN o wysokiej dostępności między sieciami VPC w Google Cloud W tej topologii możesz połączyć 2 sieci VPC Google Cloud za pomocą bramy sieci VPN o wysokiej dostępności w każdej sieci. Sieci VPC mogą znajdować się w tym samym regionie lub w wielu regionach.

Cloud NAT

Używana przez sieć VPC on-prem-demo na potrzeby ruchu wychodzącego z internetu

4. Topologia ćwiczeń z programowania

79aeb28b38f237da.png

5. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego ćwiczenia nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

55efc1aaa7a4d3ad.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym ćwiczeniu w Codelabs możesz wykonać w przeglądarce. Nie musisz niczego instalować.

6. Zanim zaczniesz

Włącz interfejsy API

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:

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

Włącz wszystkie niezbędne usługi:

gcloud services enable compute.googleapis.com

7. Tworzenie sieci VPC producenta

Sieć VPC

W Cloud Shell wykonaj te czynności:

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

Tworzenie podsieci

Podsieć PSC będzie powiązana z przyłączem usługi PSC na potrzeby translacji adresów sieciowych.

W Cloud Shell utwórz podsieć NAT PSC:

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

W Cloud Shell utwórz podsieć reguły przekierowania producenta:

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

W Cloud Shell utwórz regionalną podsieć tylko-proxy producenta:

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

Rezerwowanie adresu IP systemu równoważenia obciążenia

W Cloud Shell zarezerwuj wewnętrzny adres IP dla systemu równoważenia obciążenia:

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

W Cloud Shell wyświetl zarezerwowany adres IP.

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

Przykładowe dane wyjściowe:

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

Konfigurowanie hybrydowej grupy punktów końcowych sieci

Utwórz hybrydową grupę NEG i ustaw wartość –network-endpoint-type na NON_GCP_PRIVATE_IP_PORT.

W Cloud Shell utwórz hybrydową grupę punktów końcowych sieci, która będzie używana do uzyskiwania dostępu do bazy danych w środowisku lokalnym:

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

W Cloud Shell zaktualizuj hybrydową grupę punktów końcowych sieci, podając adres IP i port bazy danych lokalnej (192.168.10.4 i port 5432), które zostały wygenerowane w dalszej części samouczka:

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

Tworzenie regionalnej kontroli stanu

W Cloud Shell utwórz kontrolę stanu, która sprawdza port bazy danych lokalnej (5432):

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

Tworzenie zasad zapory sieciowej i reguł zapory sieciowej

W Cloud Shell wykonaj te czynności:

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

Ta reguła zapory sieciowej zezwala na ruch z zakresu podsieci NAT usługi PSC do wszystkich instancji w sieci.

W Cloud Shell wykonaj te czynności:

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. Tworzenie usługi producenta

Tworzenie komponentów systemu równoważenia obciążenia

W Cloud Shell utwórz usługę backendu:

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

W Cloud Shell dodaj backend hybrydowej grupy NEG do usługi backendu:

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

W Cloud Shell utwórz docelowy serwer proxy TCP, aby kierować żądania do usługi backendu:

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

W przypadku poniższej składni utwórz regułę przekierowania (wewnętrzny system równoważenia obciążenia serwera proxy TCP).

W Cloud Shell wykonaj te czynności:

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

Utwórz załącznik usługi

W Cloud Shell utwórz przyłącze usługi 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

Następnie uzyskaj i zanotuj załącznik usługi wymieniony w identyfikatorze URI selfLink zaczynającym się od projects, aby skonfigurować punkt końcowy PSC w Lookerze.

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

W Cloud Shell wykonaj te czynności:

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

Przykładowe oczekiwane dane wyjściowe:

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

W konsoli Cloud otwórz:

Usługi sieciowe → Private Service Connect → Opublikowane usługi

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Nawiązywanie połączenia z punktem końcowym PSC w Lookerze

W sekcji poniżej powiążesz przyłącze usługi producentów z usługą PSC Looker Core za pomocą flagi –psc-service-attachment w Cloud Shell dla pojedynczej domeny.

W Cloud Shell utwórz powiązanie PSC, aktualizując te parametry, aby pasowały do Twojego środowiska:

  • INSTANCE_NAME: nazwa instancji Lookera (podstawowej usługi Google Cloud).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: identyfikator URI zarejestrowany podczas tworzenia przyłącza usługi, onpremdatabase1-svc-attachment
  • REGION: region, w którym jest hostowana instancja Lookera (podstawowej usługi Google Cloud).

W Cloud Shell wykonaj te czynności:

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

Przykład:

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

W Cloud Shell sprawdź, czy stan połączenia serviceAttachments to „ACCEPTED”. Zaktualizuj nazwę instancji PSC Looker:

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

Przykład:

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

Przykład:

{
  "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"
}

Sprawdzanie poprawności punktu końcowego PSC w Cloud Console

W konsoli Cloud możesz sprawdzić połączenie PSC.

W konsoli Cloud otwórz:

Looker → Instancja Lookera → Szczegóły

2d4684d722d31e4b.png

993cdaf748f4c030.png

Tworzenie lokalnej sieci VPC

Sieć VPC

W Cloud Shell wykonaj te czynności:

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

Utwórz podsieć bazy danych PostgreSQL

W Cloud Shell wykonaj te czynności:

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

W Cloud Shell zarezerwuj wewnętrzny adres IPv4 używany w przypadku 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

Tworzenie routera Cloud Router dla lokalnej sieci VPC on-prem-demo

W samouczku do instalacji pakietu oprogramowania używana jest usługa Cloud NAT, ponieważ instancja maszyny wirtualnej nie ma zewnętrznego adresu IP.

W Cloud Shell utwórz router Cloud Router używany z Cloud NAT i siecią VPN o wysokiej dostępności:

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

W Cloud Shell utwórz bramę 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

Tworzenie testowej instancji bazy danych

Utwórz instancję bazy danych postgres, która będzie używana do testowania i weryfikowania połączenia z Lookerem.

W Cloud Shell utwórz instancję:

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"

Tworzenie zasad zapory sieciowej i reguł zapory sieciowej

W Cloud Shell wykonaj te czynności:

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

Aby umożliwić IAP połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez IAP.
  • Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa do przekierowywania TCP.

W Cloud Shell wykonaj te czynności:

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

Ta reguła zapory sieciowej zezwala na ruch z zakresu podsieci tylko dla proxy do wszystkich instancji w sieci.

W Cloud Shell wykonaj te czynności:

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. Połączenia hybrydowe

W sekcji poniżej utworzysz router Cloud Router, który umożliwi Ci dynamiczną wymianę tras między Twoim prywatnym środowiskiem wirtualnym w chmurze (VPC) a siecią równorzędną za pomocą protokołu BGP.

Router Cloud Router może skonfigurować sesję BGP w tunelu Cloud VPN, aby połączyć Twoje sieci. Automatycznie uczy się nowych zakresów adresów IP podsieci i ogłasza je w sieci równorzędnej.

W kolejnych krokach wdrożysz sieć VPN o wysokiej dostępności między sieciami VPC looker-psc-demo i on-prem-demo, aby zademonstrować połączenie hybrydowej grupy końcowej sieci z onprem.database1.com.

Utwórz bramę sieci VPN o wysokiej dostępności dla sieci looker-psc-demo.

Podczas tworzenia każdej bramy automatycznie przydzielane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy.

W Cloud Shell utwórz bramę sieci VPN o wysokiej dostępności:

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

Tworzenie bramy sieci VPN o wysokiej dostępności na potrzeby wersji demonstracyjnej środowiska lokalnego

Podczas tworzenia każdej bramy automatycznie przydzielane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy.

W Cloud Shell utwórz bramę sieci VPN o wysokiej dostępności:

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

Sprawdzanie tworzenia bramy sieci VPN o wysokiej dostępności

W konsoli kliknij POŁĄCZENIA HYBRYDOWE → VPN → BRAMY CLOUD VPN.

7f1b504616504866.png

Tworzenie routera Cloud Router dla sieci looker-psc-demo

W Cloud Shell utwórz router Cloud Router:

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

Utwórz tunele VPN dla looker-psc-demo

W każdej bramie sieci VPN o wysokiej dostępności utworzysz 2 tunele VPN.

Utwórz tunel VPN0

W Cloud Shell utwórz 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

Utwórz tunel VPN1

W Cloud Shell utwórz tunel1:

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

Utwórz tunele VPN dla środowiska lokalnego demo

W każdej bramie sieci VPN o wysokiej dostępności utworzysz 2 tunele VPN.

Utwórz tunel VPN0

W Cloud Shell utwórz 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

Utwórz tunel VPN1

W Cloud Shell utwórz tunel1:

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

Sprawdzanie tworzenia tunelu VPN

W konsoli przejdź do sekcji POŁĄCZENIA HYBRYDOWE → VPN → TUNELE VPN W CHMURZE.

c2fcb340a7614070.png

11. Ustanawianie sąsiadów BGP

Utwórz interfejs BGP i peering dla looker-psc-demo

W Cloud Shell utwórz interfejs 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

W Cloud Shell utwórz węzeł 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

W Cloud Shell utwórz interfejs 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

W Cloud Shell utwórz węzeł 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

Tworzenie interfejsu BGP i połączenia równorzędnego dla sieci lokalnej on-prem-demo

W Cloud Shell utwórz interfejs 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

W Cloud Shell utwórz węzeł 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

W Cloud Shell utwórz interfejs 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

W Cloud Shell utwórz węzeł 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

Aby wyświetlić szczegóły tunelu VPN, kliknij POŁĄCZENIE HYBRYDOWE → VPN.

78ab590317919bf5.png

Weryfikowanie tras wyuczonych przez looker-psc-demo w sieci VPN o wysokiej dostępności

Po utworzeniu tuneli sieci VPN o wysokiej dostępności i sesji protokołu BGP domyślnym działaniem routera Cloud Router jest rozgłaszanie tras podsieci. Wyświetl zapamiętane trasy looker-psc-demo.

W konsoli wybierz Sieć VPC → Sieci VPC → looker-psc-demo → TRASY → REGION → WYŚWIETL.

Sprawdź, czy projekt looker-psc-demo nauczył się podsieci bazy danych 192.168.10.0/28 z lokalnej sieci VPC on-prem-demo.

c11a11ed8b0491c8.png

Sprawdź, czy lokalna sieć VPC on-prem-demo nauczyła się tras przez sieć VPN o wysokiej dostępności

Domyślnie router Cloud Router rozgłasza wszystkie podsieci, więc podsieć serwera proxy jest rozgłaszana przez BGP. Hybrydowa grupa NEG będzie używać podsieci tylko-proxy jako adresu źródłowego podczas komunikacji z serwerem onprem.database1.com.

Obserwuj, jak lokalna wersja demonstracyjna uczy się podsieci tylko-proxy 10.10.10.0/24 z looker-psc-demo.

W konsoli wybierz Sieć VPC → Sieci VPC → on-prem-demo → TRASY → REGION → WYŚWIETL.

b0073faed026931f.png

12. Tworzenie bazy danych PostgreSQL w Lookerze

W następnej sekcji połączysz się przez SSH z maszyną wirtualną postgres-database za pomocą Cloud Shell.

W Cloud Shell wykonaj SSH do instancji bazy danych postgres:

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

W systemie operacyjnym znajdź i zanotuj adres IP (ens4) instancji bazy danych postgres:

ip a

Przykład:

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

Zaloguj się w systemie operacyjnym w postgresql:

sudo -u postgres psql postgres

Wpisz hasło w systemie operacyjnym:

\password postgres

W systemie operacyjnym ustaw hasło postgres (wpisz to samo hasło dwukrotnie):

postgres

Przykład:

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: 

W systemie operacyjnym zamknij postgres:

\q

Przykład:

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

W sekcji poniżej wstaw adres IP instancji bazy danych PostgreSQL (192.168.10.4) i podsieć tylko dla proxy (10.10.10.0/24) w pliku pg_hba.conf w sekcji IPv4 local connections (Lokalne połączenia IPv4).

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

Zrzut ekranu poniżej przedstawia ukończoną aktualizację: eaff2ed6d27fa7cc.png

W sekcji poniżej odkomentuj plik postgresql.conf, aby nasłuchiwać wszystkich adresów IP „*' zgodnie ze zrzutem ekranu poniżej:

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

Przed:

65e0b1074dc48644.png

Po:

14a0d1fa5455e23e.png

W systemie operacyjnym ponownie uruchom usługę postgresql:

sudo service postgresql restart

W systemie operacyjnym sprawdź, czy stan postgresql jest aktywny:

sudo service postgresql status

Przykład:

W systemie operacyjnym sprawdź, czy stan postgresql jest aktywny:

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. Tworzenie bazy danych PostgreSQL

W następnej sekcji utworzysz bazę danych PostgreSQL o nazwie postgres_looker i schemat looker_schema, które będą służyć do weryfikowania połączenia Lookera z lokalną bazą danych.

Zaloguj się w systemie operacyjnym w usłudze postgres:

sudo -u postgres psql postgres

W systemie operacyjnym utwórz bazę danych:

create database postgres_looker;

W systemie operacyjnym wyświetl listę baz danych:

\l

W systemie operacyjnym utwórz użytkownika postgres_looker z hasłem postgreslooker:

create user postgres_looker with password 'postgreslooker';

W systemie operacyjnym połącz się z bazą danych:

\c postgres_looker;

W systemie operacyjnym utwórz schemat looker-schema i zamknij go, aby wrócić do wiersza poleceń 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

Przykład:

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. Integrowanie Lookera z bazą danych Postgres

W następnej sekcji użyjesz konsoli Lookera, aby utworzyć połączenie z bazą danych z instancją bazy danych postgres w lokalnej infrastrukturze.

Otwórz ADMINISTRATOR → BAZA DANYCH → POŁĄCZENIA i kliknij DODAJ POŁĄCZENIE.

Wypełnij szczegóły połączenia zgodnie ze zrzutem ekranu poniżej i kliknij POŁĄCZ.

5900fdf0b698cbfc.png

Połączenie zostało skonfigurowane

4817157fd3b1277e.png

15. Sprawdzanie łączności z Lookerem

W następnej sekcji dowiesz się, jak sprawdzić połączenie Lookera z bazą danych postgres w sieci VPC on-prem za pomocą działania „test” w Lookerze i narzędzia TCPDUMP.

W Cloud Shell zaloguj się w bazie danych postgres, jeśli sesja wygasła.

W Cloud Shell wykonaj te czynności:

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"

W systemie operacyjnym utwórz filtr TCPDUMP z podsiecią tylko-proxy 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

Otwórz kolejno Połączenie danych ADMINISTRATOR → BAZA DANYCH → POŁĄCZENIA → postgres-database → Testuj

Po wybraniu opcji Test Looker połączy się z bazą danych postgres w sposób wskazany poniżej:

774f9313ece41034.png

Czyszczenie danych

Usuwanie komponentów laboratorium z jednego terminala 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. Gratulacje

Gratulacje. Udało Ci się skonfigurować i zweryfikować połączenie z bazą danych lokalną przez sieć VPN o wysokiej dostępności za pomocą konsoli Looker z funkcją Private Service Connect.

Utworzyliśmy infrastrukturę producenta, dowiedzieliśmy się, jak utworzyć hybrydową grupę NEG, usługę producenta i punkt końcowy PSC Lookera, które umożliwiają połączenie z usługą producenta.

Cosmopup uważa, że ćwiczenia z programowania są świetne!!

c911c127bffdee57.jpeg

Co dalej?

Sprawdź te ćwiczenia z programowania:

Więcej informacji i filmy

Dokumentacja