1. Wprowadzenie
Grupa punktów końcowych sieci Private Service Connect (PSC) obsługuje łączenie wewnętrznego systemu równoważenia obciążenia HTTPS z zewnętrznym systemem równoważenia obciążenia HTTPS. Zapewnia to rozproszone kontrole stanu i ruch w płaszczyźnie danych do środowiska lokalnego przy użyciu zakresów zdefiniowanych przez klienta. Ta topologia obsługuje też wiele sieci VPC łączących się z infrastrukturą lokalną za pomocą wielu regionalnych połączeń Interconnect.
W tym ćwiczeniu pokażemy, jak skonfigurować to kompleksowe rozwiązanie na podstawie topologii poniżej. Od lewej do prawej: klienci lokalni mają maszynę wirtualną do symulowania usług HTTP, korzystają z połączeń hybrydowych (HA-VPN lub InterConnect) i hybrydowej grupy NEG, aby udostępniać usługi za pomocą wewnętrznego systemu równoważenia obciążenia HTTPS. Usługa PSC używa wewnętrznego systemu równoważenia obciążenia HTTPS jako przyłączy usługi. Grupa NEG PSC wykorzystuje przyłącza jako usługę backendu udostępnianą zewnętrznemu systemowi równoważenia obciążenia HTTPS. Użytkownicy internetu mogą korzystać z globalnej sieci Google, aby przyspieszyć dostęp do usług HTTP w środowisku lokalnym.

Rysunek 1. Private Service Connect używa grupy punktów końcowych sieci i przyłączy usługi do łączenia zewnętrznego systemu równoważenia obciążenia HTTPS z wewnętrznym systemem równoważenia obciążenia HTTPS i rozszerzania backendu na środowisko lokalne.
Czego się nauczysz
- Wewnętrzny system równoważenia obciążenia HTTPS z hybrydową grupą NEG i rozproszonym sprawdzaniem stanu
- Załącznik usługi PSC z wewnętrznym systemem równoważenia obciążenia HTTPS
- Konfigurowanie grupy punktów końcowych sieci PSC
- Udostępnianie internetowej grupy punktów końcowych PSC za pomocą zewnętrznego systemu równoważenia obciążenia HTTPS
Czego potrzebujesz
- Znajomość połączeń hybrydowych, takich jak HA-VPN
- Znajomość wewnętrznego i zewnętrznego równoważenia obciążenia HTTPS
- Znajomość usługi Private Service Connect
2. Zanim zaczniesz
Uwaga: ćwiczenie w Codelabs zawiera instrukcje konfiguracji i weryfikacji oparte na przedstawionej topologii. W razie potrzeby zmodyfikuj procedurę, aby spełnić wymagania organizacji. Uprawnienia IAM nie są objęte tym ćwiczeniem.
W tym ćwiczeniu w Codelabs użyjemy jednego projektu, aby zasymulować cały proces. Obsługiwanych jest też wiele projektów.
Jeden projekt – aktualizacja projektu w celu obsługi sieci producenta i konsumenta
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
3. Tworzenie zasobów lokalnych
W następnej sekcji skonfigurujemy lokalną sieć VPC i maszyny wirtualne, aby symulować lokalne usługi klienta.
Sieć VPC
Z Cloud Shell
gcloud compute networks create vpc-demo-onprem --project=$prodproject --subnet-mode=custom
Utwórz podsieć
Z Cloud Shell
gcloud compute networks subnets create vpc-demo-onprem-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=vpc-demo-onprem --region=asia-southeast1
Utwórz reguły zapory sieciowej.
Wewnętrzny system równoważenia obciążenia HTTPS obsługuje rozproszoną kontrolę stanu, a reguły zapory sieciowej muszą zezwalać tylko na zakres adresów IP podsieci proxy. Postępuj zgodnie z instrukcjami w tym dokumencie, aby dodać projekty do listy dozwolonych.
W Cloud Shell utwórz regułę zapory sieciowej, która włącza kontrolę stanu backendu i ruch platformy danych z podsieci serwera proxy.
gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-onprem --source-ranges 10.0.3.0/24 --enable-logging
W Cloud Shell utwórz regułę zapory sieciowej, która zezwala IAP na łączenie się z instancjami maszyn wirtualnych.
gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-onprem --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
4. Tworzenie instancji maszyn wirtualnych w środowisku lokalnym
Ta maszyna wirtualna symuluje usługi lokalne i musi być udostępniana za pomocą wewnętrznego systemu równoważenia obciążenia HTTPS przy użyciu hybrydowej grupy NEG.
Tworzenie instancji www01 w Cloud Shell
gcloud compute instances create www01 \
--zone=asia-southeast1-b \
--image-family=debian-11 \
--image-project=debian-cloud \
--network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=vpc-demo-onprem-asia-southeast1 \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--metadata=startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install nginx -y
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.nginx-debian.html
sudo systemctl restart nginx'
W kolejnej sekcji użyjemy letsencrypt do wygenerowania certyfikatów i zainstalowania ich na serwerze Nginx. Pobierz plik klucza publicznego i prywatnego, aby przejść do następnego kroku. Aby wygenerować certyfikat, musisz tymczasowo otworzyć port TCP 80 dla internetu.
Upewnij się, że ta maszyna wirtualna ma publicznie rozpoznawaną nazwę domeny. Na przykład w Cloud DNS dodaj rekord A [www01.yinghli.demo.altostrat.com](http://www01.yinghli.demo.altostrat.com) i wskaż publiczny adres IP maszyny wirtualnej.
gcloud dns --project=$prodproject record-sets create www01.yinghli.demo.altostrat.com. --zone="yinghli-demo" --type="A" --ttl="300" --rrdatas="34.87.77.186"
W konsoli maszyny wirtualnej www01 postępuj zgodnie z instrukcjami, aby zainstalować certyfikaty na serwerze Nginx i utworzyć kopię plików fullchain.pem i private.pem na potrzeby kolejnych kroków.
sudo apt install snapd sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot sudo certbot --nginx
5. Tworzenie sieci VPC producentów
Uwaga: konfiguracja sieci hybrydowej NIE jest uwzględniona w tej konfiguracji.
Sieć VPC
Z Cloud Shell
gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom
Utwórz podsieć
Z Cloud Shell
gcloud compute networks subnets create vpc-demo-asia-southeast1 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=asia-southeast1
Utwórz podsieć proxy
Z Cloud Shell
gcloud compute networks subnets create proxy-subnet-asia-southeast1 \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=asia-southeast1 \ --network=vpc-demo-producer \ --range=10.0.3.0/24
Połączenia hybrydowe
Postępuj zgodnie z dokumentacją Cloud VPN, aby wdrożyć połączenie HA-VPN między siecią lokalną a siecią VPC producenta. Zachowaj domyślną konfigurację routera Cloud Router. Nie musimy dodawać adresów 130.211.0.0/22 ani 35.191.0.0/16 do reklam BGP.
6. Tworzenie hybrydowej grupy punktów końcowych sieci producentów
Utwórz hybrydową grupę punktów końcowych sieci i dodaj do niej adres IP:PORT maszyny wirtualnej w środowisku lokalnym.
Z Cloud Shell
gcloud compute network-endpoint-groups create on-prem-service-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--zone=asia-southeast1-b \
--network=vpc-demo-producer
gcloud compute network-endpoint-groups update on-prem-service-neg \
--zone=asia-southeast1-b \
--add-endpoint="ip=10.0.0.2,port=443"
7. Tworzenie wewnętrznego systemu równoważenia obciążenia HTTPS dla producentów
Obecnie zewnętrzny system równoważenia obciążenia HTTPS obsługuje tylko protokół HTTPS w przypadku NEG usługi Private Service Connect( dokumentacja). W przypadku opublikowanych usług musimy użyć wewnętrznego systemu równoważenia obciążenia HTTPS i włączyć globalny dostęp do reguł przekazywania.
W Cloud Shell utwórz regionalną kontrolę stanu.
gcloud compute health-checks create https on-prem-service-hc \
--region=asia-southeast1 \
--use-serving-port
W Cloud Shell utwórz usługę backendu i dodaj hybrydową grupę NEG.
gcloud compute backend-services create on-premise-service-backend \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --region=asia-southeast1 \ --health-checks=on-prem-service-hc \ --health-checks-region=asia-southeast1 gcloud compute backend-services add-backend on-premise-service-backend \ --network-endpoint-group=on-prem-service-neg \ --network-endpoint-group-zone=asia-southeast1-b \ --region=asia-southeast1 \ --balancing-mode=RATE \ --max-rate-per-endpoint=100
Utwórz mapę URL w Cloud Shell.
gcloud compute url-maps create on-premise-url \
--default-service on-premise-service-backend \
--region=asia-southeast1
W Cloud Shell utwórz regionalne certyfikaty SSL. Z maszyny wirtualnej zostaną pobrane 2 pliki certyfikatów.
gcloud compute ssl-certificates create www01 \
--certificate=fullchain.pem \
--private-key=private.pem \
--region=asia-southeast1
Utwórz w Cloud Shell serwer proxy HTTPS
gcloud compute target-https-proxies create on-premise-httpsproxy \
--ssl-certificates=www01 \
--url-map=on-premise-url \
--url-map-region=asia-southeast1 \
--region=asia-southeast1
Zarezerwuj w Cloud Shell wewnętrzny statyczny adres IP i utwórz regułę przekierowania
gcloud compute addresses create ilbaddress \
--region=asia-southeast1 \
--subnet=vpc-demo-asia-southeast1 \
--addresses=10.0.2.100
gcloud compute forwarding-rules create https-ilb-psc \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=vpc-demo-producer \
--subnet=vpc-demo-asia-southeast1 \
--address=ilbaddress \
--ports=443 \
--region=asia-southeast1 \
--target-https-proxy=on-premise-httpsproxy \
--target-https-proxy-region=asia-southeast1
--allow-global-access
8. Tworzenie instancji maszyny wirtualnej producenta
Utwórz maszynę wirtualną producenta na potrzeby weryfikacji.
Z Cloud Shell
gcloud compute instances create test01 \
--zone=asia-southeast1-b \
--image-family=debian-11 \
--image-project=debian-cloud \
--network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=vpc-demo-asia-southeast1 \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
Aby umożliwić IAP połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:
Z Cloud Shell
gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Z konsoli maszyny wirtualnej producenta uzyskaj dostęp do adresu [www01.yinghli.demo.altostrat.com](https://www01.yinghli.demo.altostrat.com) i rozwiąż adres IP wewnętrznego systemu równoważenia obciążenia HTTPS. Kod HTTP 200 oznacza, że konfiguracja działa zgodnie z oczekiwaniami.
curl -v --resolve www01.yinghli.demo.altostrat.com:443:10.0.2.100 https://www01.yinghli.demo.altostrat.com * Added www01.yinghli.demo.altostrat.com:443:10.0.2.100 to DNS cache * Hostname www01.yinghli.demo.altostrat.com was found in DNS cache * Trying 10.0.2.100:443... * Connected to www01.yinghli.demo.altostrat.com (10.0.2.100) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=www01.yinghli.demo.altostrat.com * start date: Jun 4 10:36:43 2023 GMT * expire date: Sep 2 10:36:42 2023 GMT * subjectAltName: host "www01.yinghli.demo.altostrat.com" matched cert's "www01.yinghli.demo.altostrat.com" * issuer: C=US; O=Let's Encrypt; CN=R3 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0x55865ef982e0) > GET / HTTP/2 > Host: www01.yinghli.demo.altostrat.com > user-agent: curl/7.74.0 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * old SSL session ID is stale, removing * Connection state changed (MAX_CONCURRENT_STREAMS == 100)! < HTTP/2 200 < server: nginx/1.18.0 < date: Mon, 05 Jun 2023 02:29:38 GMT < content-type: text/html < content-length: 35 < last-modified: Sun, 04 Jun 2023 09:02:16 GMT < etag: "647c5318-23" < accept-ranges: bytes < via: 1.1 google < Page on www01 in asia-southeast1-b * Connection #0 to host www01.yinghli.demo.altostrat.com left intact
Uwaga: nie możesz uzyskać bezpośredniego dostępu do usług HTTPS maszyny wirtualnej 10.0.0.2, ponieważ zapora sieciowa w lokalu zezwala na dostęp tylko podsieci proxy 10.0.3.0/24.
9. Tworzenie podsieci NAT w usłudze PSC
Z Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=vpc-demo-producer \ --region=asia-southeast1 \ --range=10.0.5.0/24 \ --purpose=private-service-connect
10. Tworzenie przyłącza usługi HTTPS
Tworzenie w Cloud Shell połączenia z usługą HTTPS
gcloud compute service-attachments create ilbserviceattach \ --region=asia-southeast1 \ --producer-forwarding-rule=https-ilb-psc \ --connection-preference=ACCEPT_AUTOMATIC \ --nat-subnets=psc-nat-subnet
Weryfikowanie przyłącza usługi HTTPS
gcloud compute service-attachments describe ilbserviceattach --region asia-southeast1
Zapisz nazwę przyłącza usługi:
projects/<project>/regions/asia-southeast1/serviceAttachments/ilbserviceattach
11. Tworzenie sieci VPC konsumentów
W sekcji poniżej sieć VPC konsumenta jest skonfigurowana w tym samym projekcie, ale obsługiwane są też inne projekty. Komunikacja między siecią konsumenta a siecią producenta odbywa się za pomocą połączenia z usługą zdefiniowanego w sieci producenta.
Sieć VPC
Z Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$prodproject --subnet-mode=custom
Utwórz podsieć
Z Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$prodproject --range=10.0.6.0/24 --network=vpc-demo-consumer --region=asia-southeast1
12. Tworzenie grupy punktów końcowych sieci PSC
Tworzenie grupy punktów końcowych sieci w usłudze PSC
Skopiuj nazwę poprzedniego załącznika usługi HTTPS i wklej ją w parametrach --psc-target-service
Z Cloud Shell
gcloud beta compute network-endpoint-groups create consumerpscneg \ --project=$prodproject \ --region=asia-southeast1 \ --network-endpoint-type=PRIVATE_SERVICE_CONNECT \ --psc-target-service=projects/<project>/regions/asia-southeast1/serviceAttachments/ilbserviceattach \ --network=vpc-demo-consumer \ --subnet=consumer-subnet
Po pomyślnym skonfigurowaniu PSC NEG w interfejsie wykonaj te czynności: Private Service Connect -> Published Services -> zwróć uwagę, że opublikowane połączenie ilbserviceattach wskazuje teraz 1 regułę przekierowania.

13. Tworzenie zewnętrznego systemu równoważenia obciążenia HTTPS po stronie klienta
Utwórz zewnętrzny system równoważenia obciążenia HTTPS i użyj grupy NEG usługi PSC jako usług backendu( dokumentacja).
Z Cloud Shell
gcloud compute addresses create httpspsclb \
--ip-version=IPV4 --global
gcloud compute backend-services create consumer-bs \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend consumer-bs \
--network-endpoint-group=consumerpscneg \
--network-endpoint-group-region=asia-southeast1 \
--global
gcloud compute url-maps create consumer-url \
--default-service=consumer-backend-service \
--global
gcloud compute ssl-certificates create wwwglobal \
--certificate=fullchain.pem \
--private-key=private.pem \
--global
gcloud compute target-https-proxies create consumer-url-target-proxy \
--url-map=consumer-url \
--ssl-certificates=wwwglobal
gcloud compute forwarding-rules create consumer-url-forwarding-rule \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM \
--address=httpspsclb \
--target-https-proxy=consumer-url-target-proxy \
--ports=443 \
--global
Zaktualizuj rekord DNS dla domeny www01.yinghli.demo.altostrat.com i skieruj go na publiczny adres IP zewnętrznego systemu równoważenia obciążenia HTTPS.
gcloud dns --project=$prodproject record-sets update www01.yinghli.demo.altostrat.com. --type="A" --zone="yinghli-demo" --rrdatas="34.102.178.214" --ttl="300"
14. Weryfikacja
Na laptopie otwórz stronę https://www01.yinghli.demo.altostrat.com za pomocą narzędzia curl.
curl -v https://www01.yinghli.demo.altostrat.com * Trying 34.102.178.214:443... * Connected to www01.yinghli.demo.altostrat.com (34.102.178.214) port 443 (#0) * ALPN: offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN: server accepted h2 * Server certificate: * subject: CN=www01.yinghli.demo.altostrat.com * start date: Jun 4 10:36:43 2023 GMT * expire date: Sep 2 10:36:42 2023 GMT * subjectAltName: host "www01.yinghli.demo.altostrat.com" matched cert's "www01.yinghli.demo.altostrat.com" * issuer: C=US; O=Let's Encrypt; CN=R3 * SSL certificate verify ok. * using HTTP/2 * h2h3 [:method: GET] * h2h3 [:path: /] * h2h3 [:scheme: https] * h2h3 [:authority: www01.yinghli.demo.altostrat.com] * h2h3 [user-agent: curl/8.0.0] * h2h3 [accept: */*] * Using Stream ID: 1 (easy handle 0x149019a00) > GET / HTTP/2 > Host: www01.yinghli.demo.altostrat.com > user-agent: curl/8.0.0 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * old SSL session ID is stale, removing < HTTP/2 200 < server: nginx/1.18.0 < date: Mon, 05 Jun 2023 02:48:43 GMT < content-type: text/html < content-length: 35 < last-modified: Sun, 04 Jun 2023 09:02:16 GMT < etag: "647c5318-23" < accept-ranges: bytes < via: 1.1 google, 1.1 google < alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 < Page on www01 in asia-southeast1-b * Connection #0 to host www01.yinghli.demo.altostrat.com left intact
15. Procedura czyszczenia
Procedura czyszczenia sieci producenta
Uwaga: kroki czyszczenia pokazują tylko konfigurację związaną z systemem równoważenia obciążenia i PSC. Nie obejmują one sieci VPC ani połączeń hybrydowych.
Usuwanie komponentów laboratorium z jednej powłoki chmury w terminalu
gcloud compute forwarding-rules delete consumer-url-forwarding-rule --global gcloud compute target-https-proxies delete consumer-url-target-proxy gcloud compute ssl-certificates delete wwwglobal --global gcloud compute url-maps delete consumer-url gcloud compute backend-services delete consumer-bs --global gcloud compute addresses delete httpspsclb --global gcloud beta compute network-endpoint-groups delete consumerpscneg --region=asia-southeast1 gcloud compute service-attachments delete ilbserviceattach --region=asia-southeast1 gcloud compute networks subnets delete psc-nat-subnet --region=asia-southeast1 gcloud compute forwarding-rules delete https-ilb-psc --region=asia-southeast1 gcloud compute addresses delete ilbaddress --region=asia-southeast1 gcloud compute target-https-proxies delete on-premise-httpsproxy --region=asia-southeast1 gcloud compute ssl-certificates delete www01 --region=asia-southeast1 gcloud compute url-maps delete on-premise-url --region=asia-southeast1 gcloud compute backend-services delete on-premise-service-backend --region=asia-southeast1 gcloud compute health-checks delete on-prem-service-hc --region=asia-southeast1 gcloud compute network-endpoint-groups delete on-prem-service-neg --zone=asia-southeast1-b gcloud compute networks subnets delete proxy-subnet-asia-southeast1 --region=asia-southeast1
16. Gratulacje!
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Wewnętrzny system równoważenia obciążenia HTTPS z hybrydową grupą NEG i rozproszonym sprawdzaniem stanu
- Załącznik usługi PSC z wewnętrznym systemem równoważenia obciążenia HTTPS
- Konfigurowanie grupy punktów końcowych sieci PSC
- Udostępnianie internetowej grupy punktów końcowych PSC za pomocą zewnętrznego systemu równoważenia obciążenia HTTPS