수동 Envoy 배포로 Compute Engine VM용 Traffic Director 설정

이 가이드의 안내를 따르기 전에 Traffic Director 설정 준비를 검토하고 문서에 설명된 기본 요건을 완료했는지 확인하세요.

이 가이드에서는 Envoy 사이드카 프록시로 구성된 데이터 영역을 수동으로 배포하고, Traffic Director를 사용하여 이를 구성하고, 올바르게 작동하는지 확인할 수 있는 설정을 보여줍니다. 이 프로세스에는 다음이 포함됩니다.

  1. 테스트 서비스 만들기
  2. Envoy 프록시를 사용하여 Compute Engine에 간단한 데이터 영역 배포
  3. Traffic Director가 Envoy 사이드카 프록시를 구성할 수 있도록 Compute Engine API를 사용하여 Traffic Director 설정
  4. Envoy 프록시를 실행하는 VM에 로그인하고 Envoy 프록시를 통해 부하 분산된 백엔드로 요청 전송

이 문서의 구성 예시는 데모용입니다. 프로덕션 환경의 경우 환경 및 요구사항에 따라 추가 구성요소를 배포해야 할 수 있습니다.

구성 프로세스 개요

이 섹션에서는 Compute Engine VM에서 실행되는 서비스의 수동 구성 프로세스를 제공합니다. 클라이언트 VM의 구성 프로세스는 사이드카 프록시 설정 및 Compute Engine VM 호스트의 트래픽 가로채기로 구성됩니다. 그런 다음 Google Cloud 부하 분산 API를 사용하여 부하 분산을 구성합니다.

이 섹션에서는 Google에서 관리하지 않는 타사 소스에서 Envoy 프록시를 가져오고 삽입하는 방법에 대한 정보를 제공합니다.

애플리케이션이 Traffic Director에 구성된 서비스로 트래픽을 전송하면 트래픽 가로채기를 당하고 xDS API 호환 사이드카 프록시로 리디렉션된 다음 GCP 부하 분산 구성요소의 구성에 따라 백엔드로 부하가 분산됩니다. 호스트 네트워킹 및 트래픽 가로채기에 대한 자세한 내용은 Traffic Director에서 트래픽 가로채기 및 부하 분산 작동 방식을 참조하세요.

Traffic Director 서비스에 액세스해야 하는 각 VM 호스트에 대해 다음 단계를 수행합니다.

  1. VM에 서비스 계정을 할당합니다.

  2. Google Cloud APIs에 대한 전체 액세스를 허용하도록 VM의 API 액세스 범위를 설정합니다.

    • VM을 만들 때 ID 및 API 액세스에서 모든 Cloud APIs에 대한 전체 액세스 허용을 클릭합니다.

      VM 인스턴스 페이지로 이동

    • gcloud 명령줄 도구를 사용하여 다음을 지정합니다.

      --scopes=https://www.googleapis.com/auth/cloud-platform

  3. 사이드카 프록시가 gRPC를 통해 Traffic Director 제어 영역에 연결될 수 있도록 VM에서 trafficdirector.googleapis.com(TCP, 포트 443)으로 나가는 연결을 허용합니다. 포트 443에 대한 발신 연결은 기본으로 사용 설정됩니다.

  4. xDS 서버로 trafficdirector.googleapis.com:443를 가리키는 부트스트랩 구성으로 xDS API 호환 사이드카 프록시(예시: Envoy)를 배포합니다. 예시는 이 샘플 부트스트랩 구성 파일을 참조하세요.

  5. 서비스로 향하는 IP 트래픽을 사이드카 프록시 가로채기 리스너 포트로 리디렉션합니다.

    1. 사이드카 프록시 가로채기 리스너 포트는 프록시의 부트스트랩 메타데이터 구성에 TRAFFICDIRECTOR_INTERCEPTION_PORT로 정의되며, 샘플 부트스트랩 구성 파일에서는 15001로 설정되어 있습니다.
    2. Istio iptables 스크립트를 사용하여 트래픽 가로채기를 설정할 수 있습니다.

Docker 이미지에서 Envoy 가져오기

이 가이드의 지침에서는 Docker 이미지에서 Envoy 바이너리를 가져오는 방법을 설명합니다. Envoy 프록시 바이너리의 압축을 풀려면 Docker가 필요합니다. Docker에서 이미지를 가져오려면 Docker 권한도 필요합니다. Docker 도구를 루트가 아닌 사용자로 실행하는 경우 Docker의 설치 후 지침을 따르세요.

Hello World 테스트 서비스 만들기

이 섹션에서는 클라이언트에서 요청한 VM의 호스트 이름을 반환하는 간단한 테스트 서비스를 만드는 방법을 보여줍니다. 테스트 서비스는 복잡하지 않습니다. Compute Engine 관리형 인스턴스 그룹 전체에 배포되는 웹 서버입니다.

Hello World 테스트 서비스의 인스턴스 템플릿 만들기

만든 인스턴스 템플릿은 startup-script 매개변수를 사용하여 샘플 apache2 웹 서버를 구성합니다.

Console

  1. Cloud Console에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿 페이지로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.
  3. 필드에 다음 정보를 입력합니다.
    • 이름: td-demo-hello-world-template
    • 부팅 디스크: Debian GNU/Linux 10(버스터)
    • 서비스 계정: Compute Engine 기본 서비스 계정
    • 액세스 범위: 모든 Cloud API에 대한 전체 액세스 허용
  4. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭합니다. 1 네트워킹 탭의 **네트워크 태그 필드에 td-http-server 태그를 추가합니다.
  5. 관리 탭에서 시작 스크립트 필드에 다음 스크립트를 복사합니다.

    #! /bin/bash
    sudo apt-get update -y
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>'`/bin/hostname`'</h1></body></html>' | sudo tee /var/www/html/index.html
    
  6. 만들기를 클릭합니다.

gcloud

인스턴스 템플릿을 만들려면 다음 안내를 따르세요.

gcloud compute instance-templates create td-demo-hello-world-template \
  --machine-type=n1-standard-1 \
  --boot-disk-size=20GB \
  --image-family=debian-10 \
  --image-project=debian-cloud \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --tags=td-http-server \
  --metadata=startup-script="#! /bin/bash
sudo apt-get update -y
sudo apt-get install apache2 -y
sudo service apache2 restart
sudo mkdir -p /var/www/html/
echo '<!doctype html><html><body><h1>'`/bin/hostname`'</h1></body></html>' | sudo tee /var/www/html/index.html"

Hello World 서비스의 관리형 인스턴스 그룹 만들기

이 섹션에서는 관리형 인스턴스 그룹에 항상 테스트 서비스의 인스턴스 두 개가 있도록 지정합니다. 이는 데모용입니다. Traffic Director는 자동 확장되는 관리형 인스턴스 그룹을 지원합니다.

Console

  1. Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다.
  3. 새 관리형 인스턴스 그룹이 선택되었는지 확인합니다.
  4. 관리형 인스턴스 그룹의 이름으로 td-demo-hello-world-mig를 입력하고 us-central1-a 영역을 선택합니다.
  5. 인스턴스 템플릿에서 사용자가 만든 인스턴스 템플릿인 td-demo-hello-world-template을 선택합니다.
  6. 자동 확장 모드에서 자동 확장 안함을 선택합니다.
  7. 인스턴스 수에서 그룹에 만들려는 인스턴스의 수로 두 개 이상을 지정합니다.
  8. 만들기를 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 이전에 만든 인스턴스 템플릿으로 관리형 인스턴스 그룹을 만듭니다.

gcloud compute instance-groups managed create td-demo-hello-world-mig \
  --zone us-central1-a \
  --size=2 \
  --template=td-demo-hello-world-template

Envoy가 배포된 인스턴스 템플릿 및 관리형 인스턴스 그룹 만들기

이 섹션의 안내에 따라 Traffic Director의 인스턴스 템플릿 및 관리형 인스턴스 그룹을 수동으로 만들 수 있습니다.

관리형 인스턴스 그룹은 자동 확장을 사용하여 새 백엔드 VM을 만듭니다.

이 예시에서는 다음을 수행하는 방법을 보여줍니다.

  • 전체 Envoy 구성 및 HTTP 프로토콜을 사용해 호스트 이름을 제공하는 샘플 서비스가 포함된 템플릿을 만듭니다.
  • 이 템플릿을 사용하여 관리형 인스턴스 그룹을 구성합니다.

인스턴스 템플릿 만들기

먼저 Compute Engine VM 인스턴스 템플릿을 만듭니다. 이 템플릿은 startup-script 매개변수를 통해 Envoy 사이드카 프록시 및 샘플 apache2 웹 서비스를 자동으로 구성합니다.

Console

  1. Cloud Console에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿 페이지로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.
  3. 다음과 같이 필드를 작성합니다.

    • 이름: td-vm-template
    • 부팅 디스크: Debian GNU/Linux 9 (stretch)
    • 서비스 계정: Compute Engine 기본 서비스 계정
    • 액세스 범위: 모든 Cloud API에 대한 전체 액세스 허용
  4. 방화벽에서 HTTP 트래픽 허용HTTPS 트래픽 허용 체크박스를 선택합니다.

  5. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭합니다.

  6. 관리 탭에서 시작 스크립트 필드에 다음 스크립트를 복사합니다.

    # Add a system user to run Envoy binaries. Login is disabled for this user
    sudo adduser --system --disabled-login envoy
    # Download and extract the Traffic Director tar.gz file
    sudo wget -P /home/envoy https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz
    sudo tar -xzf /home/envoy/traffic-director-xdsv3.tar.gz -C /home/envoy
    sudo cat << END >> /home/envoy/traffic-director-xdsv3/sidecar.env
    ###
    # The settings that follow were generated by the bootstrap script.
    # They overwrite settings that were defined in this file previously.
    ###
    ENVOY_USER=envoy
    # Exclude the proxy user from redirection so that traffic doesn't loop back
    # to the proxy
    EXCLUDE_ENVOY_USER_FROM_INTERCEPT='true'
    # Intercept all traffic by default
    SERVICE_CIDR='*'
    GCP_PROJECT_NUMBER=PROJECT_NUMBER
    VPC_NETWORK_NAME=NETWORK_NAME
    ENVOY_IMAGE='envoyproxy/envoy:v1.15.0'
    ENVOY_PORT='15001'
    ENVOY_ADMIN_PORT='15000'
    LOG_DIR='/var/log/envoy/'
    LOG_LEVEL='info'
    XDS_SERVER_CERT='/etc/ssl/certs/ca-certificates.crt'
    END
    sudo apt-get update -y
    sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository 'deb [arch=amd64] https://download.docker.com/linux/debian stretch stable' -y
    sudo apt-get update -y
    sudo apt-get install docker-ce apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>'`/bin/hostname`'</h1></body></html>' | sudo tee /var/www/html/index.html
    cd /home/envoy/traffic-director-xdsv3
    sudo ./run.sh start"
    
  7. 만들기를 클릭하여 템플릿을 만듭니다.

gcloud

  1. 인스턴스 템플릿을 만듭니다.

    gcloud compute instance-templates create td-vm-template \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=http-td-tag,http-server,https-server \
      --image-family=debian-9 \
      --image-project=debian-cloud \
      --metadata=startup-script="#! /bin/bash
    
    # Add a system user to run Envoy binaries. Login is disabled for this user
    sudo adduser --system --disabled-login envoy
    # Download and extract the Traffic Director tar.gz file
    sudo wget -P /home/envoy https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz
    sudo tar -xzf /home/envoy/traffic-director-xdsv3.tar.gz -C /home/envoy
    sudo cat << END >> /home/envoy/traffic-director-xdsv3/sidecar.env
    ###
    # The settings that follow were generated by the bootstrap script.
    # They overwrite settings that were defined in this file previously.
    ###
    ENVOY_USER=envoy
    # Exclude the proxy user from redirection so that traffic doesn't loop back
    # to the proxy
    EXCLUDE_ENVOY_USER_FROM_INTERCEPT='true'
    # Intercept all traffic by default
    SERVICE_CIDR='*'
    GCP_PROJECT_NUMBER=PROJECT_NUMBER
    VPC_NETWORK_NAME=NETWORK_NAME
    ENVOY_IMAGE='envoyproxy/envoy:v1.15.0'
    ENVOY_PORT='15001'
    ENVOY_ADMIN_PORT='15000'
    LOG_DIR='/var/log/envoy/'
    LOG_LEVEL='info'
    XDS_SERVER_CERT='/etc/ssl/certs/ca-certificates.crt'
    END
    sudo apt-get update -y
    sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository 'deb [arch=amd64] https://download.docker.com/linux/debian stretch stable' -y
    sudo apt-get update -y
    sudo apt-get install docker-ce apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>'`/bin/hostname`'</h1></body></html>' | sudo tee /var/www/html/index.html
    cd /home/envoy/traffic-director-xdsv3
    sudo ./run.sh start"
    

관리형 인스턴스 그룹 만들기

서비스가 실행 중인 관리형 인스턴스 그룹이 없는 경우 이전 섹션에서 설명한 것과 같은 VM 템플릿을 사용하여 관리형 인스턴스 그룹을 생성하세요. 이 예시에서는 이전 섹션에서 만든 인스턴스 템플릿을 사용하여 기능을 보여줍니다. 인스턴스 템플릿을 사용할 필요는 없습니다.

Console

  1. Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다. 기본적으로 관리형 인스턴스 그룹을 만드는 페이지가 표시됩니다.
  3. 관리형 인스턴스 그룹의 이름으로 td-vm-mig-us-central1를 입력하고 us-central1-a 영역을 선택합니다.
  4. 인스턴스 템플릿에서 자신이 만든 인스턴스 템플릿을 선택합니다.
  5. 그룹에 만들려는 인스턴스 수를 2로 지정합니다.
  6. 만들기를 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 이전에 만든 인스턴스 템플릿으로 관리형 인스턴스 그룹을 만듭니다.

gcloud compute instance-groups managed create td-vm-mig-us-central1 \
    --zone us-central1-a --size=2 --template=td-vm-template

Google Cloud 부하 분산 구성요소로 Traffic Director 구성

이 섹션의 안내에서는 Envoy 프록시가 2개의 백엔드 인스턴스 간에 아웃바운드 트래픽의 부하를 분산하도록 Traffic Director를 구성하는 방법을 보여줍니다. 다음 구성요소를 구성합니다.

상태 확인 만들기

상태 확인을 만들려면 다음 안내를 따르세요. 자세한 내용은 상태 확인 만들기를 참조하세요.

Console

  1. Google Cloud Console의 상태 확인 페이지로 이동합니다.
    상태 확인 페이지로 이동
  2. 상태 확인 생성을 클릭합니다.
  3. 이름에 td-vm-health-check를 입력합니다.
  4. 프로토콜에서 HTTP를 선택합니다.
  5. 만들기를 클릭합니다.

gcloud

  1. 상태 확인을 만듭니다.
gcloud compute health-checks create http td-vm-health-check
  1. 방화벽 규칙 만들기

    gcloud compute firewall-rules create fw-allow-health-checks \
      --action ALLOW \
      --direction INGRESS \
      --source-ranges 35.191.0.0/16,130.211.0.0/22 \
      --target-tags http-td-tag,http-server,https-server \
      --rules tcp
    

백엔드 서비스 만들기

gcloud 명령줄 도구를 사용하는 경우 백엔드 서비스를 INTERNAL_SELF_MANAGED의 부하 분산 스키마를 사용하는 글로벌 백엔드 서비스로 지정해야 합니다. 백엔드 서비스에 상태 확인과 관리형 또는 비관리형 인스턴스 그룹을 추가합니다. 이 예시에서는 관리형 인스턴스 그룹 만들기에서 만든 샘플 HTTP 서비스를 실행하는 Compute Engine VM 템플릿과 함께 관리형 인스턴스 그룹을 사용합니다.

Console

  1. Cloud Console에서 Traffic Director 페이지로 이동합니다.

    Traffic Director 페이지로 이동

  2. 서비스 탭에서 서비스 만들기를 클릭합니다.

  3. 계속을 클릭합니다.

  4. 서비스 이름으로 td-vm-service를 입력합니다.

  5. 올바른 VPC 네트워크를 선택합니다.

  6. 백엔드 유형인스턴스 그룹인지 확인합니다.

  7. 생성한 관리형 인스턴스 그룹을 선택합니다.

  8. 올바른 포트 번호를 입력합니다.

  9. 사용률 또는 전송률분산 모드로 선택합니다. 기본값은 전송률입니다.

  10. 완료를 클릭합니다.

  11. 생성된 상태 확인을 선택합니다.

  12. 저장 후 계속을 클릭합니다.

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

gcloud

  1. 백엔드 서비스를 만듭니다.

    gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --health-checks td-vm-health-check
    
  2. 백엔드 서비스에 백엔드를 추가합니다.

    gcloud compute backend-services add-backend td-vm-service \
      --instance-group td-vm-mig-us-central1 \
      --instance-group-zone us-central1-a \
      --global
    

라우팅 규칙 맵 만들기

라우팅 규칙 맵은 Traffic Director가 메시의 트래픽을 라우팅하는 방법을 정의합니다.

다음 안내에 따라 Traffic Director 구성의 라우팅 규칙, 전달 규칙, 대상 프록시, 내부 IP 주소를 만들 수 있습니다.

내부 IP 주소로 전송되는 트래픽은 Envoy 프록시에 의해 가로채기를 당하고 호스트 및 경로 규칙에 따라 적절한 서비스로 전송됩니다.

전달 규칙은 load-balancing-schemeINTERNAL_SELF_MANAGED로 설정된 글로벌 전달 규칙으로 생성됩니다.

전달 규칙의 주소를 0.0.0.0으로 설정할 수 있습니다. 그러면 요청의 실제 대상 IP 주소와 관계없이 URL 맵에 구성된 HTTP 호스트 이름 및 경로 정보를 기반으로 트래픽이 라우팅됩니다. 이 경우 호스트 규칙에 구성된 대로 서비스의 호스트 이름이 서비스 메시 구성 내에서 고유해야 합니다. 즉, 동일한 호스트 이름을 사용하면서 백엔드 집합이 서로 다른 두 개의 상이한 서비스가 있을 수 없습니다.

또는, 서비스의 실제 대상 VIP를 기반으로 라우팅을 사용 설정할 수 있습니다. 서비스의 VIP를 전달 규칙의 address 매개변수로 구성하면 이 주소로 전송되는 요청만 URL 맵에 지정된 HTTP 매개변수를 기반으로 라우팅됩니다.

이 예시에서는 10.0.0.1를 주소 매개변수로 사용합니다. 즉, 서비스의 라우팅은 서비스의 실제 대상 VIP를 기반으로 수행됩니다.

Console

Cloud Console에서 대상 프록시가 전달 규칙과 결합됩니다. 전달 규칙을 만들면 Google Cloud가 자동으로 대상 HTTP 프록시를 만들어 URL 맵에 연결합니다.

  1. Cloud Console에서 Traffic Director 페이지로 이동합니다.

    Traffic Director 페이지로 이동

  2. 라우팅 규칙 맵 탭에서 라우팅 규칙 맵 만들기를 클릭합니다.

  3. 이름을 입력합니다.

  4. 전달 규칙 추가를 클릭합니다.

  5. 전달 규칙 이름으로 td-vm-forwarding-rule을 입력합니다.

  6. 네트워크를 선택합니다.

  7. 내부 IP를 선택합니다. 내부 IP 주소로 전송된 트래픽은 Envoy 프록시가 가로채서 호스트 및 경로 규칙에 따라 적절한 서비스로 전송합니다.

    전달 규칙은 load-balancing-schemeINTERNAL_SELF_MANAGED로 설정된 글로벌 전달 규칙으로 생성됩니다.

  8. 커스텀 IP 필드에 10.0.0.1을 입력합니다. VM이 해당 IP 주소로 전송하면 Envoy 프록시는 이를 가로채고 URL 맵에 정의된 트래픽 관리 규칙에 따라 적절한 백엔드 서비스의 엔드포인트로 전송합니다.

    VPC 네트워크의 각 전달 규칙은 VPC 네트워크마다 고유한 IP 주소와 포트가 있어야 합니다. 특정 VPC 네트워크에서 동일한 IP 주소와 포트를 사용하여 전달 규칙을 2개 이상 만들면 첫 번째 전달 규칙만 유효합니다. 나머지는 무시됩니다. 네트워크에서 10.0.0.1을 사용할 수 없는 경우 다른 IP 주소를 선택하세요.

  9. 포트80으로 설정되었는지 확인합니다.

  10. 저장을 클릭합니다.

  11. 라우팅 규칙 섹션에서 단순한 호스트 및 경로 규칙을 선택합니다.

  12. **호스트 및 경로 규칙** 섹션에서 td-vm-service를 서비스로 선택합니다.

  13. 호스트 및 경로 규칙 추가를 클릭합니다.

  14. 호스트hello-world를 입력합니다.

  15. 서비스에서 td-vm-service를 선택합니다.

  16. 저장을 클릭합니다.

gcloud

  1. 백엔드 서비스를 사용하는 URL 맵을 만듭니다.

    gcloud compute url-maps create td-vm-url-map \
       --default-service td-vm-service
    
  2. URL 맵 경로 일치자와 호스트 규칙을 만들어 호스트 이름과 경로를 기반으로 서비스 트래픽을 라우팅합니다. 이 예시에서는 service-test를 서비스 이름으로 사용하고 이 호스트(/*)의 모든 경로 요청과 일치하는 기본 경로 일치자를 사용합니다.

    gcloud compute url-maps add-path-matcher td-vm-url-map \
       --default-service td-vm-service --path-matcher-name td-vm-path-matcher
    
    gcloud compute url-maps add-host-rule td-vm-url-map --hosts service-test \
       --path-matcher-name td-vm-path-matcher
       --new-hosts hello-world
    
  3. 대상 HTTP 프록시를 만듭니다.

    gcloud compute target-http-proxies create td-vm-proxy \
       --url-map td-vm-url-map
    
  4. 전달 규칙을 만듭니다.

    전달 규칙은 글로벌이어야 하며 load-balancing-scheme 값을 INTERNAL_SELF_MANAGED로 설정하여 만들어야 합니다.

    gcloud compute forwarding-rules create td-vm-forwarding-rule \
       --global \
       --load-balancing-scheme=INTERNAL_SELF_MANAGED \
       --address=10.0.0.1 \
       --target-http-proxy=td-vm-proxy \
       --ports 80 \
       --network default
    

이 시점에서 Traffic Director는 관리형 인스턴스 그룹의 백엔드에서 URL 맵에 지정된 서비스의 트래픽을 부하 분산하도록 구성됩니다.

구성 확인

Compute Engine VM용 Traffic Director 설정 가이드의 마지막 부분에서는 클라이언트 VM에서 전달 규칙 VIP로 전송된 트래픽이 가로채기를 당하고 Envoy 프록시로 리디렉션되는지 테스트합니다. 그런 다음 Envoy 프록시는 Hello World 서비스를 호스팅하는 VM으로 해당 요청을 라우팅합니다.

먼저 다음 단계에 따라 백엔드가 정상인지 확인합니다.

Console

  1. Traffic Director 페이지로 이동합니다.
    부하 분산 페이지로 이동 요약은 서비스가 정상인지 알려줍니다.
  2. 서비스 이름을 클릭합니다. 서비스 세부정보 페이지에 백엔드의 상태에 대한 정보가 있습니다.
  3. 백엔드가 비정상이라면 백엔드 이름을 클릭한 후 VM 인스턴스 세부정보 페이지에서 재설정을 클릭하여 재설정할 수 있습니다.

gcloud

compute backend-services get-health 명령어를 사용하여 NAME을 백엔드 서비스의 이름으로 바꿉니다.

  gcloud compute backend-services get-health NAME 
--global
--format=get(name, healthStatus)

백엔드 상태를 확인한 후 트래픽을 가로채서 Envoy로 리디렉션하도록 구성된 클라이언트 VM에 로그인합니다. 라우팅 규칙 맵과 연결된 VIP에 curl 요청을 보냅니다. Envoy가 curl 요청을 검사하고, 해결할 서비스가 무엇인지 결정하며, 서비스와 연결된 백엔드로 요청을 전송합니다.

  1. Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

  2. td-vm-mig-us-central1 인스턴스 그룹을 선택합니다.
  3. 연결에서 SSH를 클릭합니다.
  4. 클라이언트 VM에 로그인한 후 curl 도구를 사용하여 Envoy를 통해 Hello World 서비스에 요청을 보냅니다.
curl -H "Host: hello-world" http://10.0.0.1/

이 명령어를 반복해서 실행하면 Hello World 관리형 인스턴스 그룹에 백엔드의 호스트 이름이 포함된 다른 HTML 응답이 표시됩니다. 이는 Hello World 서비스의 백엔드로 트래픽을 전송할 때 Envoy가 기본 부하 분산 알고리즘인 라운드 로빈 부하 분산을 사용하기 때문입니다.

구성이 완료되면 사이드카 프록시가 있는 각 Compute Engine VM은 HTTP 프로토콜을 사용하여 Traffic Director에 구성된 서비스에 액세스할 수 있습니다.

이 가이드의 특정 예시를 따라 데모 HTTP 서버 및 서비스 호스트 이름 service-test과 함께 Compute Engine VM 템플릿을 사용하는 경우 다음 단계에 따라 구성을 확인하세요.

  1. 사이드카 프록시가 설치된 VM 호스트 중 하나에 로그인합니다.
  2. 명령어 curl -H 'Host: service-test' 10.0.0.1를 실행합니다. 이 요청은 요청을 제공한 관리형 인스턴스 그룹 백엔드의 호스트 이름을 반환합니다.

2단계에서는 모든 IP 주소를 사용할 수 있습니다. 예를 들어 curl -I -H 'Host: service-test' 1.2.3.4 명령어는 2단계에서 작동합니다.

이는 전달 규칙에 주소 매개변수가 0.0.0.0으로 설정되어 있기 때문에 Traffic Director가 URL 맵에 정의된 호스트를 기준으로 일치하도록 지시하기 때문입니다. 구성 예시에서 호스트 이름은 service-test입니다.

다음 단계

마이크로서비스가 네트워크에 분산되는 방식에 따라 더 많은 전달 규칙이나 호스트 및 경로 규칙을 URL 맵에 추가해야 할 수 있습니다. 전달 규칙 및 URL 맵에 대한 자세한 내용은 다음 문서를 참조하세요.