App Hub 글로벌 애플리케이션을 사용하여 인프라 리소스 모니터링


App Hub를 사용하면 App Hub 애플리케이션을 통해 Google Cloud 프로젝트의 인프라 리소스를 관리하고 볼 수 있습니다. 이러한 App Hub 애플리케이션을 만들려면 Google Cloud 리소스가 포함된 서비스 프로젝트를 연결할 수 있는 App Hub 호스트 프로젝트가 필요합니다.

이 튜토리얼에서는 여러 프로젝트에 글로벌 App Hub 애플리케이션을 설정한 후 애플리케이션의 리소스를 보는 방법을 보여줍니다. 여러 서비스 프로젝트를 사용하여 공유 VPC 환경에 내부 애플리케이션 부하 분산기를 설정합니다. 그런 다음 App Hub 호스트 프로젝트의 글로벌 애플리케이션에서 서비스 프로젝트의 모든 인프라 리소스를 App Hub 서비스 및 워크로드로 등록하고 모니터링합니다.

이 튜토리얼은 App Hub를 설정하고 관리하는 사용자를 대상으로 합니다. Cloud Load Balancing에 대한 경험이 있어야 합니다.

목표

  • 여러 프로젝트에 걸쳐 리소스가 포함된 글로벌 App Hub 애플리케이션을 설정합니다.
  • 애플리케이션의 시스템 측정항목을 통해 리소스를 모니터링합니다.

비용

부하 분산된 관리형 VM 솔루션에 사용되는 Google Cloud 리소스의 예상 비용은 Google Cloud 가격 계산기에서 사전 계산된 추정치를 참고하세요.

예상 비용을 시작점으로 배포 비용을 계산합니다. 솔루션에 사용된 리소스에 적용할 모든 구성 변경사항을 반영하도록 예상 비용을 수정할 수 있습니다.

사전 계산된 예상 비용은 다음과 같은 특정 요소에 대한 가정을 기반으로 합니다.

  • 리소스가 배포된 Google Cloud 위치입니다.
  • 리소스가 사용된 시간의 양

App Hub 비용에 대한 자세한 내용은 가격 책정 페이지를 참고하세요.

시작하기 전에

이 튜토리얼을 설정하기 전에 프로젝트의 역할과 권한을 결정한 후 Google Cloud 프로젝트 4개를 만듭니다. 이 프로젝트 중 하나는 App Hub 호스트 프로젝트이고 나머지 세 개는 App Hub 서비스 프로젝트입니다.

필수 역할 및 권한

프로젝트 생성자에게는 기본 소유자 역할(roles/owner)이 부여됩니다. 기본적으로 이 Identity and Access Management (IAM) 역할에는 대부분의 Google Cloud리소스에 대한 전체 액세스에 필요한 권한이 포함됩니다.

프로젝트 생성자가 아니면 프로젝트에서 적합한 주 구성원에 대해 필수 권한을 부여해야 합니다. 예를 들어 주 구성원은 Google 계정(최종 사용자)이거나 서비스 계정(애플리케이션 및 워크로드)일 수 있습니다.

프로젝트, 폴더 또는 조직에 대한 액세스 권한을 관리하는 데 필요한 권한을 얻으려면 관리자에게 (프로젝트, 폴더 또는 조직)에 대한 액세스 권한을 관리할 리소스에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

App Hub 호스트 및 서비스 프로젝트 만들기

콘솔

  1. Google Cloud 콘솔에서 프로젝트 선택기 페이지로 이동합니다.

    프로젝트 선택기로 이동

  2. App Hub 호스트 프로젝트가 될 Google Cloud 프로젝트를 선택하거나 만듭니다.

  3. Enable the App Hub, Compute Engine, Service Management, and Service Usage APIs.

    Enable the APIs

  4. App Hub 호스트 프로젝트와 동일한 폴더에 새 Google Cloud 프로젝트 세 개를 만듭니다. App Hub 호스트 프로젝트의 App Hub 서비스 프로젝트입니다.

  5. 모든 Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. Enable the App Hub, Compute Engine, Service Management, and Service Usage APIs.

    Enable the APIs

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 최신 버전의 Google Cloud CLI가 설치되어 있는지 확인합니다. Cloud Shell에서 다음 명령어를 실행합니다.

      gcloud components update

  3. App Hub의 호스트 프로젝트가 될 새 프로젝트 HOST_PROJECT_ID를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create HOST_PROJECT_ID
    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project HOST_PROJECT_ID
  4. 모든 Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  5. App Hub, Compute Engine, Service Management, Service Usage API를 사용 설정합니다.

    gcloud services enable apphub.googleapis.com \
       compute.googleapis.com \
       servicemanagement.googleapis.com \
       serviceusage.googleapis.com
  6. App Hub 호스트 프로젝트의 App Hub 서비스 프로젝트가 될 세 개의 새 Google Cloud 프로젝트를 만듭니다.

    1. 서비스 프로젝트를 만듭니다.

      gcloud projects create SERVICE_PROJECT_1_ID

      SERVICE_PROJECT_1_ID를 서비스 프로젝트 1의 ID로 바꿉니다.

    2. 만든 서비스 프로젝트를 선택합니다.

      gcloud config set project SERVICE_PROJECT_1_ID
    3. Compute Engine, Service Management, Service Usage API를 사용 설정합니다.

      gcloud services enable compute.googleapis.com \
        servicemanagement.googleapis.com \
        serviceusage.googleapis.com
    4. 이 튜토리얼에서 사용되는 구성 변수를 설정합니다.

      export SERVICE_PROJECT_1_NUMBER= $(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')
    5. 이전 단계를 반복하여 SERVICE_PROJECT_2_IDSERVICE_PROJECT_3_ID를 만들고 API를 사용 설정하고 구성 변수를 설정합니다.

환경 준비

공유 VPC 환경에 이미 여러 프로젝트에 설정된 내부 애플리케이션 부하 분산기가 있는 경우 이 문서의 IAM 권한 부여 섹션으로 이동합니다.

그렇지 않은 경우 공유 VPC 환경에서 내부 애플리케이션 부하 분산기를 설정하려면 다음 단계를 따르세요.

부하 분산기 및 관리형 인스턴스 그룹이 있는 App Hub 워크로드 및 서비스
그림 1. 공유 VPC의 부하 분산기 및 관리형 인스턴스 그룹이 있는 App Hub 워크로드 및 서비스
  1. 서비스 프로젝트 1에서 공유 VPC 네트워크와 서브넷 2개를 구성합니다.
  2. 서비스 프로젝트 2에서 두 개의 관리형 인스턴스 그룹을 백엔드로 사용하여 부하 분산기의 백엔드 서비스를 만듭니다.
  3. 서비스 프로젝트 3에서 관리형 인스턴스 그룹 2개를 백엔드로 사용하는 다른 부하 분산기의 백엔드 서비스를 만듭니다.
  4. 서비스 프로젝트 1에서 부하 분산기의 프런트엔드 구성요소와 URL 맵을 만듭니다.

다음은 부하 분산된 관리형 VM 솔루션이 배포하는 토폴로지의 요청 처리 흐름입니다.

  1. 클라이언트 VM은 공유 VPC 네트워크에서 서비스 프로젝트 1의 내부 애플리케이션 부하 분산기에 HTTP 요청을 보냅니다.

  2. 부하 분산기는 URL 맵 및 백엔드 서비스의 정보를 사용하여 요청을 관리형 인스턴스 그룹 백엔드로 라우팅합니다.

공유 VPC 호스트 프로젝트에서 네트워크 및 서브넷 구성

부하 분산기의 프런트엔드 및 백엔드에 대한 서브넷 1개와 부하 분산기의 프록시에 대한 서브넷 1개, 총 2개의 서브넷이 있는 공유 VPC 네트워크가 필요합니다.

이 예시에서는 다음 네트워크, 리전 및 서브넷을 사용합니다.

  • 네트워크: 네트워크 이름은 lb-network입니다.

  • 부하 분산기 프런트엔드 및 백엔드의 서브넷. us-west1 리전에 있는 lb-frontend-and-backend-subnet이라는 이름의 서브넷은 기본 IP 범위로 10.1.2.0/24를 사용합니다.

  • 프록시 서브넷: us-west1 리전에 있는 proxy-only-subnet이라는 이름의 서브넷은 기본 IP 범위로 10.129.0.0/23을 사용합니다.

이 튜토리얼에서는 서비스 프로젝트 1을 공유 VPC 호스트 프로젝트로 지정합니다. 이 섹션의 모든 단계는 서비스 프로젝트 1에서 수행되어야 합니다.

부하 분산기의 프런트엔드 및 백엔드에 대한 서브넷 구성

새 부하 분산기를 만들려고 할 때마다 이 단계를 수행할 필요가 없습니다. 서비스 프로젝트에 프록시 전용 서브넷 외에 공유 VPC 네트워크의 서브넷에 대한 액세스 권한만 있으면 됩니다.

콘솔

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

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.
  3. 이름 필드에 lb-network를 입력합니다.
  4. 서브넷 생성 모드커스텀으로 설정합니다.
  5. 새 서브넷 섹션에 다음 정보를 입력합니다.

    • 이름: lb-frontend-and-backend-subnet

    • 리전: us-west1

    • IP 주소 범위: 10.1.2.0/24

  6. 완료를 클릭합니다.

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

gcloud

  1. 프로젝트를 서비스 프로젝트 1로 설정합니다.

      gcloud config set project SERVICE_PROJECT_1_ID

  2. gcloud compute networks create 명령어를 사용하여 VPC 네트워크를 만듭니다.

    gcloud compute networks create lb-network --subnet-mode=custom
    
  3. us-west1 리전의 lb-network 네트워크에 서브넷을 만듭니다.

    gcloud compute networks subnets create lb-frontend-and-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

프록시 전용 서브넷 구성

프록시 전용 서브넷은 lb-network VPC 네트워크의 us-west1 리전에 있는 모든 리전별 Envoy 기반 부하 분산기에서 사용됩니다. 네트워크당 리전별 활성 프록시 전용 서브넷은 하나만 있을 수 있습니다.

이 네트워크의 us-west1 리전에 이미 예약된 프록시 전용 서브넷이 있으면 이 단계를 수행하지 마세요.

콘솔

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

    VPC 네트워크로 이동

  2. 공유 VPC 네트워크의 이름인 lb-network를 클릭합니다.
  3. 서브넷 탭을 클릭하고 서브넷 추가를 클릭합니다.
  4. 서브넷 추가 창의 이름 필드에 proxy-only-subnet를 입력합니다.
  5. 리전 목록에서 us-west1을 선택합니다.
  6. 용도리전별 관리형 프록시로 설정합니다.
  7. IP 주소 범위 필드에 10.129.0.0/23을 입력합니다.
  8. 추가를 클릭합니다.

gcloud

gcloud compute networks subnets create 명령어로 프록시 전용 서브넷을 만듭니다.

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

서비스 프로젝트 관리자에게 백엔드 서브넷에 대한 액세스 권한 부여

서비스 프로젝트 관리자는 부하 분산기의 백엔드를 프로비저닝할 수 있도록 lb-frontend-and-backend-subnet 서브넷에 액세스할 수 있어야 합니다.

공유 VPC 관리자는 서비스 프로젝트 관리자(또는 서브넷을 사용하는 리소스 및 백엔드를 배포하는 개발자)에게 백엔드 서브넷에 대한 액세스 권한을 부여해야 합니다. 자세한 내용은 일부 서브넷의 서비스 프로젝트 관리자를 참조하세요.

서비스 프로젝트 1에서 방화벽 규칙 구성

이 예시에서는 다음과 같은 방화벽 규칙을 사용합니다.

  • fw-allow-health-check. 부하 분산되는 인스턴스에 적용되는 인그레스 규칙으로, 130.211.0.0/2235.191.0.0/16에서 Google Cloud상태 점검 시스템의 모든 TCP 트래픽을 허용합니다. 이 예시에서는 load-balanced-backend 대상 태그를 사용하여 적용할 인스턴스를 식별합니다.

  • fw-allow-proxies. 부하 분산되는 인스턴스에 적용되는 인그레스 규칙으로 부하 분산기의 관리형 프록시로부터 포트 80, 443, 8080의 TCP 트래픽을 허용합니다. 이 예시에서는 load-balanced-backend 대상 태그를 사용하여 방화벽 규칙이 적용되는 인스턴스를 식별합니다.

  • fw-allow-ssh. 부하 분산되는 인스턴스에 적용되는 인그레스 규칙으로 TCP 포트 22에 임의의 주소로부터 수신되는 SSH 연결을 허용합니다. 이 규칙에 더 제한적인 소스 IP 범위를 선택할 수 있습니다. 예를 들어 SSH 세션을 시작할 시스템의 IP 범위만 지정할 수 있습니다. 이 예시에서는 allow-ssh 대상 태그를 사용하여 방화벽 규칙이 적용되는 가상 머신(VM)을 식별합니다.

이러한 방화벽 규칙이 없으면 기본 거부 인그레스 규칙은 백엔드 인스턴스로 들어오는 트래픽을 차단합니다.

콘솔

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 방화벽 규칙 만들기를 클릭하여 Google Cloud 상태 점검을 허용하는 규칙을 만듭니다.
    • 이름: fw-allow-health-check
    • 네트워크: lb-network
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 대상: 지정된 대상 태그
    • 대상 태그: load-balanced-backend
    • 소스 필터: IPv4 범위
    • 소스 IPv4 범위: 130.211.0.0/2235.191.0.0/16
    • 프로토콜 및 포트:
      • 지정된 프로토콜 및 포트를 선택합니다.
      • TCP 체크박스를 선택하고 포트 번호로 80을 입력합니다.
      • 권장사항에 따라서 상태 점검에 사용되는 것과 일치하는 프로토콜 및 포트로 이러한 규칙을 제한합니다. 프로토콜 및 포트에 tcp:80을 사용하면 Google Cloud 는 포트 80에서 HTTP를 사용하여 VM에 연결할 수 있지만 포트 443에서 HTTPS를 사용하여 연결할 수는 없습니다.

  3. 만들기를 클릭합니다.
  4. 방화벽 규칙 만들기를 클릭하여 Google Cloud 상태 점검을 허용하는 규칙을 만듭니다.
    • 이름: fw-allow-proxies
    • 네트워크: lb-network
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 대상: 지정된 대상 태그
    • 대상 태그: load-balanced-backend
    • 소스 필터: IPv4 범위
    • 소스 IPv4 범위: 10.129.0.0/23
    • 프로토콜 및 포트:
      • 지정된 프로토콜 및 포트를 선택합니다.
      • TCP 체크박스를 선택하고 포트 번호로 80, 443, 8080을 입력합니다.
  5. 만들기를 클릭합니다.
  6. 방화벽 규칙 만들기를 클릭하여 Google Cloud 상태 점검을 허용하는 규칙을 만듭니다.
    • 이름: fw-allow-ssh
    • 네트워크: lb-network
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 대상: 지정된 대상 태그
    • 대상 태그: allow-ssh
    • 소스 필터: IPv4 범위
    • 소스 IPv4 범위: 0.0.0.0/0
    • 프로토콜 및 포트:
      • 지정된 프로토콜 및 포트를 선택합니다.
      • TCP 체크박스를 선택하고 포트 번호로 22을 입력합니다.
  7. 만들기를 클릭합니다.

gcloud

  1. fw-allow-health-check 방화벽 규칙을 만들어Google Cloud 상태 점검을 허용합니다. 이 예시에서는 상태 점검 프로버의 모든 TCP 트래픽을 허용합니다. 그러나 필요에 따라 더 좁은 포트 집합을 구성할 수 있습니다.

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp
    
  2. Envoy 프록시 전용 서브넷의 트래픽이 백엔드에 도달하도록 허용하는 fw-allow-proxies 방화벽 규칙을 만듭니다.

    gcloud compute firewall-rules create fw-allow-proxies \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=load-balanced-backend \
       --rules=tcp:80,tcp:443,tcp:8080
    
  3. allow-ssh 네트워크 태그를 사용해 VM으로 가는 SSH 연결을 허용하는 fw-allow-ssh 방화벽 규칙을 만듭니다.

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

고정 내부 IPv4 주소 예약

서비스 프로젝트 관리자는 공유 VPC 네트워크의 서브넷에서 내부 IPv4 또는 IPv6 주소를 예약할 수 있습니다. IP 주소 구성 객체는 서비스 프로젝트에서 생성되지만 해당 값은 선택한 공유 서브넷에서 사용 가능한 IPv4 주소 범위에서 가져옵니다.

서비스 프로젝트에서 독립형 내부 IP 주소를 예약하려면 다음 단계를 완료합니다.

콘솔

  1. 공유 VPC를 설정합니다.
  2. Google Cloud 콘솔에서 공유 VPC 페이지로 이동합니다.

    공유 VPC로 이동

  3. 공유 VPC 관리자로 로그인합니다.

  4. 프로젝트 선택 도구에서 서비스 프로젝트를 선택합니다.

  5. VPC 네트워크 >IP 주소로 이동합니다.

  6. IP 주소 페이지에서 내부 고정 IP 주소 예약을 클릭합니다.

  7. 이름 필드에 IP 주소 이름으로 l7-ilb-ip-address를 입력합니다.

  8. IP 버전 목록에서 IPv4를 선택합니다.

  9. 네트워크에서 lb-network를 선택합니다.

  10. 서브네트워크 목록에서 lb-frontend-and-backend-subnet를 선택합니다.

  11. 예약을 클릭합니다.

gcloud

  1. 아직 인증하지 않은 경우 Google Cloud CLI를 공유 VPC 서비스 프로젝트 관리자로 인증합니다.

    gcloud auth login SERVICE_PROJECT_ADMIN
    

    SERVICE_PROJECT_ADMIN을 공유 VPC 서비스 프로젝트 관리자의 이름으로 바꿉니다. 이 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).

  2. compute addresses create 명령어를 사용하여 IP 주소를 예약합니다.

    
    gcloud compute addresses create l7-ilb-ip-address \
        --project SERVICE_PROJECT_1_ID \
        --subnet=lb-frontend-and-backend-subnet \
        --region=us-west1 \
        --ip-version=IPV4
    

IP 주소 생성에 대한 자세한 내용은 SDK 문서에 게시되어 있습니다.

서비스 프로젝트 1에서 공유 VPC 설정

서비스 프로젝트 1에서 공유 VPC를 설정하려면 서비스 프로젝트 1을 공유 VPC 호스트 프로젝트로 지정하고 서비스 프로젝트 2와 3을 공유 VPC 서비스 프로젝트로 지정합니다. 이 튜토리얼의 뒷부분에서 서비스 프로젝트 2 및 3에서 MIG 백엔드를 만들 때 이전에 서비스 프로젝트 1에서 만든 것과 동일한 VPC 네트워크와 서브넷을 사용할 수 있습니다.

  1. 호스트 프로젝트를 사용 설정합니다.
  2. 서비스 프로젝트를 연결합니다.
  3. 서비스 프로젝트 2 및 3에 Compute 네트워크 사용자 역할(roles/compute.networkUser)을 부여합니다.

    콘솔

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

      IAM으로 이동

    2. 액세스 권한 부여를 클릭합니다. 액세스 권한 부여 창이 열립니다.

    3. 새 주 구성원 필드에 SERVICE_PROJECT_2_NUMBER@cloudservices.gserviceaccount.com을 입력합니다.

      서비스 프로젝트 번호는 프로젝트의 대시보드에서 가져올 수 있습니다.

      대시보드로 이동

    4. 역할 선택을 클릭하고 필터 필드에 Compute Network User를 입력합니다.

    5. Compute 네트워크 사용자 역할을 선택하고 저장을 클릭합니다.

    6. 이전 단계를 반복하여 서비스 프로젝트 3 (SERVICE_PROJECT_3_NUMBER@cloudservices.gserviceaccount.com)에 Compute Network User 역할을 부여합니다.

    gcloud

    1. 서비스 프로젝트 1에서 서비스 프로젝트 2에 Compute 네트워크 사용자 역할을 부여합니다.

      gcloud projects add-iam-policy-binding SERVICE_PROJECT_1_ID \
       --member='serviceAccount:SERVICE_PROJECT_2_NUMBER@cloudservices.gserviceaccount.com' \
       --role='roles/compute.networkUser'
      

      SERVICE_PROJECT_2_NUMBER를 서비스 프로젝트 2의 프로젝트 번호로 바꿉니다.

    2. 서비스 프로젝트 1에서 서비스 프로젝트 3에 Compute 네트워크 사용자 역할을 부여합니다.

      gcloud projects add-iam-policy-binding SERVICE_PROJECT_1_ID \
       --member='serviceAccount::SERVICE_PROJECT_3_NUMBER@cloudservices.gserviceaccount.com' \
       --role='roles/compute.networkUser'
      

      SERVICE_PROJECT_3_NUMBER를 서비스 프로젝트 3의 프로젝트 번호로 바꿉니다.

서비스 프로젝트 2에서 백엔드 서비스 및 MIG 만들기

이 섹션의 모든 단계는 서비스 프로젝트 2에서 수행되어야 합니다.

콘솔

  1. 인스턴스 템플릿을 만듭니다. Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

    1. 인스턴스 템플릿 만들기를 클릭합니다.
    2. 인스턴스 템플릿의 이름tutorial-ig-template-sp2으로 입력합니다.
    3. 위치 섹션에서 지역 (권장)을 선택하고 리전으로 us-west1(오리건)을 선택합니다.
    4. 머신 구성 섹션에서 시리즈로 N2를 선택합니다.
    5. 부팅 디스크Debian GNU/Linux 12(bookworm)와 같은 Debian 이미지로 설정되었는지 확인합니다. 이 안내에서는 apt-get처럼 Debian에서만 사용할 수 있는 명령어를 사용합니다. 부팅 디스크를 변경해야 하는 경우 변경을 클릭합니다.
      1. 운영체제Debian을 선택합니다.
      2. 버전에서 Debian GNU/Linux 12(bookworm)와 같은 사용 가능한 Debian 이미지 중 하나를 선택합니다.
      3. 선택을 클릭합니다.
    6. 고급 옵션을 클릭한 후 네트워킹을 클릭합니다.
    7. 다음 네트워크 태그: allow-ssh, load-balanced-backend를 입력합니다.
    8. 네트워크 인터페이스 섹션에서 내게 공유된 네트워크(호스트 프로젝트: SERVICE_PROJECT_1_ID)를 선택합니다.
    9. lb-network 네트워크에서 lb-frontend-and-backend-subnet 서브넷을 선택합니다.
    10. 관리를 클릭합니다. 관리시작 스크립트 필드에 다음 스크립트를 삽입합니다.
      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | tee /var/www/html/index.html
      systemctl restart apache2
      
    11. 만들기를 클릭합니다.
  2. 관리형 인스턴스 그룹을 만듭니다. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

    1. 인스턴스 그룹 만들기를 클릭합니다.
    2. 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다. 자세한 내용은 스테이트리스(Stateless) 또는 스테이트풀(Stateful) MIG를 참조하세요.
    3. 인스턴스 그룹의 이름tutorial-sp2-mig-a로 입력합니다.
    4. 인스턴스 템플릿에서 tutorial-ig-template-sp2을 선택합니다.
    5. 위치에서 단일 영역을 선택합니다.
    6. 리전에서 us-west1을 선택합니다.
    7. 그룹에 만들 인스턴스의 수를 지정합니다.

      이 예시에서는 자동 확장에서 다음 옵션을 지정합니다.

      • 자동 확장 모드에서 Off:do not autoscale을 선택합니다.
      • 최대 인스턴스 수2를 입력합니다.
    8. 만들기를 클릭합니다.

  3. 리전 백엔드 서비스를 만듭니다. 이 단계의 일부로 상태 점검을 만들고 백엔드 서비스에 백엔드도 추가합니다. Google Cloud 콘솔에서 백엔드 페이지로 이동합니다.

    백엔드로 이동

    1. 백엔드 서비스 만들기를 클릭합니다.
    2. 백엔드 서비스 만들기 대화상자에서 리전별 백엔드 서비스 옆에 있는 만들기를 클릭합니다.
    3. 백엔드 서비스의 이름tutorial-backend-service-sp2로 입력합니다.
    4. 리전에서 us-west1을 선택합니다.
    5. 부하 분산기 유형에서 리전 내부 애플리케이션 부하 분산기(INTERNAL_MANAGED)를 선택합니다.
    6. 백엔드 유형인스턴스 그룹으로 설정합니다.
    7. 백엔드 섹션에서 다음 필드를 설정합니다.
      1. 인스턴스 그룹tutorial-sp2-mig-a로 설정합니다.
      2. 포트 번호80을 입력합니다.
      3. 분산 모드사용률로 설정합니다.
      4. 완료를 클릭합니다.
    8. 상태 점검 섹션에서 상태 점검 만들기를 클릭하고 다음 필드를 설정합니다.
      1. 이름: tutorial-regional-health-check
      2. 프로토콜: HTTP
      3. 포트: 80
      4. 저장을 클릭합니다.
    9. 계속을 클릭합니다.
    10. 만들기를 클릭합니다.
  4. 이전 단계를 반복하여 관리형 인스턴스 그룹 tutorial-sp2-mig-b을 만들고 백엔드 서비스 tutorial-backend-service-sp2에 추가합니다.

gcloud

  1. 만든 서비스 프로젝트를 선택합니다.
    gcloud config set project SERVICE_PROJECT_2_ID
  2. HTTP 서버가 포함된 VM 인스턴스 템플릿 tutorial-ig-template-sp2을 만듭니다.

    gcloud compute instance-templates create tutorial-ig-template-sp2 \
        --region=us-west1 \
        --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \
        --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
        --tags=allow-ssh,load-balanced-backend \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        systemctl restart apache2' \
        --project=SERVICE_PROJECT_2_ID
    

    다음을 바꿉니다.

    • SERVICE_PROJECT_1_ID: 공유 VPC 호스트 프로젝트의 프로젝트 ID입니다.
    • SERVICE_PROJECT_2_ID: 부하 분산기 백엔드와 백엔드 서비스가 생성되는 서비스 프로젝트의 프로젝트 ID입니다.
  3. 리전에 관리형 인스턴스 그룹 tutorial-sp2-mig-a을 만듭니다.

    gcloud compute instance-groups managed create tutorial-sp2-mig-a \
        --region=us-west1 \
        --size=2 \
        --template=tutorial-ig-template-sp2 \
        --project=SERVICE_PROJECT_2_ID
    
  4. HTTP 상태 점검 tutorial-regional-health-check을 정의합니다.

    gcloud compute health-checks create http tutorial-regional-health-check \
      --region=us-west1 \
      --use-serving-port \
      --project=SERVICE_PROJECT_2_ID
    
  5. 백엔드 서비스 tutorial-backend-service-sp2를 정의합니다.

    gcloud compute backend-services create tutorial-backend-service-sp2 \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=tutorial-regional-health-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_2_ID
    
  6. gcloud compute backend-services add-backend 명령어로 백엔드 서비스에 백엔드를 추가합니다.

    gcloud compute backend-services add-backend tutorial-backend-service-sp2 \
      --balancing-mode=UTILIZATION \
      --instance-group=tutorial-sp2-mig-a \
      --instance-group-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_2_ID
    
  7. 리전에 다른 관리형 인스턴스 그룹 tutorial-sp2-mig-b을 만듭니다.

    gcloud compute instance-groups managed create tutorial-sp2-mig-b \
        --region=us-west1 \
        --size=2 \
        --template=tutorial-ig-template-sp2 \
        --project=SERVICE_PROJECT_2_ID
    
  8. 백엔드 서비스에 백엔드를 추가합니다.

    gcloud compute backend-services add-backend tutorial-backend-service-sp2 \
      --balancing-mode=UTILIZATION \
      --instance-group=tutorial-sp2-mig-b \
      --instance-group-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_2_ID
    

서비스 프로젝트 3에서 백엔드 서비스 및 MIG 만들기

이 섹션의 모든 단계는 서비스 프로젝트 3에서 수행되어야 합니다.

콘솔

  1. 인스턴스 템플릿을 만듭니다. Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

    1. 인스턴스 템플릿 만들기를 클릭합니다.
    2. 인스턴스 템플릿의 이름tutorial-ig-template-sp3으로 입력합니다.
    3. 위치 섹션에서 지역 (권장)을 선택하고 리전으로 us-west1(오리건)을 선택합니다.
    4. 머신 구성 섹션에서 시리즈로 N2를 선택합니다.
    5. 부팅 디스크Debian GNU/Linux 12(bookworm)와 같은 Debian 이미지로 설정되었는지 확인합니다. 이 안내에서는 apt-get처럼 Debian에서만 사용할 수 있는 명령어를 사용합니다. 부팅 디스크를 변경해야 하는 경우 변경을 클릭합니다.
      1. 운영체제Debian을 선택합니다.
      2. 버전에서 Debian GNU/Linux 12(bookworm)와 같은 사용 가능한 Debian 이미지 중 하나를 선택합니다.
      3. 선택을 클릭합니다.
    6. 고급 옵션을 클릭한 후 네트워킹을 클릭합니다.
    7. 다음 네트워크 태그: allow-ssh, load-balanced-backend를 입력합니다.
    8. 네트워크 인터페이스 섹션에서 내게 공유된 네트워크(호스트 프로젝트: SERVICE_PROJECT_1_ID)를 선택합니다.
    9. lb-network 네트워크에서 lb-frontend-and-backend-subnet 서브넷을 선택합니다.
    10. 관리를 클릭합니다. 관리시작 스크립트 필드에 다음 스크립트를 삽입합니다.
      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | tee /var/www/html/index.html
      systemctl restart apache2
      
    11. 만들기를 클릭합니다.
  2. 관리형 인스턴스 그룹을 만듭니다. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

    1. 인스턴스 그룹 만들기를 클릭합니다.
    2. 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다. 자세한 내용은 스테이트리스(Stateless) 또는 스테이트풀(Stateful) MIG를 참조하세요.
    3. 인스턴스 그룹의 이름tutorial-sp3-mig-a로 입력합니다.
    4. 인스턴스 템플릿에서 tutorial-ig-template-sp3을 선택합니다.
    5. 위치에서 단일 영역을 선택합니다.
    6. 리전에서 us-west1을 선택합니다.
    7. 그룹에 만들 인스턴스의 수를 지정합니다.

      이 예시에서는 자동 확장에서 다음 옵션을 지정합니다.

      • 자동 확장 모드에서 Off:do not autoscale을 선택합니다.
      • 최대 인스턴스 수2를 입력합니다.
    8. 만들기를 클릭합니다.

  3. 리전 백엔드 서비스를 만듭니다. 이 단계의 일부로 상태 점검을 만들고 백엔드 서비스에 백엔드도 추가합니다. Google Cloud 콘솔에서 백엔드 페이지로 이동합니다.

    백엔드로 이동

    1. 백엔드 서비스 만들기를 클릭합니다.
    2. 백엔드 서비스 만들기 대화상자에서 지역별 백엔드 서비스 옆에 있는 만들기를 클릭합니다.
    3. 백엔드 서비스의 이름tutorial-backend-service-sp3로 입력합니다.
    4. 리전에서 us-west1을 선택합니다.
    5. 부하 분산기 유형에서 리전 내부 애플리케이션 부하 분산기(INTERNAL_MANAGED)를 선택합니다.
    6. 백엔드 유형인스턴스 그룹으로 설정합니다.
    7. 백엔드 섹션에서 다음 필드를 설정합니다.
      1. 인스턴스 그룹tutorial-sp3-mig-a로 설정합니다.
      2. 포트 번호80을 입력합니다.
      3. 분산 모드사용률로 설정합니다.
      4. 완료를 클릭합니다.
    8. 상태 점검 섹션에서 상태 점검 만들기를 클릭하고 다음 필드를 설정합니다.
      1. 이름: tutorial-regional-health-check
      2. 프로토콜: HTTP
      3. 포트: 80
      4. 저장을 클릭합니다.
    9. 계속을 클릭합니다.
    10. 만들기를 클릭합니다.
  4. 이전 단계를 반복하여 관리형 인스턴스 그룹 tutorial-sp3-mig-b을 만들고 백엔드 서비스 tutorial-backend-service-sp3에 추가합니다.

gcloud

  1. 만든 서비스 프로젝트를 선택합니다.
    gcloud config set project SERVICE_PROJECT_3_ID
  2. HTTP 서버가 포함된 VM 인스턴스 템플릿 tutorial-ig-template-sp3을 만듭니다.

    gcloud compute instance-templates create tutorial-ig-template-sp3 \
        --region=us-west1 \
        --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \
        --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
        --tags=allow-ssh,load-balanced-backend \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        systemctl restart apache2' \
        --project=SERVICE_PROJECT_3_ID
    

    다음을 바꿉니다.

    • SERVICE_PROJECT_1_ID: 공유 VPC 호스트 프로젝트의 프로젝트 ID입니다.
    • SERVICE_PROJECT_3_ID: 부하 분산기 백엔드와 백엔드 서비스가 생성되는 서비스 프로젝트의 프로젝트 ID입니다.
  3. 리전에 관리형 인스턴스 그룹 tutorial-sp3-mig-a을 만듭니다.

    gcloud compute instance-groups managed create tutorial-sp3-mig-a \
        --region=us-west1 \
        --size=2 \
        --template=tutorial-ig-template-sp3 \
        --project=SERVICE_PROJECT_3_ID
    
  4. HTTP 상태 점검 tutorial-regional-health-check을 정의합니다.

    gcloud compute health-checks create http tutorial-regional-health-check \
      --region=us-west1 \
      --use-serving-port \
      --project=SERVICE_PROJECT_3_ID
    
  5. 백엔드 서비스 tutorial-backend-service-sp3를 정의합니다.

    gcloud compute backend-services create tutorial-backend-service-sp3 \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=tutorial-regional-health-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_3_ID
    
  6. gcloud compute backend-services add-backend 명령어로 백엔드 서비스에 백엔드를 추가합니다.

    gcloud compute backend-services add-backend tutorial-backend-service-sp3 \
      --balancing-mode=UTILIZATION \
      --instance-group=tutorial-sp3-mig-a \
      --instance-group-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_3_ID
    
  7. 리전에 다른 관리형 인스턴스 그룹 tutorial-sp3-mig-b을 만듭니다.

    gcloud compute instance-groups managed create tutorial-sp3-mig-b \
        --region=us-west1 \
        --size=2 \
        --template=tutorial-ig-template-sp3 \
        --project=SERVICE_PROJECT_3_ID
    
  8. 백엔드 서비스에 백엔드를 추가합니다.

    gcloud compute backend-services add-backend tutorial-backend-service-sp3 \
      --balancing-mode=UTILIZATION \
      --instance-group=tutorial-sp3-mig-b \
      --instance-group-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_3_ID
    

서비스 프로젝트 1에서 URL 맵 및 전달 규칙 만들기

이 섹션의 모든 단계는 서비스 프로젝트 1에서 수행되어야 합니다.

콘솔

구성 시작

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

    부하 분산으로 이동

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

기본 구성

  1. 부하 분산기의 이름tutorial-url-maps로 입력합니다.
  2. 리전 목록에서 us-west1을 선택합니다.
  3. 네트워크 목록에서 lb-network(프로젝트: SERVICE_PROJECT_1_ID)를 선택합니다.

    공유 VPC 네트워크에 필요한 프록시 전용 서브넷 경고가 표시되면 호스트 프로젝트 관리자가 다음 위치에서 lb-network 공유 VPC 네트워크의 us-west1 리전에서 proxy-only-subnet을 만들었는지 확인합니다. 이 페이지의 프록시 전용 서브넷을 볼 수 있는 권한이 없는 경우에도 부하 분산기 만들기가 성공합니다.

  4. 계속하려면 창을 열어둡니다.

백엔드 구성

  1. 백엔드 구성을 클릭합니다.
  2. 프로젝트 간 백엔드 서비스를 클릭합니다.
  3. 프로젝트 ID 필드에 서비스 프로젝트 2의 프로젝트 ID를 입력합니다.
  4. 백엔드 서비스 이름 필드에 사용하려는 서비스 프로젝트 2의 백엔드 서비스 이름을 입력합니다. 이 예시에서는 tutorial-backend-service-sp2입니다.
  5. 백엔드 서비스 추가를 클릭합니다.
  6. 프로젝트 ID 필드에 서비스 프로젝트 3의 프로젝트 ID를 입력합니다.
  7. 백엔드 서비스 이름 필드에 사용하려는 서비스 프로젝트 3의 백엔드 서비스 이름을 입력합니다. 이 예시에서는 tutorial-backend-service-sp3입니다.
  8. 백엔드 서비스 추가를 클릭합니다.

라우팅 규칙 구성

  1. 라우팅 규칙을 클릭합니다.
  2. 호스트 및 경로 규칙 섹션의 호스트 2 필드에 *를 입력합니다.
  3. 경로 2 필드에 /*를 입력합니다.
  4. 백엔드 2 드롭다운 목록에서 tutorial-backend-service-sp2를 선택합니다.
  5. 호스트 및 경로 규칙 추가를 클릭합니다.
  6. 호스트 3 필드에 tutorial-host을 입력합니다.
  7. 경로 3 필드에 /*을 입력합니다.
  8. 백엔드 3 드롭다운 목록에서 tutorial-backend-service-sp3를 선택합니다.

  9. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

    트래픽 관리에 대한 자세한 내용은 트래픽 관리 설정을 참조하세요.

프런트엔드 구성

교차 프로젝트 서비스 참조가 작동하려면 프런트엔드에서 백엔드 서비스를 만드는 데 사용된 공유 VPC 호스트 프로젝트의 네트워크(lb-network)를 사용해야 합니다.

  1. 프런트엔드 구성을 클릭합니다.
  2. 전달 규칙의 이름l7-ilb-forwarding-rule로 입력합니다.
  3. 프로토콜HTTP로 설정합니다.
  4. 서브네트워크lb-frontend-and-backend-subnet로 설정합니다. 목록에 있는 옵션이라도 프런트엔드에 프록시 전용 서브넷을 선택하지 마세요.
  5. 포트80으로 설정합니다.
  6. IP 주소 필드에서 기본 옵션인 임시 (자동)를 유지합니다.
  7. 완료를 클릭합니다.

구성 검토 및 완료

  • 만들기를 클릭합니다.

gcloud

  1. 만든 서비스 프로젝트를 선택합니다.

    gcloud config set project SERVICE_PROJECT_1_ID

  2. URL 맵 tutorial-url-maps을 만들고 기본 서비스를 서비스 프로젝트 1에서 만든 백엔드 서비스로 설정합니다.

    gcloud compute url-maps create tutorial-url-maps \
        --default-service=projects/SERVICE_PROJECT_2_ID/regions/us-west1/backendServices/tutorial-backend-service-sp2 \
        --region=us-west1 \
        --project=SERVICE_PROJECT_1_ID
    

    다음을 바꿉니다.

    • SERVICE_PROJECT_2_ID: 부하 분산기 백엔드와 백엔드 서비스가 생성되는 서비스 프로젝트 2의 프로젝트 ID입니다.
    • SERVICE_PROJECT_1_ID: 부하 분산기의 프런트엔드가 생성되는 서비스 프로젝트 1의 프로젝트 ID입니다.
  3. 대상 프록시 tutorial-http-proxy를 만듭니다.

    gcloud compute target-http-proxies create tutorial-http-proxy \
      --url-map=tutorial-url-maps \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_1_ID
    
  4. HTTP 트래픽을 처리하는 전달 규칙 l7-ilb-forwarding-rule를 만듭니다. 교차 프로젝트 서비스 참조가 작동하려면 전달 규칙에서 백엔드 서비스를 만드는 데 사용된 공유 VPC 호스트 프로젝트의 네트워크 (lb-network)를 사용해야 합니다.

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \
      --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=l7-ilb-ip-address \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=tutorial-http-proxy \
      --target-http-proxy-region=us-west1 \
      --project=SERVICE_PROJECT_1_ID
    
  5. 백엔드 서비스로 트래픽을 전송하려면 URL 맵을 백엔드 서비스와 연결합니다. 자세한 내용은 URL 맵 사용을 참고하세요.

    1. 서비스 프로젝트 2의 백엔드 서비스 tutorial-backend-service-sp2를 URL 맵 tutorial-url-maps 및 경로 일치자 이름 tutorial-path-matcher-sp2에 연결합니다.

      gcloud compute url-maps add-path-matcher tutorial-url-maps \
         --path-matcher-name=tutorial-path-matcher-sp2 \
         --default-service=projects/SERVICE_PROJECT_2_ID/regions/us-west1/backendServices/tutorial-backend-service-sp2 \
         --region=us-west1
      
    2. 서비스 프로젝트 3의 백엔드 서비스 tutorial-backend-service-sp3를 URL 맵 tutorial-url-maps 및 경로 일치자 이름 tutorial-path-matcher-sp3에 연결합니다. 경로 일치자가 새 호스트 규칙에 연결되도록 지정된 호스트와 함께 새 호스트 규칙 tutorial-host을 추가합니다.

      gcloud compute url-maps add-path-matcher tutorial-url-maps \
        --path-matcher-name=tutorial-path-matcher-sp3 \
        --default-service=projects/SERVICE_PROJECT_3_ID/regions/us-west1/backendServices/tutorial-backend-service-sp3 \
        --region=us-west1 \
        --new-hosts=tutorial-host
      

부하 분산기 테스트

부하 분산기를 테스트하려면 먼저 샘플 클라이언트 VM을 만듭니다. 그런 다음 VM으로 SSH 세션을 설정하고 이 VM에서 부하 분산기로 트래픽을 전송합니다.

테스트 VM 인스턴스 만들기

클라이언트는 공유 VPC 호스트 프로젝트 또는 연결된 서비스 프로젝트에 있을 수 있습니다. 이 예에서는 공유 VPC 호스트 프로젝트로 지정된 서비스 프로젝트 1에 클라이언트 VM을 배포하여 부하 분산기가 작동하는지 테스트합니다. 클라이언트는 동일한 공유 VPC 네트워크를 사용해야 하며 부하 분산기와 동일한 리전에 있어야 합니다.

이 섹션의 모든 단계는 서비스 프로젝트 2에서 수행되어야 합니다.

콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 인스턴스 만들기를 클릭합니다.

  3. 이름 필드에 client-vm를 입력합니다.

  4. 영역us-west1-b로 설정합니다.

  5. 고급 옵션을 클릭한 후 네트워킹을 클릭합니다.

  6. 다음 네트워크 태그: allow-ssh,load-balanced-backend를 입력합니다.

  7. 네트워크 인터페이스 섹션에서 나와 공유된 네트워크 (호스트 프로젝트: SERVICE_PROJECT_1_ID)를 선택합니다.

  8. lb-network 네트워크에서 lb-frontend-and-backend-subnet 서브넷을 선택합니다.

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

gcloud

테스트 VM 인스턴스를 만듭니다.

gcloud compute instances create client-vm \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --zone=us-west1-b \
    --tags=allow-ssh \
    --project=SERVICE_PROJECT_2_ID

부하 분산기로 트래픽 전송

SSH를 사용해 방금 만든 인스턴스에 연결한 후 내부 애플리케이션 부하 분산기의 전달 규칙 IP 주소를 통해 백엔드의 HTTP(S) 서비스에 연결할 수 있는지와 백엔드 인스턴스 전체에 트래픽이 부하 분산되는지 테스트합니다.

  1. 부하 분산기의 IP 주소 값을 검색합니다.

    gcloud compute addresses list --filter="name=( 'l7-ilb-ip-address')"
    

    다음과 비슷한 출력이 표시됩니다.

    NAME: l7-ilb-ip-address
    ADDRESS/RANGE: 10.1.2.2
    TYPE: INTERNAL
    PURPOSE: GCE_ENDPOINT
    NETWORK:
    REGION: us-west1
    SUBNET: lb-frontend-and-backend-subnet
    STATUS: IN_USE
    

    다음 단계에서 사용할 출력에서 서비스 ADDRESS/RANGE(예: 10.1.2.2)를 복사합니다.

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

    gcloud compute ssh client-vm \
       --zone=us-west1-b \
       --project=SERVICE_PROJECT_2_ID
    
  3. 부하 분산기의 IP 주소가 호스트 이름을 제공하는지 확인합니다.

    1. 서비스 프로젝트 2에서 IP 주소가 호스트 이름을 제공하는지 확인합니다.

      curl 10.1.2.2
      

      다음과 비슷한 출력이 표시됩니다.

      Page served from: tutorial-sp2-mig-a-10xk
      

    2. 서비스 프로젝트 3에서 IP 주소가 호스트 이름을 제공하는지 확인합니다.

      curl -H "Host: tutorial-host" 10.1.2.2
      

      다음과 비슷한 출력이 표시됩니다.

      Page served from: tutorial-sp3-mig-a-3d5h
      

IAM 권한 부여

App Hub 호스트 및 서비스 프로젝트에 적절한 IAM 역할 및 권한을 제공합니다.

콘솔

  1. Google Cloud 콘솔에서 프로젝트 선택기 페이지로 이동합니다.

    프로젝트 선택기로 이동

  2. App Hub 호스트 프로젝트를 선택합니다.

  3. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동

  4. 액세스 권한 부여를 클릭합니다. 액세스 권한 부여 창이 열립니다.

  5. 새 주 구성원 필드에 App Hub를 관리할 개인 사용자의 이메일 주소, App Hub 호스트 프로젝트의 App Hub 관리자 역할을 입력합니다.

  6. 역할 선택을 클릭하고 필터 필드에 App Hub를 입력합니다.

  7. App Hub 관리자 역할을 선택하고 저장을 클릭합니다.

  8. 각 App Hub 서비스 프로젝트에서 동일한 사용자에게 App Hub 관리자 역할을 부여합니다.

gcloud

  1. App Hub를 사용할 개인 사용자에게 역할을 부여하려면 필요에 따라 IAM 역할을 바꿔서 다음 명령어를 반복합니다. 자세한 내용은 App Hub 역할 및 권한을 참조하세요.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member='user:HOST_PROJECT_ADMIN' \
        --role='roles/apphub.admin'

    HOST_PROJECT_ADMIN을 App Hub 호스트 프로젝트에서 App Hub 관리자 역할이 있는 사용자로 바꿉니다. 이 값은 username@yourdomain 형식입니다(예: 222larabrown@gmail.com).

  2. 서비스 프로젝트의 App Hub 관리자 역할을 App Hub를 관리하는 개인 사용자에게 부여합니다. 서비스 프로젝트를 호스트 프로젝트에 추가하려면 App Hub 관리자 역할이 있어야 합니다. 서비스 프로젝트마다 이 역할을 가진 사람이 한 명 이상 있어야 합니다.

    gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \
       --member='user:HOST_PROJECT_ADMIN' \
       --role='roles/apphub.admin'

    SERVICE_PROJECT_ID를 서비스 프로젝트의 ID로 바꿉니다.

서비스 프로젝트 연결

서비스 프로젝트는 App Hub 애플리케이션에 등록할 수 있는 인프라 리소스가 포함된 Google Cloud 프로젝트입니다. 자세한 내용은 서비스 프로젝트를 참고하세요. 리소스를 배포한 서비스 프로젝트를 App Hub 호스트 프로젝트에 연결합니다.

콘솔

  1. Google Cloud 콘솔에서 App Hub 설정 페이지로 이동합니다.

    설정으로 이동

  2. 설정 페이지에서 프로젝트 연결을 클릭합니다.

  3. 열리는 창에서 프로젝트를 검색하거나 표시된 목록에서 서비스 프로젝트로 추가할 프로젝트의 체크박스를 선택합니다.

  4. 선택을 클릭합니다. 연결된 서비스 프로젝트 테이블에 선택한 서비스 프로젝트가 표시됩니다.

  5. 닫기를 클릭합니다.

gcloud

  1. 서비스 프로젝트 1, 2, 3을 App Hub 호스트 프로젝트에 연결합니다.

    gcloud apphub service-projects add SERVICE_PROJECT_1_ID \
      --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_2_ID \
      --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_3_ID \
      --project=HOST_PROJECT_ID
    
  2. App Hub 서비스 프로젝트를 App Hub 호스트 프로젝트에 연결했는지 확인합니다.

    gcloud apphub service-projects list --project=HOST_PROJECT_ID
    

서비스 프로젝트를 App Hub 호스트 프로젝트에 연결하면 연결된 서비스 프로젝트의 모든 Google Cloud 리소스를 발견된 App Hub 서비스 및 워크로드로 볼 수 있습니다. 이러한 검색된 서비스 및 워크로드를 확인하는 방법에 관한 자세한 내용은 기존 애플리케이션, 서비스, 워크로드 보기를 참고하세요.

애플리케이션 만들기

서비스 및 워크로드의 컨테이너가 될 애플리케이션을 만듭니다. 애플리케이션을 만들 때 리소스를 등록할 범위 유형 또는 위치와 같은 변경 불가능한 속성과 중요도 및 환경과 같은 가변 속성을 할당할 수 있습니다. 변수 속성을 사용하여 애플리케이션을 필터링할 수 있습니다. 자세한 내용은 속성 및 속성을 참고하세요.

이 튜토리얼에서는 단일 애플리케이션에서 전 세계 및 지역 리소스를 관리하는 데 도움이 되는 글로벌 애플리케이션을 만듭니다. 특정 지역의 리소스를 그룹화하려면 지역별 애플리케이션을 만들고 이러한 리소스를 등록하면 됩니다. 지역별 애플리케이션을 만드는 방법에 관한 자세한 내용은 App Hub 설정을 참고하세요.

콘솔

  1. App Hub 호스트 프로젝트에 있는지 확인합니다.
  2. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  3. 애플리케이션 만들기를 클릭합니다.

  4. 애플리케이션 만들기 페이지의 애플리케이션 리전 및 이름 선택 창에서 전역을 선택합니다.

  5. 애플리케이션 이름 필드에 tutorial-application을 입력합니다. 이 이름은 고유 식별자이며 애플리케이션을 만든 후에는 변경할 수 없습니다.

  6. 표시 이름, Tutorial을 입력하고 계속을 클릭합니다. 업데이트할 수 있는 사용자 친화적인 이름입니다. 자세한 내용은 기존 애플리케이션 업데이트를 참고하세요.

  7. 속성 추가 창의 중요도 목록에서 높음을 선택합니다. 중요도는 애플리케이션, 서비스, 워크로드가 비즈니스 운영에 얼마나 중요한지를 나타냅니다.

  8. 환경 필드에서 소프트웨어 수명 주기 단계를 표시하려면 프로덕션을 선택합니다.

  9. 계속을 클릭합니다.

  10. 소유자 추가 창에서 개발자 소유자, 운영자 소유자비즈니스 소유자에 대해 다음 세부 정보를 추가합니다. 표시 이름을 추가하는 경우 소유자의 이메일 주소를 입력해야 합니다.

    1. 소유자의 표시 이름을 입력합니다.
    2. 소유자의 이메일 주소를 입력합니다. 이 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).
  11. 각 개발자, 운영자, 비즈니스 소유자에 대해 이 단계를 반복합니다.

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

새 애플리케이션이 생성되고 애플리케이션 페이지에 표시됩니다. 전달 규칙, URL 맵, 백엔드 서비스, 관리형 인스턴스 그룹 (MIG)만 App Hub 애플리케이션에서 탐색된 리소스로 사용할 수 있습니다. 자세한 내용은 개념 및 데이터 모델을 참고하세요.

gcloud

  1. 만든 App Hub 호스트 프로젝트를 선택합니다.

    gcloud config set project HOST_PROJECT_ID
  2. global 리전에 tutorial-application이라는 새 애플리케이션을 만들고 표시 이름을 Tutorial로 지정합니다. 이 애플리케이션 이름(tutorial-application)은 고유 식별자이며 애플리케이션을 만든 후에는 변경할 수 없습니다. 표시 이름Tutorial은 업데이트할 수 있는 사용자 친화적인 이름입니다. 자세한 내용은 기존 애플리케이션 업데이트를 참고하세요.

    gcloud apphub applications create tutorial-application \
        --display-name='Tutorial' \
        --scope-type=GLOBAL \
        --project=HOST_PROJECT_ID \
        --location=global
    
  3. App Hub 호스트 프로젝트의 애플리케이션을 나열합니다.

    gcloud apphub applications list \
        --project=HOST_PROJECT_ID \
        --location=global
    

    다음과 비슷한 출력이 표시됩니다.

    ID                    DISPLAY_NAME  CREATE_TIME
    tutorial-application  Tutorial      2023-10-31T18:33:48
    
  4. criticality-type, environment-type, 소유자 속성으로 애플리케이션을 업데이트합니다.

    gcloud apphub applications update tutorial-application \
      --criticality-type='HIGH' \
      --environment-type='PRODUCTION' \
      --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \
      --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \
      --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \
      --project=HOST_PROJECT_ID \
      --location=global
    

    다음을 바꿉니다.

    • DISPLAY-NAME-DEVELOPER, DISPLAY-NAME-OPERATOR, DISPLAY-NAME-BUSINESS: 각각 개발자, 운영자, 비즈니스 소유자의 표시 이름입니다.
    • EMAIL-NAME-DEVELOPER, EMAIL-NAME-OPERATOR, EMAIL-NAME-BUSINESS: 각각 개발자, 운영자, 비즈니스 소유자의 이메일 주소입니다. 이러한 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).

    참고:

    • criticality-type: 애플리케이션, 서비스, 워크로드가 비즈니스 운영에 얼마나 중요한지를 나타냅니다.
    • environment-type: 소프트웨어 수명 주기의 단계를 나타냅니다.
  5. 생성한 애플리케이션의 세부정보를 가져옵니다.

    gcloud apphub applications describe tutorial-application \
      --project=HOST_PROJECT_ID \
      --location=global
    

    이 명령어는 다음과 비슷한 YAML 형식의 정보를 반환합니다.

    attributes:
    businessOwners:
    – displayName: [DISPLAY-NAME-BUSINESS]
      email: [EMAIL-BUSINESS]
    criticality:
      type: HIGH
    developerOwners:
    – displayName: [DISPLAY-NAME-DEVELOPER]
      email: [EMAIL-DEVELOPER]
    environment:
      type: PRODUCTION
    operatorOwners:
    – displayName: [DISPLAY-NAME-OPERATOR]
      email: [EMAIL-OPERATOR]
    createTime: '2023-10-31T18:33:48.199394108Z'
    displayName: Tutorial
    name: projects/HOST_PROJECT_ID/locations/global/applications/tutorial-application
    scope:
      type: REGIONAL
    state: ACTIVE
    uid: 9d991a9d-5d8a-4c0d-b5fd-85e39fb58c73
    updateTime: '2023-10-31T18:33:48.343303819Z'
    

서비스 및 워크로드 등록

서비스 및 워크로드를 등록하면 추가된 리소스를 모니터링할 수 있는 애플리케이션에 추가됩니다.

콘솔

  1. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  2. 애플리케이션 이름 Tutorial을 클릭합니다. 서비스 및 워크로드 탭에는 App Hub 서비스 프로젝트에 있는 등록된 서비스 및 워크로드 목록이 표시됩니다.

  3. 서비스를 등록합니다.

    1. 서비스 및 워크로드 탭에서 서비스/워크로드 등록을 클릭합니다.
    2. 서비스 또는 워크로드 등록 페이지의 리소스 선택 창에서 찾아보기를 클릭하여 서비스 또는 워크로드를 리소스로 선택합니다.
    3. 리소스 선택 창에서 서비스의 이름tutorial-backend-service-sp2를 선택하고 선택을 클릭합니다.
    4. 리소스 선택 창에서 리소스의 이름tutorial-service-backend-sp2를 입력합니다.
    5. 표시 이름, Backend service (SP2)을 입력하고 계속을 클릭합니다.
    6. 속성 추가 창의 중요도 목록에서 애플리케이션의 중요도를 나타내려면 높음을 선택합니다.
    7. 환경 필드에서 소프트웨어 수명 주기 단계를 표시하려면 프로덕션을 선택합니다.
    8. 계속을 클릭합니다.
    9. 소유자 추가 창에서 개발자 소유자, 운영자 소유자, 비즈니스 소유자의 필요에 따라 세부정보를 추가합니다. 표시 이름을 추가하는 경우 소유자의 이메일 주소를 입력해야 합니다.
      1. 소유자의 표시 이름을 입력합니다.
      2. 소유자의 이메일 주소를 입력합니다. 이 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).
    10. 각 개발자, 운영자, 비즈니스 소유자에 대해 이 단계를 반복합니다.
    11. 등록을 클릭합니다.

    서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 새 서비스가 추가된 것을 확인할 수 있습니다.

  4. 이전 단계를 반복하여 다른 서비스를 각각 tutorial-service-backend-sp3, tutorial-service-forwarding-rule, tutorial-service-url-map으로 등록합니다.
  5. 다음 예외를 제외하고 이전 단계를 반복해 서비스를 등록하여 워크로드를 등록합니다.
    1. 서비스 또는 워크로드 등록 창의 서비스 또는 워크로드 선택 섹션에서 워크로드 이름tutorial-sp2-mig-a를 선택하고 계속을 클릭합니다.
    2. 리소스 선택 창에서 리소스의 이름tutorial-workload-sp2-mig-a를 입력합니다.
    3. 표시 이름Instance group - A (SP2)으로 입력하고 계속을 클릭합니다.
  6. 이전 단계를 반복하여 다른 워크로드를 각각 tutorial-workload-sp2-mig-a, tutorial-workload-sp2-mig-b, tutorial-workload-sp3-mig-a, tutorial-workload-sp3-mig-b로 등록합니다.

gcloud

  1. App Hub 편집자 권한이 있는 개인을 추가합니다.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member='user:APP_HUB_EDITOR' \
      --role='roles/apphub.editor'
    

    APP_HUB_EDITOR를 App Hub 호스트 프로젝트에서 App Hub 편집자 역할이 있는 사용자로 바꿉니다. 이 값은 username@yourdomain 형식입니다(예: 222larabrown@gmail.com).

  2. App Hub 호스트 프로젝트에서 탐색된 모든 서비스를 나열합니다. 이 명령어는 애플리케이션에 등록할 수 있는 서비스를 반환합니다.

    gcloud apphub discovered-services list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음과 비슷한 출력이 표시됩니다.

    ID                             SERVICE_REFERENCE                                                                                                                      SERVICE_PROPERTIES
    BACKEND_SERVICE_SP2_ID      {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp2'}  {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}
    BACKEND_SERVICE_SP3_ID      {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp3'}  {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}
    FORWARDING_RULE_SERVICE_ID  {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule'}        {'gcpProject': 'projects/SERVICE_PROJECT_1_ID', 'location': 'us-west1'}
    URL_MAP_SERVICE_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/urlMaps/tutorial-url-maps'}                     {'gcpProject': 'projects/SERVICE_PROJECT_1_ID', 'location': 'us-west1'}
    

    출력에서 다음 단계에 사용할 서비스 ID(예: BACKEND_SERVICE_SP2_ID)를 복사합니다.

  3. 이전 단계의 서비스를 애플리케이션에 등록합니다. 이전 단계의 출력 필드에서 서비스 ID를 복사합니다.

    gcloud apphub applications services create tutorial-service-backend-sp2 \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_SP2_ID' \
        --display-name='Backend service (SP2)' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    
    gcloud apphub applications services create tutorial-service-backend-sp3 \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_SP3_ID' \
        --display-name='Backend service (SP3)' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    
    gcloud apphub applications services create tutorial-service-forwarding-rule \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/FORWARDING_RULE_SERVICE_ID' \
        --display-name='Forwarding rule' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    
    gcloud apphub applications services create tutorial-service-url-map \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/URL_MAP_SERVICE_ID' \
        --display-name='URL map' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    

    다음을 바꿉니다.

    • BACKEND_SERVICE_SP2_ID: 등록하려는 서비스 프로젝트 2의 백엔드 서비스의 서비스 ID입니다.
    • BACKEND_SERVICE_SP3_ID: 등록하려는 서비스 프로젝트 3의 백엔드 서비스의 서비스 ID
    • FORWARDING_RULE_SERVICE_ID: 등록하려는 서비스 프로젝트 1의 전달 규칙의 서비스 ID
    • URL_MAP_SERVICE_ID: 등록하려는 서비스 프로젝트 1의 URL 맵의 서비스 ID
  4. 애플리케이션에 등록된 모든 서비스를 나열합니다.

    gcloud apphub applications services list \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    

    다음과 비슷한 출력이 표시됩니다.

    ID                               DISPLAY_NAME      SERVICE_REFERENCE                                                                                                                       CREATE_TIME
    tutorial-service-backend-sp2     Backend service   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp2'}   2024-02-13T00:31:45
    tutorial-service-backend-sp3     Backend service   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp3'}   2024-02-13T00:31:45
    tutorial-service-forwarding-rule Forwarding rule   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule'}         2024-02-13T00:31:45
    tutorial-service-url-map         URL map           {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/urlMaps/tutorial-url-maps'}                      2024-02-13T00:31:45
    
    등록되었지만 분리된 서비스는 SERVICE_REFERENCE 필드에 빈 값으로 표시됩니다. 등록 상태에 대한 자세한 내용은 App Hub의 속성 및 속성을 참고하세요.

  5. App Hub 호스트 프로젝트에서 탐색된 모든 워크로드를 나열합니다. 이 명령어는 애플리케이션에 등록할 수 있는 워크로드를 반환합니다.

    gcloud apphub discovered-workloads list \
        --project=HOST_PROJECT_ID \
        --location=global
    

    다음과 비슷한 출력이 표시됩니다.

    ID                            WORKLOAD_REFERENCE                                                                                                          WORKLOAD_PROPERTIES
    INSTANCE_GROUP_SP3_A_ID    {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-a'}  {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}
    INSTANCE_GROUP_SP3_B_ID    {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-b'}  {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}
    INSTANCE_GROUP_SP2_A_ID    {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-a'}  {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}
    INSTANCE_GROUP_SP2_B_ID    {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-b'}  {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}
    
    다음 단계에서 사용할 출력에서 워크로드 ID를 복사합니다.

  6. 이전 단계의 워크로드를 애플리케이션에 등록합니다. 이전 단계의 출력 필드에서 워크로드 ID를 복사합니다.

    gcloud apphub applications workloads create tutorial-workload-sp3-mig-a \
        --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP3_A_ID' \
        --display-name='Workload instance group (SP3-A)' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    
    gcloud apphub applications workloads create tutorial-workload-sp3-mig-b \
        --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP3_B_ID' \
        --display-name='Workload instance group (SP3-B)' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    
    gcloud apphub applications workloads create tutorial-workload-sp2-mig-a \
        --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP2_A_ID' \
        --display-name='Workload instance group (SP2-A)' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    
    gcloud apphub applications workloads create tutorial-workload-sp2-mig-b \
        --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP2_B_ID' \
        --display-name='Workload instance group (SP2-B)' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    

    다음을 바꿉니다.

    • INSTANCE_GROUP_SP3_A_ID, INSTANCE_GROUP_SP3_B_ID: 등록하려는 서비스 프로젝트 3의 관리형 인스턴스 그룹의 워크로드 ID입니다.
    • INSTANCE_GROUP_SP2_A_ID, INSTANCE_GROUP_SP2_B_ID: 등록하려는 서비스 프로젝트 2의 관리형 인스턴스 그룹의 워크로드 ID입니다.
  7. 애플리케이션에 등록된 모든 워크로드를 나열합니다.

    gcloud apphub applications workloads list \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=global
    

    다음과 비슷한 출력이 표시됩니다.

    ID                              DISPLAY_NAME                      SERVICE_REFERENCE                                                                                                            CREATE_TIME
    tutorial-workload-sp3-mig-a     Workload instance group (SP3-A)   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-a'}   2024-02-13T00:31:45
    tutorial-workload-sp3-mig-b     Workload instance group (SP3-B)   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-b'}   2024-02-13T00:31:45
    tutorial-workload-sp2-mig-a     Workload instance group (SP2-A)   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-a'}   2024-02-13T00:31:45
    tutorial-workload-sp2-mig-b     Workload instance group (SP2-B)   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-b'}   2024-02-13T00:31:45
    
    등록되었지만 분리된 워크로드는 WORKLOAD_REFERENCE 필드에 빈 값으로 표시됩니다. 등록 상태에 대한 자세한 내용은 App Hub의 속성 및 속성을 참고하세요.

모든 서비스 및 워크로드 보기

App Hub 호스트 프로젝트에 연결된 서비스 프로젝트의 서비스 및 워크로드에 대한 세부정보를 볼 수 있습니다.

  1. Google Cloud 콘솔에서 App Hub 서비스 및 워크로드 페이지로 이동합니다.

    서비스 및 워크로드로 이동

    연결된 App Hub 서비스 프로젝트의 모든 서비스 및 워크로드가 표시됩니다.

  2. 리전 목록에서 전역을 선택합니다. 워크로드 인스턴스 그룹 워크로드가 App Hub 유형, 중요도등록된 대상과 같은 세부정보와 함께 표시됩니다.

  3. 상태를 기준으로 서비스 또는 워크로드를 필터링하려면 다음 안내를 따르세요.

    1. 필터 필드에서 등록 상태와 같은 필터를 선택합니다.
    2. 등록됨을 클릭합니다. 애플리케이션에 등록된 서비스 및 워크로드 목록이 나타납니다.

애플리케이션 측정항목 보기

App Hub 호스트 프로젝트에서 만든 애플리케이션의 시스템 측정항목을 볼 수 있습니다. 이러한 측정항목은 애플리케이션의 성능과 상태를 모니터링하는 데 도움이 되는 주요 신호(트래픽, 오류, 지연 시간, 포화도)에 해당합니다.

  1. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  2. 애플리케이션 이름 Tutorial을 클릭합니다.

    서비스 및 워크로드 탭에는 애플리케이션에 등록된 서비스 및 워크로드의 메타데이터가 표시됩니다.

  3. 등록된 서비스 및 워크로드의 시스템 측정항목을 보려면 측정항목을 클릭합니다.

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

App Hub 리소스 삭제

콘솔

  1. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  2. 애플리케이션 이름 Tutorial을 클릭합니다.

  3. 서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 서비스 이름을 클릭합니다.

  4. 서비스 및 워크로드 페이지에서 등록 취소를 클릭합니다.

    알림에서 서비스가 등록 취소되었음을 알립니다.

  5. 서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 워크로드 이름을 클릭합니다.

  6. 세부정보 탭에서 등록 취소를 클릭합니다.

    알림에서 워크로드가 등록 취소되었음을 알립니다.

  7. App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  8. 애플리케이션 이름을 클릭합니다.

  9. tutorial-application 페이지에서 삭제를 클릭합니다.

  10. Google Cloud 콘솔에서 App Hub 설정 페이지로 이동합니다.

    설정으로 이동

  11. 설정 페이지에서 App Hub 호스트 프로젝트에서 삭제할 서비스 프로젝트의 체크박스를 선택합니다.

  12. 프로젝트 분리를 클릭합니다.

gcloud

  1. 애플리케이션에 등록된 서비스를 나열합니다.

    gcloud apphub applications services list \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=global
    
  2. 애플리케이션에서 서비스를 등록 취소합니다.

    gcloud apphub applications services delete SERVICE_NAME \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=global
    

    SERVICE_NAME를 서비스 이름으로 바꿉니다. 이제 이러한 서비스를 애플리케이션에 등록할 수 있는 서비스가 탐색됩니다.

  3. 애플리케이션에 등록된 워크로드를 나열합니다.

    gcloud apphub applications workloads list \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=global
    
  4. 애플리케이션에서 워크로드를 등록 취소합니다.

    gcloud apphub applications workloads delete WORKLOAD_NAME \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=global
    

    WORKLOAD_NAME을 프로젝트 이름으로 바꿉니다. 이제 워크로드가 애플리케이션에 등록할 수 있는 탐색된 워크로드가 됩니다.

  5. 애플리케이션을 삭제합니다.

    gcloud apphub applications delete tutorial-application \
      --project=HOST_PROJECT_ID \
      --location=global
    
  6. App Hub 호스트 프로젝트에서 서비스 프로젝트를 삭제합니다.

    gcloud apphub service-projects remove SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    

    SERVICE_PROJECT_ID를 서비스 프로젝트 1, 2, 3의 프로젝트 ID로 바꿉니다.

배포 삭제

더 이상 솔루션이 필요하지 않으면 이 솔루션에서 만든 리소스에 대한 요금이 계속 청구되지 않도록 모든 리소스를 삭제합니다.

자세한 내용은 부하 분산기 설정 삭제를 참고하세요.

프로젝트 삭제

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력하고 종료를 클릭하여 프로젝트를 삭제합니다.

gcloud

Google Cloud 프로젝트를 삭제하려면 다음 단계를 따르세요.

gcloud projects delete PROJECT_ID

PROJECT_ID를 호스트 또는 서비스 프로젝트 ID로 바꿉니다.

다음 단계