Cloud Run을 사용하여 리전 내부 애플리케이션 부하 분산기 설정

이 문서에서는 Cloud Run을 사용하여 리전별 내부 애플리케이션 부하 분산기를 배포하는 방법을 보여줍니다. 이를 설정하려면 부하 분산기에 서버리스 NEG 백엔드를 사용합니다.

이 절차를 시작하기 전에 다음 주제를 숙지해야 합니다.

이 가이드에서는 요청을 서버리스 NEG 백엔드로 프록시하는 애플리케이션 부하 분산기를 구성하는 방법을 설명합니다.

서버리스 NEG를 사용하면 부하 분산기에서 Cloud Run 서비스를 사용할 수 있습니다. 서버리스 NEG 백엔드로 부하 분산기를 구성하면 부하 분산기에 대한 요청이 Cloud Run 백엔드로 라우팅됩니다.

시작하기 전에

  1. Google Cloud CLI 설치
  2. Cloud Run 서비스 배포
  3. 권한 구성

Google Cloud SDK 설치

Google Cloud CLI 도구를 설치합니다. 도구에 대한 개념 및 설치 정보는 gcloud 개요를 참조하세요.

이전에 gcloud CLI를 실행한 적이 없으면 먼저 gcloud init를 실행하여 gcloud 디렉터리를 초기화합니다.

Cloud Run 서비스 배포

이 페이지의 안내에서는 이미 Cloud Run 서비스가 실행 중이라고 가정합니다.

이 페이지의 예시에서는 모든 Cloud Run 빠른 시작을 사용하여 Cloud Run 서비스를 배포할 수 있습니다.

서버리스 NEG, 부하 분산기, 모든 클라이언트 VM은 Cloud Run 서비스와 동일한 리전에 있어야 합니다.

인터넷에서 Cloud Run 서비스에 액세스하지 못하게 하려면 인그레스를 internal로 제한합니다. 내부 애플리케이션 부하 분산기에서 전송되는 트래픽은 내부 트래픽으로 간주됩니다.

gcloud run deploy CLOUD_RUN_SERVICE_NAME \
    --platform=managed \
    --allow-unauthenticated \
    --ingress=internal \
    --region=REGION \
    --image=IMAGE_URL

만드는 서비스의 이름을 기록해 둡니다. 이 페이지의 나머지 부분에서는 이 서비스로 요청을 라우팅하는 부하 분산기를 설정하는 방법을 보여줍니다.

권한 구성

이 가이드를 따르려면 서버리스 NEG를 만들고 프로젝트에 부하 분산기를 만들어야 합니다. 프로젝트 소유자 또는 편집자이거나 다음 Compute Engine IAM 역할 및 권한을 보유해야 합니다.

작업 필요한 역할
부하 분산기 및 네트워킹 구성요소 만들기 네트워크 관리자
NEG 생성 및 수정 Compute 인스턴스 관리자
SSL 인증서 생성 및 수정 보안 관리자

네트워크 및 서브넷 구성

네트워크 및 해당 서브넷을 구성하려면 다음 태스크를 수행합니다.

  • VPC 네트워크 및 서브넷을 만듭니다.
  • 프록시 전용 서브넷을 만듭니다.

VPC 네트워크 만들기

커스텀 모드 VPC 네트워크를 만든 다음 리전 내에서 원하는 서브넷을 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름lb-network를 입력합니다.

  4. 서브넷 생성 모드커스텀을 선택합니다.

  5. 새 서브넷 섹션에서 서브넷에 다음 구성 매개변수를 지정합니다.

    1. 이름lb-subnet를 입력합니다.
    2. 리전을 선택합니다.
    3. IP 주소 범위10.1.2.0/24을 입력합니다.
    4. 완료를 클릭합니다.
  6. 만들기를 클릭합니다.

gcloud

  1. gcloud compute networks create 명령어를 사용해서 커스텀 VPC 네트워크를 만듭니다.

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. lb-network 네트워크에 서브넷을 만듭니다. 이 예시에서는 서브넷에 IP 주소 범위 10.1.2.0/24를 사용합니다. 유효한 서브넷 범위를 구성할 수 있습니다.

    gcloud compute networks subnets create lb-subnet \
    --network=lb-network \
    --range=10.1.2.0/24 \
    --region=REGION
    

프록시 전용 서브넷 만들기

lb-network 네트워크의 특정 리전에 있는 모든 리전별 Envoy 기반 부하 분산기에 대해 프록시 전용 서브넷을 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 프록시 전용 서브넷을 추가할 공유 VPC 네트워크의 이름을 클릭합니다.

  3. 서브넷 추가를 클릭합니다.

  4. 이름 필드에 proxy-only-subnet를 입력합니다.

  5. 리전을 선택합니다.

  6. 용도리전별 관리형 프록시로 설정합니다.

  7. IP 주소 범위10.129.0.0/23으로 입력합니다.

  8. 추가를 클릭합니다.

gcloud

  1. gcloud compute networks subnets create 명령어를 사용하여 프록시 전용 서브넷을 만듭니다.

    이 예시에서는 프록시 전용 서브넷에 IP 주소 범위 10.129.0.0/23을 사용합니다. 유효한 서브넷 범위를 구성할 수 있습니다.

    gcloud compute networks subnets create proxy-only-subnet \
     --purpose=REGIONAL_MANAGED_PROXY \
     --role=ACTIVE \
     --region=REGION \
     --network=lb-network \
     --range=10.129.0.0/23
    

부하 분산기 만들기

다음 다이어그램에서 부하 분산기는 서버리스 NEG 백엔드를 사용하여 서버리스 Cloud Run 서비스로 요청을 전달합니다.

부하 분산기에서 서버리스 NEG 백엔드로 이동하는 트래픽은 방화벽 규칙이 적용되지 않는 VPC 외부에 정의된 특수 경로를 사용합니다. 따라서 부하 분산기에 서버리스 NEG 백엔드만 있으면 프록시 전용 서브넷에서 서버리스 백엔드로 이동하는 트래픽을 허용하는 방화벽 규칙을 만들 필요가 없습니다.

Cloud Run 애플리케이션의 내부 HTTP(S) 부하 분산 아키텍처
Cloud Run 애플리케이션의 내부 HTTP(S) 부하 분산 아키텍처 (확대하려면 클릭)

콘솔

구성 시작

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기 만들기를 클릭합니다.
  3. 부하 분산기 유형에서 애플리케이션 부하 분산기(HTTP/HTTPS)를 선택하고 다음을 클릭합니다.
  4. 공개 또는 내부에서 내부를 선택하고 다음을 클릭합니다.
  5. 리전 간 또는 단일 리전 배포리전 워크로드에 적합을 선택하고 다음을 클릭합니다.
  6. 구성을 클릭합니다.

기본 구성

  1. 부하 분산기 이름에 serverless-lb를 입력합니다.
  2. 네트워크lb_network로 선택합니다.
  3. 계속하려면 창을 열어둡니다.

프런트엔드 구성

  1. 계속하기 전에 SSL 인증서가 있는지 확인합니다.
  2. 프런트엔드 구성을 클릭합니다.
  3. 이름을 입력합니다.
  4. 내부 애플리케이션 부하 분산기를 구성하려면 다음과 같이 필드를 채웁니다.
    1. 프로토콜 아래에서 HTTPS를 선택합니다.
    2. 서브네트워크에서 서브네트워크를 선택합니다.
    3. IP 버전에서 IPv4를 선택합니다.
    4. IP 주소에서 임시를 선택합니다.
    5. 포트에서 443을 선택합니다.
    6. 인증서에서 기존 SSL 인증서를 선택하거나 새 인증서를 만듭니다.

      다음 예는 Compute Engine SSL 인증서를 만드는 방법을 보여줍니다.

    7. 새 인증서 만들기를 클릭합니다.
      1. 이름 필드에 이름을 입력합니다.
      2. 해당 필드에 다음 PEM 형식의 파일을 업로드합니다.
        • 인증서
        • 비공개 키
      3. 만들기를 클릭합니다.

    SSL 인증서 리소스를 설정하지 않고 이 프로세스를 테스트하려면 HTTP 부하 분산기를 설정할 수 있습니다.

  5. 선택사항: HTTP 부하 분산기를 만들려면 다음을 수행합니다.
    1. 프로토콜에서 HTTP를 선택합니다.
    2. 서브네트워크에서 서브네트워크를 선택합니다.
    3. IP 버전에서 IPv4를 선택합니다.
    4. IP 주소에서 임시를 선택합니다.
    5. 포트에서 80을 선택합니다.
  6. 완료를 클릭합니다.

백엔드 서비스 구성

  1. 백엔드 구성을 클릭합니다.
  2. 백엔드 서비스 만들기 또는 선택 드롭다운 메뉴에서 백엔드 서비스 위에 마우스 포인터를 올려놓은 후에 백엔드 서비스 만들기를 선택합니다.
  3. 백엔드 서비스 만들기 창에서 이름을 입력합니다.
  4. 백엔드 유형에서 서버리스 네트워크 엔드포인트 그룹을 선택합니다.
  5. 프로토콜은 그대로 둡니다. 이 매개변수는 무시됩니다.
  6. 백엔드 > 새 백엔드에서 서버리스 네트워크 엔드포인트 그룹 만들기를 선택합니다.
    1. 서버리스 네트워크 엔드포인트 그룹 만들기 창에서 이름을 입력합니다.
    2. 리전 아래에 부하 분산기의 리전이 표시됩니다.
    3. 서버리스 네트워크 엔드포인트 그룹 유형 필드에서 Cloud Run을 선택합니다. Cloud Run만 지원되는 유형입니다.
    4. 서비스 이름 선택을 선택합니다.
    5. 서비스 드롭다운 목록에서 부하 분산기를 만들려는 Cloud Run 서비스를 선택합니다.
    6. 완료를 클릭합니다.
    7. 만들기를 클릭합니다.
  7. 백엔드 서비스 만들기 창에서 만들기를 클릭합니다.

라우팅 규칙 구성

라우팅 규칙은 트래픽의 전달 방식을 결정합니다. 백엔드 서비스나 Kubernetes 서비스로 트래픽을 전달할 수 있습니다. 호스트 및 경로 일치자와 명시적으로 일치하지 않는 트래픽은 기본 서비스로 전달됩니다.

  1. 단순한 호스트 및 경로 규칙을 클릭합니다.
  2. Select a backend service from the 백엔드 드롭다운 목록에서 백엔드 서비스를 선택합니다.

구성 검토

  1. 검토 및 완료를 클릭합니다.
  2. 백엔드, 호스트 및 경로 규칙프런트엔드의 값을 검토하세요.
  3. 선택사항: 부하 분산기를 만드는 데 사용되는 REST API 요청을 보려면 상응하는 코드를 클릭합니다.
  4. 만들기를 클릭합니다. 부하 분산기가 생성될 때까지 기다립니다.
  5. 부하 분산기의 이름을 클릭합니다(serverless-lb).
  6. 다음 태스크를 위해 부하 분산기의 IP 주소를 기록합니다.

gcloud

  1. Cloud Run 서비스의 서버리스 NEG를 만듭니다.
        gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \
            --region=REGION \
            --network-endpoint-type=serverless  \
            --cloud-run-service=CLOUD_RUN_SERVICE_NAME
        
  2. 리전별 백엔드 서비스를 만듭니다. --protocol을 HTTP로 설정합니다. --protocol이 기본값인 TCP이므로 이 매개변수는 무시되어야 합니다.
        gcloud compute backend-services create BACKEND_SERVICE_NAME \
            --load-balancing-scheme=INTERNAL_MANAGED \
            --protocol=HTTP \
            --region=REGION
        
  3. 서버리스 NEG를 백엔드 서비스에 백엔드로 추가합니다.
        gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
            --region=REGION \
            --network-endpoint-group=SERVERLESS_NEG_NAME \
            --network-endpoint-group-region=REGION
        
  4. 수신되는 요청을 백엔드 서비스로 라우팅하는 리전 URL 맵을 만듭니다.
        gcloud compute url-maps create URL_MAP_NAME \
            --default-service=BACKEND_SERVICE_NAME \
            --region=REGION
        
    이 예시 URL 맵은 단일 서버리스 앱을 나타내는 백엔드 서비스 하나만 대상으로 지정하므로 호스트 규칙이나 경로 일치자를 설정할 필요가 없습니다.
  5. 선택사항: 클라이언트와 부하 분산기 간에 HTTPS를 사용하는 경우 이 단계를 수행합니다. HTTP 부하 분산기에는 이 단계가 필요하지 않습니다.

    Compute Engine 또는 인증서 관리자 인증서를 만들 수 있습니다. 인증서 관리자를 사용하여 인증서를 만들려면 다음 방법 중 하나를 사용합니다.

    • 리전별 자체 관리형 인증서 리전별 자체 관리형 인증서 만들기 및 사용에 대한 자세한 내용은 리전별 자체 관리형 인증서 배포를 참조하세요. 인증서 맵은 지원되지 않습니다.

    • 리전별 Google 관리형 인증서. 인증서 맵은 지원되지 않습니다.

      인증서 관리자에서 지원되는 리전별 Google 관리형 인증서 유형은 다음과 같습니다.

    • 인증서를 만든 후 인증서를 대상 프록시에 직접 연결합니다.

      자체 관리형 SSL 인증서 리소스를 만들려면 다음을 실행합니다.
          gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
              --certificate CRT_FILE_PATH \
              --private-key KEY_FILE_PATH \
              --region=REGION
          
    • 리전별 대상 프록시를 만들어 요청을 URL 맵으로 라우팅합니다.

      HTTP 부하 분산기의 경우 HTTP 대상 프록시를 만듭니다
          gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
              --url-map=URL_MAP_NAME \
              --region=REGION
          
      HTTPS 부하 분산기의 경우 HTTPS 대상 프록시를 만듭니다. 프록시는 HTTPS 부하 분산용 SSL 인증서를 포함하는 부하 분산기의 일부분이므로 이 단계에서 인증서도 로드합니다.
          gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
              --ssl-certificates=SSL_CERTIFICATE_NAME \
              --url-map=URL_MAP_NAME \
              --region=REGION
          
    • 수신되는 요청을 프록시로 라우팅하는 전달 규칙을 만듭니다. 전달 규칙 IP 주소에 프록시 전용 서브넷을 사용하지 마세요. 서브넷(lb-subnet)에서 유효한 IP 주소를 구성할 수 있습니다.

      HTTP 부하 분산기의 경우:
          gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
              --load-balancing-scheme=INTERNAL_MANAGED \
              --network=lb-network \
              --subnet=lb-subnet \
              --target-http-proxy=TARGET_HTTP_PROXY_NAME \
              --target-http-proxy-region=REGION \
              --region=REGION \
              --ports=80
          
      HTTPS 부하 분산기의 경우:
          gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
              --load-balancing-scheme=INTERNAL_MANAGED \
              --network=lb-network \
              --subnet=lb-subnet \
              --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
              --target-https-proxy-region=REGION \
              --region=REGION \
              --ports=443
          

부하 분산기 테스트

부하 분산기를 구성했으므로 부하 분산기의 IP 주소로 트래픽을 전송할 수 있습니다.

클라이언트 VM 만들기

이 예시에서는 부하 분산기와 동일한 리전에서 클라이언트 VM(vm-client)을 만듭니다. 클라이언트는 부하 분산기 구성의 유효성을 검사하고 예상된 동작을 보여줍니다.

gcloud

클라이언트 VM은 부하 분산기와 동일한 REGION의 모든 영역에 있을 수 있으며 동일한 VPC 네트워크의 모든 서브넷을 사용할 수 있습니다.

gcloud compute instances create vm-client \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --network=lb-network \
    --subnet=lb-subnet \
    --zone=ZONE

방화벽 규칙 구성

이 예시에서는 다음과 같은 테스트 클라이언트 VM에 대한 방화벽 규칙이 필요합니다.

fw-allow-ssh. 테스트 클라이언트 VM에 적용되는 인그레스 규칙으로, TCP 포트 22에서 임의의 주소로부터 수신되는 SSH 연결을 허용합니다. 이 규칙에 더 제한적인 소스 IP 주소 범위를 선택할 수 있습니다. 예를 들어 SSH 세션을 시작할 시스템의 IP 주소 범위만 지정할 수도 있습니다. 이 예시에서는 대상 태그 allow-ssh를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
    방화벽 정책으로 이동
  2. 방화벽 규칙 만들기를 클릭하여 수신 SSH 연결을 허용하는 규칙을 만듭니다.
    • 이름: allow-ssh
    • 네트워크: lb-network
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 대상: 지정된 대상 태그
    • 대상 태그: allow-ssh
    • 소스 필터: IPv4 범위
    • 소스 IPv4 범위: 0.0.0.0/0
    • 프로토콜 및 포트:
      • 지정된 프로토콜 및 포트를 선택합니다.
      • TCP 체크박스를 선택한 후 포트 번호에 22을 입력합니다.
  3. 만들기를 클릭합니다.

gcloud

  1. allow-ssh 네트워크 태그를 사용해 VM으로 가는 SSH 연결을 허용하는 fw-allow-ssh 방화벽 규칙을 만듭니다. source-ranges를 생략하면 Google Cloud가 모든 소스를 의미하는 것으로 규칙을 해석합니다.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

부하 분산기로 트래픽 전송

첫 배포 이후 부하 분산기 구성을 배포하기까지 몇 분이 걸릴 수 있습니다.

  • SSH를 사용하여 클라이언트 인스턴스에 연결합니다.

    gcloud compute ssh vm-client \
      --zone=ZONE
    
  • 부하 분산기가 예상대로 Cloud Run 서비스 홈페이지를 제공하는지 확인합니다.

    HTTP 테스트의 경우 다음을 실행합니다.

    curl IP_ADDRESS
    

    HTTPS 테스트의 경우 다음을 실행합니다.

    curl -k -s 'https://TEST_DOMAIN_URL:443' --connect-to TEST_DOMAIN_URL:443:IP_ADDRESS:443
    

    TEST_DOMAIN_URL을 애플리케이션과 연결된 도메인으로 바꿉니다. 예를 들면 test.example.com입니다.

    -k 플래그로 인해 curl이 인증서 유효성 검사를 건너뜁니다.

추가 구성 옵션

이 섹션에서는 대체 및 추가 구성 옵션을 제공하는 구성 예시를 살펴봅니다. 모든 태스크는 선택사항입니다. 원하는 순서대로 수행할 수 있습니다.

URL 마스크 사용

서버리스 NEG를 만들 때 특정 Cloud Run 서비스를 선택하는 대신 URL 마스크를 사용하여 동일한 도메인에서 제공하는 여러 서비스를 가리킬 수 있습니다. URL 마스크는 URL 스키마 템플릿입니다. 서버리스 NEG는 이 템플릿을 사용하여 수신 요청의 URL에서 서비스 이름을 추출하고 요청을 적절한 서비스에 매핑합니다.

URL 마스크는 Google Cloud가 배포된 서비스에 제공하는 기본 주소가 아닌 커스텀 도메인에 서비스가 매핑되는 경우에 특히 유용합니다. URL 마스크를 사용하면 애플리케이션이 커스텀 URL 패턴을 사용하는 경우에도 단일 규칙으로 여러 서비스와 버전을 대상으로 지정할 수 있습니다.

아직 수행하지 않았으면 서버리스 NEGS 개요: URL 마스크를 읽어보세요.

URL 마스크 구성

부하 분산기의 URL 마스크를 구성하려면 서비스의 URL로 시작합니다. 이 예시에서는 https://example.com/login에서 실행되는 샘플 서버리스 앱을 사용합니다. 앱의 login 서비스가 제공될 URL입니다.

  1. URL에서 http 또는 https를 삭제합니다. example.com/login이 남았습니다.
  2. 서비스 이름을 URL 마스크의 자리표시자로 바꿉니다.
    • Cloud Run: Cloud Run 서비스 이름을 자리표시자 <service>로 바꿉니다. Cloud Run 서비스에 연결된 태그가 있으면 태그 이름을 자리표시자 <tag>로 바꿉니다. 이 예시에서 남은 URL 마스크는 example.com/<service>입니다.
  3. 선택사항: URL의 경로 부분에서 서비스 이름을 추출할 수 있으면 도메인을 생략할 수 있습니다. URL 마스크의 경로 부분은 첫 번째 슬래시(/) 문자로 구분됩니다. URL 마스크에 슬래시(/)가 없으면 마스크는 호스트만 나타내는 것으로 이해됩니다. 따라서 이 예시에서는 URL 마스크를 /<service>로 줄일 수 있습니다.

    마찬가지로 URL의 호스트 부분에서 <service>를 추출할 수 있으면 URL 마스크에서 경로를 모두 생략할 수 있습니다.

    또한 첫 번째 자리표시자 앞에 오는 모든 호스트 또는 하위 도메인 구성요소와 마지막 자리표시자 다음에 오는 모든 경로 구성요소를 생략할 수 있습니다. 이러한 경우 자리표시자는 구성요소에 필요한 정보를 캡처합니다.

다음은 이러한 규칙을 보여주는 몇 가지 예시입니다.

이 표에서는 example.com이라는 커스텀 도메인이 있고 모든 Cloud Run 서비스가 이 도메인에 매핑되어 있다고 가정합니다.

서비스, 태그 이름 Cloud Run 커스텀 도메인 URL URL 마스크
서비스: 로그인 https://login-home.example.com/web <service>-home.example.com
서비스: 로그인 https://example.com/login/web example.com/<service> 또는 /<service>
서비스: 로그인, 태그: 테스트 https://test.login.example.com/web <tag>.<service>.example.com
서비스: 로그인, 태그: 테스트 https://example.com/home/login/test example.com/home/<service>/<tag> 또는 /home/<service>/<tag>
서비스: 로그인, 태그: 테스트 https://test.example.com/home/login/web <tag>.example.com/home/<service>

URL 마스크를 사용하여 서버리스 NEG 만들기

콘솔

새 부하 분산기에 대해 이 문서의 앞에서 설명한 것과 동일한 엔드 투 엔드 프로세스를 사용할 수 있습니다. 백엔드 서비스를 구성할 때 특정 서비스를 선택하는 대신 URL 마스크를 입력합니다.

기존 부하 분산기가 있는 경우 백엔드 구성을 수정하여 서버리스 NEG가 특정 서비스 대신 URL 마스크를 가리키도록 할 수 있습니다.

URL 마스크 기반 서버리스 NEG를 기존 백엔드 서비스에 추가하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
    부하 분산으로 이동
  2. 수정하려는 백엔드 서비스가 포함된 부하 분산기 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 수정을 클릭합니다.
  4. 전역 외부 애플리케이션 부하 분산기 수정 페이지에서 백엔드 구성을 클릭합니다.
  5. 백엔드 구성 페이지에서 수정하려는 백엔드 서비스에 대해 수정을 클릭합니다.
  6. 백엔드 추가를 클릭합니다.
  7. 서버리스 네트워크 엔드포인트 그룹 만들기를 선택합니다.
    1. 이름helloworld-serverless-neg를 입력합니다.
    2. 리전 아래에 부하 분산기의 리전이 표시됩니다.
    3. 서버리스 네트워크 엔드포인트 그룹 유형에서 Cloud Run은 지원되는 유일한 네트워크 엔드포인트 그룹 유형입니다.
      1. URL 마스크 사용을 선택합니다.
      2. URL 마스크를 입력합니다. URL 마스크를 만드는 방법에 대한 자세한 내용은 URL 마스크 구성을 참고하세요.
      3. 만들기를 클릭합니다.

  8. 새 백엔드에서 완료를 클릭합니다.
  9. 업데이트를 클릭합니다.

gcloud

샘플 URL 마스크가 example.com/<service>인 서버리스 NEG를 만들려면 다음 명령어를 실행합니다.

gcloud compute network-endpoint-groups create SERVERLESS_NEG_MASK_NAME \
    --region=REGION \
    --network-endpoint-type=serverless \
    --cloud-run-url-mask="example.com/<service>"

클라이언트 HTTP 연결 유지 제한 시간 업데이트

이전 단계에서 만든 부하 분산기는 클라이언트 HTTP 연결 유지 제한 시간의 기본값으로 구성되었습니다.

클라이언트 HTTP 연결 유지 제한 시간을 업데이트하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 수정할 부하 분산기의 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 프런트엔드 구성을 클릭합니다.
  5. 고급 기능을 펼칩니다. HTTP 연결 유지 제한 시간에 제한 시간 값을 입력합니다.
  6. 업데이트를 클릭합니다.
  7. 변경사항을 검토하려면 검토 및 완료를 클릭한 다음 업데이트를 클릭합니다.

gcloud

HTTP 부하 분산기의 경우 gcloud compute target-http-proxies update 명령어를 사용하여 대상 HTTP 프록시를 업데이트합니다.

      gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
         --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
         --region=REGION
      

HTTPS 부하 분산기의 경우 gcloud compute target-https-proxies update 명령어를 사용하여 대상 HTTPS 프록시를 업데이트합니다.

      gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \
         --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
         --region REGION
      

다음을 바꿉니다.

  • TARGET_HTTP_PROXY_NAME: 대상 HTTP 프록시의 이름입니다.
  • TARGET_HTTPS_PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC: HTTP 연결 유지 제한 시간 값은 5~600초 사이입니다.

서버리스 NEG 삭제

네트워크 엔드포인트 그룹이 백엔드 서비스에 연결되어 있으면 삭제할 수 없습니다. NEG를 삭제하기 전에 백엔드 서비스에서 분리하세요.

콘솔

  1. 삭제하려는 서버리스 NEG가 백엔드 서비스에서 사용되고 있지 않은지 확인하려면 부하 분산 구성요소 페이지의 백엔드 서비스 탭으로 이동합니다.
    백엔드 서비스로 이동
  2. 서버리스 NEG가 사용 중인 경우 다음을 수행합니다.
    1. 서버리스 NEG를 사용하는 백엔드 서비스의 이름을 클릭합니다.
    2. 수정을 클릭합니다.
    3. 백엔드 목록에서 를 클릭하여 백엔드 서비스에서 서버리스 NEG 백엔드를 삭제합니다.
    4. 저장을 클릭합니다.

  3. Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
    네트워크 엔드포인트 그룹으로 이동
  4. 삭제할 서버리스 NEG의 체크박스를 선택합니다.
  5. 삭제를 클릭합니다.
  6. 삭제를 다시 클릭하여 확인합니다.

gcloud

백엔드 서비스에서 서버리스 NEG를 삭제하려면 NEG가 생성된 리전을 지정해야 합니다.

gcloud compute backend-services remove-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=SERVERLESS_NEG_NAME \
    --network-endpoint-group-region=REGION \
    --region=REGION

서버리스 NEG를 삭제하려면 다음 안내를 따르세요.

gcloud compute network-endpoint-groups delete SERVERLESS_NEG_NAME \
    --region=REGION

다음 단계