Konfigurowanie Cloud CDN za pomocą Cloud Run, funkcji w chmurze lub App Engine

Na tej stronie opisujemy, jak utworzyć zewnętrzny system równoważenia obciążenia HTTP(S) w celu kierowania żądań do backendów bez serwera. Termin „bez serwera” odnosi się do następujących usług obliczeniowych bez serwera: App Engine, Cloud Funkcje i Cloud Run.

Bez serwera NEG umożliwiają korzystanie z aplikacji Google Cloud bez serwera z zewnętrznym równoważeniem obciążenia HTTP(S). Po skonfigurowaniu równoważenia obciążenia za pomocą backendu NEG bez serwera żądania są kierowane do backendu aplikacji bez serwera.

Więcej informacji o NEG bez serwera znajdziesz w artykule Omówienie NEG bez serwera.

Zanim zaczniesz

  1. Wdrażanie usługi App Engine, funkcji w chmurze lub usługi Cloud Run.
  2. Zainstaluj pakiet Google Cloud SDK, jeśli jeszcze go nie masz.
  3. Skonfiguruj uprawnienia.
  4. Dodaj zasób certyfikatu SSL.

Wdróż usługę App Engine, funkcje w chmurze lub usługę Cloud Run

Instrukcje na tej stronie zakładają, że masz już uruchomioną usługę Cloud Run, funkcje Cloud lub App Engine.

W przykładzie na tej stronie użyliśmy krótkiego wprowadzenia do Cloud Pythona, aby wdrożyć usługę Cloud Run w regionie us-central1. Z dalszej części tej strony dowiesz się, jak skonfigurować zewnętrzny system równoważenia obciążenia HTTP(S), który korzysta z wewnętrznego serwera NEG do kierowania żądań do tej usługi.

Jeśli aplikacja bez serwera nie została jeszcze wdrożona lub jeśli chcesz wypróbować NEG bez serwera z przykładową aplikacją, użyj jednego z tych krótkich przewodników. Aplikację bez serwera możesz utworzyć w dowolnym regionie, ale później musisz użyć tego samego regionu, aby utworzyć NEG i równoważenie obciążenia bez serwera.

Cloud Run

Aby utworzyć prostą aplikację Witaj świecie, spakuj ją do obrazu kontenera, a następnie wdróż go w Cloud Run, zobacz Krótkie wprowadzenie: tworzenie i wdrażanie.

Jeśli masz już przykładowy kontener przesłany do rejestru kontenerów, zobacz Krótkie wprowadzenie: wdrażanie wstępnie utworzonego kontenera.

Funkcje w chmurze

Zobacz Funkcje w chmurze: krótki przewodnik po Pythonie.

App Engine

Zapoznaj się z tymi krótkimi przewodnikami dotyczącymi App Engine dla języka Python 3:

Zainstaluj pakiet Google Cloud SDK

Zainstaluj narzędzie wiersza poleceń gcloud. Zobacz Omówienie gcloud, aby uzyskać informacje o konfiguracji i narzędziu.

Jeśli narzędzie wiersza poleceń gcloud nie zostało wcześniej uruchomione, najpierw uruchom polecenie gcloud init, aby zainicjować katalog gcloud.

Skonfiguruj uprawnienia

Aby postępować zgodnie z tym przewodnikiem, musisz utworzyć projekt NEG bez serwera i utworzyć zewnętrzny system równoważenia obciążenia HTTP(S) w projekcie. Musisz być właścicielem lub redaktorem projektu albo mieć te role uprawnień Compute Engine:

Zadanie Wymagana rola
Utwórz komponenty równoważenia obciążenia i sieci Administrator sieci
Tworzenie i modyfikowanie kategorii NEG Administrator instancji Compute
Tworzenie i modyfikowanie certyfikatów SSL Administrator zabezpieczeń

Rezerwowanie zewnętrznego adresu IP

Gdy Twoje usługi są już skonfigurowane, skonfiguruj globalny statyczny zewnętrzny adres IP, którego klienci używają do docierania do systemu równoważenia obciążenia.

Konsola

  1. Otwórz stronę Zewnętrzne adresy IP w Google Cloud Console.
    Wejdź na stronę Zewnętrzne adresy IP
  2. Kliknij Zarezerwuj adres statyczny, by zarezerwować adres IPv4.
  3. Przypisz nazwę z example-ip.
  4. Ustaw poziom sieci na Premium.
  5. Ustaw wersję IP na IPv4.
  6. Ustaw Typ na Globalny.
  7. Kliknij Zarezerwuj.

gcloud

gcloud compute addresses create example-ip \
    --ip-version=IPV4 \
    --global

Zanotuj zarezerwowany adres IPv4:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Tworzenie zasobu certyfikatu SSL

Aby utworzyć równoważenie obciążenia HTTPS, musisz dodać zasób certyfikatu SSL do interfejsu równoważenia obciążenia. Utwórz zasób certyfikatu SSL, używając certyfikatu SSL zarządzanego przez Google lub samodzielnie zarządzanego certyfikatu SSL.

  • Certyfikaty zarządzane przez Google Zalecamy używanie certyfikatów zarządzanych przez Google, ponieważ Google Cloud automatycznie uzyskuje certyfikaty, zarządza nimi i je odnawia. Aby utworzyć certyfikat zarządzany przez Google, musisz mieć domenę i rekordy DNS dla tej domeny. Jeśli nie masz jeszcze domeny, możesz ją uzyskać w Google Domains. Dodatkowo musisz zaktualizować rekord DNS A domeny, aby wskazywał adres IP systemu równoważenia obciążenia utworzony w poprzednim kroku (example-ip). Szczegółowe instrukcje znajdziesz w artykule Korzystanie z certyfikatów zarządzanych przez Google.

  • Certyfikaty z podpisem własnym. Jeśli nie chcesz w tej chwili konfigurować domeny, możesz użyć samodzielnie podpisanego certyfikatu SSL.

W tym przykładzie założono, że został już utworzony zasób certyfikatu SSL.

Jeśli chcesz przetestować ten proces bez tworzenia zasobu certyfikatu SSL (lub domeny wymaganej przez certyfikaty zarządzane przez Google), możesz zamiast tego skonfigurować instrukcje równoważenia obciążenia HTTP.

Tworzenie zewnętrznego równoważenia obciążenia HTTP(S)

Na poniższym diagramie system równoważenia obciążenia korzysta z backendu NEG bez użycia serwera do kierowania żądań do usługi Cloud Run bez serwera. W tym przykładzie użyliśmy krótkiego przewodnika Cloud Run dla języka Python do wdrożenia usługi Cloud Run.

Równoważenie obciążenia HTTPS w aplikacji Cloud Run (kliknij, aby powiększyć)
Równoważenie obciążenia HTTPS w aplikacji Cloud Run

Kontrola stanu nie jest obsługiwana w przypadku usług backendu z backendami serwera NEG, więc nie musisz tworzyć reguły zapory sieciowej, która pozwala na kontrolę stanu, jeśli system równoważenia obciążenia ma tylko serwery NEG bez serwera.

Konsola

Nadawanie nazwy systemowi równoważenia obciążenia

  1. Otwórz stronę równoważenia obciążenia w Google Cloud Console.
    Przejdź do strony równoważenia obciążenia
  2. W sekcji Równoważenie obciążenia HTTP(S) kliknij Rozpocznij konfigurację.
  3. W sekcji Dostęp tylko do internetu lub tylko wewnętrznie wybierz Z internetu na moje maszyny wirtualne.
  4. Kliknij Dalej.
  5. W polu Nazwa systemu równoważenia obciążenia wpisz serverless-lb.
  6. Aby kontynuować, pozostaw okno otwarte.

Konfigurowanie usług backendu

  1. Kliknij Konfiguracja backendu.
  2. W menu Utwórz lub wybierz usługę backendu najedź kursorem myszy na Usługi backendu i wybierz Utwórz usługę backendu.
  3. Wpisz nazwę.
  4. W sekcji Typ backendu wybierz Grupa punktów końcowych sieci bez serwera.
  5. Nie zmieniaj wartości Protocol (Protokół). Ten parametr jest ignorowany.
  6. W obszarze Backendy w oknie Nowy backend wybierz Utwórz grupę punktów końcowych sieci bez serwera.
  7. Wpisz nazwę.
  8. W sekcji Region wybierz us-Central1. Następnie wybierz Cloud Run.
  9. Kliknij Wybierz nazwę usługi.
  10. Z menu Usługa wybierz usługę Cloud Run, dla której chcesz utworzyć równoważenie obciążenia.
  11. Kliknij Utwórz.
  12. W oknie Nowy backend kliknij Gotowe.
  13. Wybierz Włącz Cloud CDN. Zachowaj domyślne ustawienia trybu pamięci podręcznej i TTL.
  14. Kliknij Utwórz.

Konfigurowanie reguł hosta i dopasowań ścieżek

Reguły hosta i dopasowywanie ścieżek są składnikami konfiguracji mapy URL zewnętrznego równoważenia obciążenia HTTP(S).

  1. Kliknij Reguły hosta i ścieżki.
  2. Zachowaj domyślne hosty i ścieżki. W tym przykładzie wszystkie żądania trafiają do usługi backendu utworzonej w poprzednim kroku.

Konfigurowanie interfejsu użytkownika

  1. Kliknij Konfiguracja interfejsu użytkownika.
  2. Wpisz nazwę.
  3. Aby utworzyć równoważenie obciążenia HTTPS, musisz mieć certyfikat SSL (gcloud compute ssl-certificates list). Zalecamy korzystanie z certyfikatu zarządzanego przez Google w sposób opisany wcześniej. Aby skonfigurować zewnętrzny system równoważenia obciążenia HTTP(S), wypełnij poniższe pola.

    Sprawdź, czy te wartości są skonfigurowane:

    Właściwość Wartość (wpisz wartość lub wybierz określoną opcję)
    Protokół HTTPS
    Typ usług sieciowych Premium
    Wersja IP IPv4
    Adres IP example-IP
    Port 443
    Certyfikat Wybierz istniejący certyfikat SSL lub utwórz nowy.

    Aby utworzyć równoważenie obciążenia HTTPS, musisz mieć zasób certyfikatu SSL do użycia w serwerze proxy HTTPS. Możesz utworzyć zasób certyfikatu SSL, korzystając z certyfikatu SSL zarządzanego przez Google lub samodzielnie zarządzanego certyfikatu SSL.
    Aby utworzyć certyfikat zarządzany przez Google, musisz mieć domenę. Rekord A domeny musi być przypisany do adresu IP systemu równoważenia obciążenia (w tym przykładzie jest to example-ip). Zalecamy używanie certyfikatów zarządzanych przez Google, ponieważ Google Cloud automatycznie uzyskuje certyfikaty, zarządza nimi i je odnawia. Jeśli nie masz domeny, do testowania możesz użyć samodzielnie podpisanego certyfikatu SSL.

  4. Kliknij Gotowe.

Sprawdzanie konfiguracji

  1. Kliknij Sprawdź i sfinalizuj.
  2. Zapoznaj się z zapleczem, regułami hosta i ścieżki oraz interfejsem użytkownika.
  3. Kliknij Utwórz.
  4. Poczekaj, aż system równoważenia obciążenia zostanie utworzony.
  5. Kliknij nazwę systemu równoważenia obciążenia (bez serwera-lb).
  6. Zanotuj adres IP systemu równoważenia obciążenia dla następnego zadania. Jest to tzw. IP_ADDRESS.

gcloud

  1. Utwórz NEG bez serwera dla swojej aplikacji bez serwera. Aby utworzyć NEG bez serwera z usługą Cloud Run:

    gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \
        --region=us-central1 \
        --network-endpoint-type=serverless  \
        --cloud-run-service=CLOUD_RUN_SERVICE_NAME
    
    Więcej opcji znajdziesz w gcloud przewodniku po gcloud compute network-endpoint-groups create.
  2. Utwórz usługę backendu.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --global \
        --enable-cdn \
        --cache-mode=CACHE_MODE \
        --custom-response-header='Cache-Status: {cdn_cache_status}' \
        --custom-response-header='Cache-ID: {cdn_cache_id}'
    

    Zastąp CACHE_MODE jednym z tych elementów:

    • CACHE_All_STATIC (domyślnie): automatycznie zapisuje w pamięci podręcznej zawartość statyczną. Odpowiedzi oznaczone jako niebuforowane (private, no-store lub no-cache w nagłówkach odpowiedzi Cache-Control) nie są zapisywane w pamięci podręcznej. Aby zawartość dynamiczna była buforowana, musi mieć prawidłowe nagłówki pamięci podręcznej. Jest to domyślne działanie wszystkich nowych backendów obsługujących Cloud CDN.

    • USE_ORIGIN_HEADERS: wymaga, aby źródło skonfigurowało prawidłowe nagłówki pamięci podręcznej na potrzeby buforowania treści. Odpowiedzi bez tych nagłówków nie są zapisywane w pamięci podręcznej Google i wymagają pełnej podróży do źródła każdego żądania, co może mieć wpływ na wydajność i zwiększyć obciążenie serwera źródłowego. Jest to domyślne działanie wszystkich istniejących backendów obsługujących Cloud CDN.

    • FORCE_CACHE_ALL: zapisuje w pamięci podręcznej wszystkie treści, ignorując wszystkie dyrektywy private, no-store i no-cache w Cache-Control nagłówkach odpowiedzi. Może to spowodować zapisanie w pamięci podręcznej treści prywatnych dla poszczególnych użytkowników (umożliwiających identyfikację użytkowników). Włącz tę funkcję tylko w backendach, które nie wyświetlają treści prywatnych ani dynamicznych, takich jak zasobniki Cloud Storage.

    Informacje o instrukcjach zapisywanych w pamięci podręcznej, które Cloud CDN rozpoznaje, oraz informacjach, które nie są zapisywane w pamięci podręcznej Cloud CDN, znajdziesz w artykułach Zawartość w pamięci podręcznej i Zawartość, której nie można buforować.

  3. Dodaj NEG bez serwera jako backend do usługi:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --global \
        --network-endpoint-group=SERVERLESS_NEG_NAME \
        --network-endpoint-group-region=us-central1
    
  4. Utwórz mapę URL do kierowania żądań przychodzących do usługi backendu:
    gcloud compute url-maps create URL_MAP_NAME \
        --default-service BACKEND_SERVICE_NAME
    

    Ta przykładowa mapa URL jest kierowana tylko na jedną usługę backendu reprezentującą jedną aplikację bez serwera, więc nie musimy konfigurować reguł hosta ani dopasowań ścieżek. Jeśli masz więcej niż jedną usługę backendu, możesz używać reguł hosta do kierowania żądań do różnych usług na podstawie nazwy hosta. Możesz też skonfigurować dopasowywanie ścieżek, by kierować żądania do różnych usług na podstawie ścieżki żądania.

  5. Aby utworzyć równoważenie obciążenia HTTPS, musisz mieć zasób certyfikatu SSL do użycia w docelowym serwerze proxy HTTPS. Możesz utworzyć zasób certyfikatu SSL, korzystając z certyfikatu SSL zarządzanego przez Google lub samodzielnie zarządzanego certyfikatu SSL. Zalecamy używanie certyfikatów zarządzanych przez Google, ponieważ Google Cloud automatycznie uzyskuje certyfikaty, zarządza nimi i je odnawia.

    Aby utworzyć certyfikat zarządzany przez Google, musisz mieć domenę. Jeśli nie masz domeny, do testowania możesz użyć samodzielnie podpisanego certyfikatu SSL.

    Aby utworzyć zasób certyfikatu SSL zarządzanego przez Google:

    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --domains DOMAIN
    

    Aby utworzyć samodzielnie zarządzany zasób certyfikatu SSL:

    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
    

  6. Utwórz docelowy serwer proxy HTTP(S) do kierowania żądań do mapy URL.

    W przypadku równoważenia obciążenia HTTPS utwórz docelowy serwer proxy HTTPS. Serwer proxy to część systemu równoważenia obciążenia, która przechowuje certyfikat SSL dla równoważenia obciążenia HTTPS, więc w tym kroku wczytujesz też swój certyfikat.

    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
        --ssl-certificates=SSL_CERTIFICATE_NAME \
        --url-map=URL_MAP_NAME
    

  7. Utwórz globalną regułę przekierowania, by kierować przychodzące żądania do serwera proxy.

    W przypadku równoważenia obciążenia HTTPS:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
        --address=example-ip \
        --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
        --global \
        --ports=443
    

Aktualizowanie rekordów DNS domeny w celu użycia adresu IP systemu równoważenia obciążenia

Jeśli jeszcze tego nie zrobiłeś, zaktualizuj rekord DNS A lub AAAA domeny, aby wskazywał adres IP systemu równoważenia obciążenia, tak aby ruch wysyłany do istniejących niestandardowych adresów URL domeny był kierowany przez system równoważenia obciążenia.

Jeśli na przykład masz niestandardową domenę example.com i wszystkie usługi są zmapowane na tę domenę, zaktualizuj rekord DNS A lub AAAA dla adresu example.com, aby wskazywał adres IP systemu równoważenia obciążenia.

Przed zaktualizowaniem rekordów DNS możesz przetestować konfigurację lokalnie, wymuszając rozpoznawanie lokalnej domeny DNS w adresie IP systemu równoważenia obciążenia. Aby przetestować lokalnie, zmodyfikuj plik /etc/hosts/ na komputerze lokalnym tak, aby wskazywał example.com adres IP systemu równoważenia obciążenia, lub użyj flagi curl --resolve, aby wymusić curl użycie adresu IP systemu równoważenia obciążenia. adres żądania.

Gdy rekord DNS domeny example.com zostanie rozpoznany na potrzeby adresu IP systemu równoważenia obciążenia HTTPS, żądania wysyłane do example.com będą kierowane przez system równoważenia obciążenia. System równoważenia obciążenia wysyła je do odpowiedniej usługi backendu zgodnie z mapą URL. Poza tym jeśli usługa backendu jest skonfigurowana za pomocą maski adresu URL, NEG bez serwera używa jej do kierowania żądania do odpowiedniej usługi Cloud Run, usługi w chmurze lub App Engine.

Jeśli używasz certyfikatów zarządzanych przez Google, migracja istniejącej usługi do zewnętrznego systemu równoważenia obciążenia HTTP(S) może spowodować pewne przestoje w działaniu, zwykle krótsze niż godzina. Dzieje się tak, ponieważ certyfikat SSL zewnętrznego systemu równoważenia obciążenia(S) nie zostanie udostępniony, dopóki nie zaktualizujesz rekordów DNS tak, aby wskazywały adres IP systemu równoważenia obciążenia.

Testowanie systemu równoważenia obciążenia

Po skonfigurowaniu równoważenia obciążenia możesz rozpocząć wysyłanie ruchu na adres IP tego systemu. Jeśli domena została skonfigurowana, możesz też wysyłać ruch do tej domeny. Rozpowszechnienie systemu DNS może jednak zająć trochę czasu, aby można było rozpocząć od testowania przy użyciu adresu IP.

  1. Otwórz stronę równoważenia obciążenia w Google Cloud Console.
    Przejdź do strony równoważenia obciążenia
  2. Kliknij utworzony przed chwilą system równoważenia obciążenia.
  3. Zanotuj Adres IP systemu równoważenia obciążenia.
  4. W przypadku systemu równoważenia obciążenia HTTPS możesz przetestować system równoważenia obciążenia za pomocą przeglądarki, przechodząc do strony https://IP_ADDRESS. Zastąp IP_ADDRESS adresem systemu równoważenia obciążenia. Powinno nastąpić przekierowanie na stronę główną usługi helloworld.

    Jeśli to nie pomoże i korzystasz z certyfikatu zarządzanego przez Google, sprawdź, czy stan zasobu certyfikatu to AKTYWNE. Więcej informacji znajdziesz w artykule Stan zasobu certyfikatu SSL zarządzanego przez Google.

    Jeśli do testowania został użyty samodzielnie podpisany certyfikat, przeglądarka wyświetli ostrzeżenie. Musisz wyraźnie poinformować przeglądarkę o zaakceptowaniu samodzielnie podpisanego certyfikatu. Kliknij ostrzeżenie, by zobaczyć stronę.

  5. Aby zweryfikować odpowiedzi z pamięci podręcznej, użyj polecenia kurl z wiersza polecenia komputera lokalnego. ZastąpIP_ADDRESS zadres IPv4 systemu równoważenia obciążenia.

    curl -v -o/dev/null https://IP_ADDRESS
    

    Jeśli używasz certyfikatu zarządzanego przez Google, przetestuj domenę wskazującą adres IP systemu równoważenia obciążenia. Przykład:

    curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
    

    Jeśli używasz samodzielnie podpisanego certyfikatu, musisz też określić flagę -k. Opcja kurl -k umożliwia pracę z kursem, jeśli masz samodzielnie podpisany certyfikat. Parametru -k należy używać tylko do testowania własnej witryny. W normalnych warunkach ważny certyfikat jest ważnym zabezpieczeniem i ostrzeżenia o certyfikatach nie powinny być ignorowane.

    Dane wyjściowe powinny zawierać niestandardowe nagłówki Cache-ID i Cache-Status skonfigurowane tak, by wskazywały, czy odpowiedź została wyświetlona z pamięci podręcznej:

    HTTP/2 200
    cache-status: hit
    cache-id: SEA-b9fa975e
    

    Dane wyjściowe zawierają nagłówki odpowiedzi wskazujące na działanie w pamięci podręcznej, co oznacza, że zasób statyczny w aplikacji bez serwera został wyświetlony użytkownikowi z pamięci podręcznej Cloud CDN.

    Nagłówek cache-status zawiera wartość disabled odpowiadającą odpowiedziom, które nie są przechowywane w pamięci podręcznej Cloud CDN. W przypadku odpowiedzi w pamięci podręcznej wartość nagłówka cache-status to hit, miss lub revalidated.

Wyłączanie Cloud CDN

Konsola

Wyłącz Cloud CDN dla pojedynczej usługi backendu

  1. W Google Cloud Console otwórz stronę Cloud CDN.

    Otwórz stronę Cloud CDN

  2. W prawej części wiersza początkowego kliknij Menu i wybierz Edytuj.
  3. Wyczyść pola wyboru wszystkich usług backendu, których nie chcesz już używać w Cloud CDN.
  4. Kliknij Aktualizuj.

Usuń Cloud CDN dla wszystkich usług backendu dla źródła

  1. W konsoli Cloud otwórz stronę Cloud CDN.

    Otwórz stronę Cloud CDN

  2. W prawej części wiersza początkowego kliknij Menu i wybierz Usuń.
  3. Aby potwierdzić tę czynność, kliknij Usuń.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --no-enable-cdn

Wyłączenie Cloud CDN nie powoduje unieważnienia ani wyczyszczenia pamięci podręcznej. Jeśli wyłączysz i ponownie włączysz Cloud CDN, większość lub wszystkie Twoje treści w pamięci podręcznej mogą być nadal przechowywane w pamięci podręcznej. Aby zapobiec używaniu treści w pamięci podręcznej, musisz unieważnić te treści.

Co dalej?