백엔드를 통해 게시된 서비스에 액세스

이 가이드에서는 Private Service Connect를 사용하여 게시된 서비스에 액세스하기 위해 Private Service Connect 백엔드를 사용해서 전역 외부 애플리케이션 부하 분산기를 구성하는 방법을 설명합니다.

그림 1. 전역 외부 애플리케이션 부하 분산기를 기반으로 하는 백엔드를 사용하면 인터넷 액세스 권한이 있는 서비스 소비자가 서비스 제작자의 VPC 네트워크의 서비스로 트래픽을 보낼 수 있습니다(확대하려면 클릭).

자세한 내용은 Private Service Connect 백엔드 정보를 참조하세요.

역할

Compute 부하 분산기 관리자 역할(roles/compute.loadBalancerAdmin)에는 이 가이드에서 설명하는 태스크를 수행하는 데 필요한 권한이 포함되어 있습니다.

시작하기 전에

  • 자체 서비스를 게시하려면 Private Service Connect를 사용하여 서비스 게시를 참조하세요.

  • 타사에서 게시한 서비스를 연결하는 경우 서비스 프로듀서에게 다음 정보를 요청하세요.

    • 연결하려는 서비스에 대한 서비스 연결의 URI. 서비스 연결 형식: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • 요청을 전송하는 데 사용하는 DNS 이름의 요구사항. URL 맵 구성 또는 DNS 구성에서 특정 DNS 이름을 사용해야 할 수도 있습니다.

네트워크 엔드포인트 그룹 만들기

액세스하려는 게시된 서비스의 서비스 연결을 가리키는 Private Service Connect NEG를 만듭니다. 게시된 서비스가 여러 리전에 배포되는 경우 서비스 연결당 하나의 NEG를 만듭니다.

각 Private Service Connect NEG는 부하 분산기에서 통신할 수 있도록 /32 IP 주소를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.

    네트워크 엔드포인트 그룹으로 이동

  2. 네트워크 엔드포인트 그룹 만들기를 클릭합니다.

  3. 네트워크 엔드포인트 그룹의 이름을 입력합니다.

  4. 네트워크 엔드포인트 그룹 유형네트워크 엔드포인트 그룹(Private Service Connect)을 선택합니다.

  5. 대상 유형 게시된 서비스를 선택합니다.

  6. 대상 서비스에 서비스 연결의 URI를 입력합니다.

  7. 네트워크 엔드포인트 그룹을 만들 네트워크서브넷을 선택합니다.

    서브넷은 게시된 서비스와 동일한 리전에 있어야 합니다.

  8. 만들기를 클릭합니다.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION \
    --network=NETWORK \
    --subnet=SUBNET

다음을 바꿉니다.

  • NEG_NAME: 네트워크 엔드포인트 그룹의 이름입니다.

  • TARGET_SERVICE: 연결할 서비스 연결입니다.

  • REGION: 네트워크 엔드포인트 그룹을 만들 리전입니다. 리전은 대상 서비스와 동일한 리전이어야 합니다.

  • NETWORK: 네트워크 엔드포인트 그룹을 만들 네트워크입니다. 생략할 경우 기본 네트워크가 사용됩니다.

  • SUBNET: 네트워크 엔드포인트 그룹을 만들 서브넷입니다. 서브넷은 대상 서비스와 동일한 리전에 있어야 합니다. 네트워크를 제공하는 경우 서브넷을 제공해야 합니다. 네트워크 및 서브넷이 모두 생략되면 기본 네트워크가 사용되고, 지정된 REGION의 기본 서브넷이 사용됩니다.

부하 분산기의 외부 IP 주소 예약

부하 분산기의 외부 IP 주소를 예약하려면 다음 단계를 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 IP 주소 페이지로 이동합니다.

    IP 주소로 이동

  2. IPv4 주소를 예약하려면 고정 주소 예약을 클릭합니다.

  3. IP 주소 리소스에 이름을 할당합니다.

  4. 네트워크 등급을 프리미엄으로 설정합니다.

  5. IP 버전IPv4로 설정합니다.

  6. 유형전역으로 설정합니다.

  7. 예약을 클릭합니다.

gcloud

  1. 부하 분산기의 전역 외부 IPv4 주소를 예약합니다.

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

    ADDRESS_NAME를 IP 주소 리소스의 이름으로 바꿉니다

  2. 다음 명령어를 실행하여 예약된 IP 주소를 확인합니다.

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

SSL 인증서 리소스 만들기

HTTPS 부하 분산기를 만들려면 부하 분산기의 프런트엔드에 SSL 인증서 리소스를 추가해야 합니다. Google 관리형 SSL 인증서 또는 자체 관리형 SSL 인증서를 사용하여 SSL 인증서 리소스를 만듭니다.

  • Google 관리형 인증서. Google Cloud는 이러한 인증서를 자동으로 가져오고 관리하며 갱신하므로 Google 관리형 인증서를 사용하는 것이 좋습니다. Google 관리형 인증서를 만들려면 인증서를 프로비저닝할 도메인과 DNS 레코드가 있어야 합니다. 도메인이 없으면 Google Domains에서 얻을 수 있습니다. 자세한 내용은 Google Domains 시작하기를 참조하세요. 또한 이전 단게에서 만든 부하 분산기의 IP 주소를 가리키도록 도메인의 DNS A 레코드를 업데이트해야 합니다. 자세한 내용은 Google 관리형 인증서 사용을 참조하세요.

  • 자체 관리형 인증서. 자체 관리형 SSL 인증서는 사용자가 직접 가져와 프로비저닝하고 갱신하는 인증서입니다. 자체 관리형 인증서는 인증 기관에서 서명하거나 자체 서명할 수 있습니다. 인증 기관에서 서명한 경우 도메인이 있어야 합니다. 도메인이 없으면 Google Domains에서 얻을 수 있습니다. 자세한 내용은 Google Domains 시작하기를 참조하세요. 또한 이전 단게에서 만든 부하 분산기의 IP 주소를 가리키도록 도메인의 DNS A 레코드를 업데이트해야 합니다. 자세한 내용은 자체 관리형 SSL 인증서 사용을 참조하세요.

    지금 도메인을 설정하지 않으려면 자체 서명된 SSL 인증서를 사용하여 테스트할 수 있습니다.

이 안내에서는 이미 SSL 인증서 리소스가 생성되었다고 가정합니다.

부하 분산기 구성

고급 트래픽 관리 기능(EXTERNAL_MANAGED로 설정된 부하 분산 스킴)을 사용하여 전역 외부 애플리케이션 부하 분산기를 구성하여 관리형 서비스에 연결합니다.

여러 리전에 배포된 게시된 서비스에 연결하고 각 서비스 연결에 연결할 Private Service Connect NEG를 여러 개 만든 경우 모든 NEG를 백엔드 서비스에 연결할 수 있습니다.

Private Service Connect NEG는 리전별이지만 이 구성의 다른 모든 부하 분산 구성요소는 전역적입니다.

콘솔

구성 시작

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

    부하 분산으로 이동

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

기본 구성

  1. 부하 분산기 이름을 입력합니다.
  2. 계속하려면 창을 열어둡니다.

프런트엔드 구성

  1. 프런트엔드 구성을 클릭합니다.
  2. 프런트엔드 IP 및 포트 추가를 클릭합니다.
  3. 부하 분산기의 이름을 입력합니다.
  4. 프로토콜 필드에서 HTTPS(HTTP/2 포함)를 선택합니다.
  5. HTTPS 트래픽을 허용하도록 포트443으로 설정되어 있는지 확인합니다.
  6. IP 주소에서 예약한 IP 주소를 선택합니다.

  7. 인증서 목록을 클릭하고 만든 인증서를 선택합니다.

  8. OK(확인)를 클릭합니다.

  9. 완료를 클릭합니다.

백엔드 구성

Private Service Connect 네트워크 엔드포인트 그룹은 부하 분산기 백엔드 유형입니다. 동일한 관리형 서비스의 모든 Private Service Connect NEG를 백엔드 서비스에 추가합니다.

  1. 백엔드 구성을 클릭합니다.
  2. 백엔드 서비스 및 백엔드 버킷 목록을 클릭한 다음 백엔드 서비스 만들기를 클릭합니다.
  3. 백엔드 서비스의 이름을 입력합니다.
  4. 백엔드 유형Private Service Connect 네트워크 엔드포인트 그룹으로 설정합니다.
  5. 백엔드 섹션에서 Private Service Connect 네트워크 엔드포인트 그룹 목록을 클릭하고 만든 Private Service Connect NEG를 선택합니다. 완료를 클릭합니다.
  6. 2개를 초과하는 Private Service Connect NEG를 만든 경우 백엔드 추가를 클릭하여 다른 NEG를 선택합니다.

    이 관리형 서비스의 모든 NEG가 백엔드 서비스에 추가될 때까지 이 단계를 반복합니다.

  7. 만들기를 클릭합니다.

라우팅 규칙

이 구성에는 백엔드 서비스가 하나만 포함되어 있으므로 기본 라우팅 규칙만으로도 충분하며, 이 섹션에서 변경할 필요가 없습니다.

검토 및 완료

  1. 구성을 검토하려면 검토 및 완료를 클릭합니다.
  2. 만들기를 클릭합니다.

gcloud

  1. 연결하려는 관리형 서비스의 백엔드 서비스를 만듭니다.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global
    

    BACKEND_SERVICE_NAME을 백엔드 서비스 이름으로 바꿉니다.

  2. 대상 서비스를 가리키는 Private Service Connect NEG를 추가합니다.

    동일한 서비스에 대해 서로 다른 리전에 여러 개의 NEG를 만든 경우 이 단계를 반복하여 모든 NEG를 백엔드 서비스에 추가합니다.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=REGION \
      --global
    

    다음을 바꿉니다.

    • BACKEND_SERVICE_NAME: 백엔드 서비스의 이름입니다.
    • NEG_NAME: 네트워크 엔드포인트 그룹의 이름입니다.
    • REGION: 네트워크 엔드포인트 그룹의 리전입니다.
  3. 부하 분산기의 URL 맵을 만듭니다.

    URL 맵은 기본 백엔드 서비스를 참조해야 합니다. 기본 백엔드 서비스로 만든 백엔드 서비스를 구성합니다.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=BACKEND_SERVICE_NAME \
      --global
    

    다음을 바꿉니다.

    • URL_MAP_NAME: URL 맵의 이름입니다.

    • BACKEND_SERVICE_NAME: 부하 분산기의 기본 백엔드 서비스 이름입니다. 기본값은 호스트 규칙이 요청된 호스트 이름과 일치할 때 사용됩니다.

  4. 대상 HTTPS 프록시를 만듭니다.

    만든 SSL 인증서 리소스를 사용하여 대상 HTTPS 프록시를 만듭니다.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE
    

    다음을 바꿉니다.

    • PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.
    • URL_MAP_NAME: URL 맵의 이름입니다.
    • CERTIFICATE: 인증서 리소스의 이름입니다.
  5. 전달 규칙을 만듭니다.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=ADDRESS_NAME \
        --target-https-proxy=PROXY_NAME \
        --ports=443 \
        --global
    

    다음을 바꿉니다.

    • FWD_RULE: 전달 규칙의 이름입니다.

    • ADDRESS_NAME: 전달 규칙에 사용하도록 예약한 IP 주소 리소스입니다.

    • PROXY_NAME: 대상 HTTPS 프록시의 이름입니다.

DNS 레코드 구성

DNS 이름을 사용하여 Private Service Connect 백엔드에 액세스하려면 각 외부 전달 규칙의 DNS 이름을 만듭니다. DNS 레코드는 URL 맵의 이름에 해당해야 합니다. URL 맵이 이름을 다시 작성하지 않는 한 DNS 레코드는 제작자 서비스에서 예상하는 이름과도 일치해야 합니다.

Cloud DNS를 사용하여 DNS를 관리하는 경우 DNS 레코드 추가를 참조하세요.

구성 확인

  1. VM 인스턴스를 만듭니다.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-11 \
        --zone=ZONE
    

    다음을 바꿉니다.

    • VM_NAME: 가상 머신의 이름입니다.

    • NETWORK: VM의 네트워크입니다.

    • ZONE: VM의 영역입니다.

  2. VM에 연결합니다.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. curl를 사용하여 구성을 확인합니다. 이 명령어는 Host 헤더를 설정하고 사용자 정의 IP 주소를 지정하여 DNS 변환을 우회합니다. HTTPS에 포트 443을 사용하는 것처럼 프로토콜의 기본 포트를 사용하는 경우 포트를 생략할 수 있습니다.

    -k 플래그를 사용하면 인증서 유효성 검사를 건너뛸 수 있습니다. 자체 서명된 인증서를 사용해 대상 HTTPS 프록시를 구성했거나 인증서에 서명한 인증 기관의 인증서가 VM에 없는 경우 유효성 검사를 건너뛰어야 할 수 있습니다.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
        -H 'Host: HOST' \
        --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    다음을 바꿉니다.

    • HOST: URL 맵에 구성된 호스트 이름입니다.

    • RESOURCE_URI: 인증에 사용할 리소스의 나머지 URI입니다.

    • FWD_RULE_IP_ADDRESS: 전달 규칙에 할당된 IP 주소입니다.

문제 해결

백엔드 생성은 성공하지만 연결이 설정되지 않음

게시된 서비스의 백엔드를 성공적으로 만들었지만 연결이 설정되지 않은 경우 백엔드의 연결 상태를 확인합니다. 연결 상태에 문제를 해결하기 위해 취할 수 있는 단계가 표시될 수 있습니다.