영역별 NEG로 외부 패스 스루 네트워크 부하 분산기 설정

이 문서에서는 영역별 네트워크 엔드포인트 그룹(NEG) 백엔드를 사용하여 외부 패스 스루 네트워크 부하 분산기를 배포하는 방법을 보여줍니다. GCE_VM_IP 엔드포인트와 함께 영역별 NEG를 사용하면 다음을 수행할 수 있습니다.

  • VM 인스턴스의 네트워크 인터페이스를 백엔드 엔드포인트로 표시해서 가상 머신(VM) 인스턴스의 nic0 이외의 네트워크 인터페이스에 패킷을 전달합니다.
  • 엔드포인트를 여러 NEG에 연결할 수 있고 각 NEG가 서로 다르지만 겹칠 수 있는 엔드포인트 집합을 포함할 수 있는 유연한 백엔드 엔드포인트 집합을 만듭니다.

이 문서를 진행하기 전에 다음 사항을 숙지하세요.

권한

이러한 단계를 수행하려면 프로젝트에서 인스턴스를 만들고 네트워크를 수정해야 합니다. 프로젝트 소유자 또는 편집자이거나 다음 Compute Engine IAM 역할을 모두 보유해야 합니다.

작업 필요한 역할
네트워크, 서브넷, 부하 분산기 구성요소 만들기 네트워크 관리자
방화벽 규칙 추가 및 삭제 보안 관리자
인스턴스 만들기 Compute 인스턴스 관리자

자세한 내용은 다음 페이지를 참조하세요.

설정 개요

이 문서에서는 GCE_VM_IP 영역별 NEG 백엔드를 사용하는 외부 패스 스루 네트워크 부하 분산기를 구성 및 테스트하는 방법을 보여줍니다. 이 섹션의 단계에서는 다음을 구성하는 방법을 설명합니다.

  1. 커스텀 서브넷이 있는 lb-network라는 샘플 VPC 네트워크
  2. 백엔드 VM에 대한 수신 연결을 허용하는 방화벽 규칙
  3. 4개의 VM:
    • us-west1-a 영역의 VM vm-a1vm-a2
    • us-west1-c 영역의 VM vm-c1vm-c2
  4. 2개의 백엔드 영역 NEG, us-west1-a 영역의 neg-aus-west1-c 영역의 neg-c. 각 NEG에는 다음 엔드포인트가 포함됩니다.
    • neg-a에는 다음 두 엔드포인트가 포함됩니다.
      • 기본 내부 IP 주소로 식별된 VM vm-a1nic1
      • 기본 내부 IP 주소로 식별된 VM vm-a2nic1
    • neg-c에는 다음 두 엔드포인트가 포함됩니다.
      • 기본 내부 IP 주소로 식별된 VM vm-c1nic1
      • 기본 내부 IP 주소로 식별된 VM vm-c2nic1
  5. 연결을 테스트하기 위한 us-west1-a의 클라이언트 VM(vm-client) 1개
  6. 다음 부하 분산기 구성요소:
    • 2개의 영역 NEG에 대한 연결 분산을 관리하기 위한 us-west1 리전의 외부 백엔드 서비스
    • 부하 분산기의 프런트엔드에 대한 외부 전달 규칙 및 IP 주소

외부 패스 스루 네트워크 부하 분산기는 리전별 부하 분산기입니다. 모든 부하 분산기 구성요소(백엔드 VM, 백엔드 서비스, 전달 규칙)가 동일한 리전에 있어야 합니다.

이 예시의 아키텍처는 다음과 같습니다.

영역별 NEG가 있는 외부 패스 스루 네트워크 부하 분산기
영역별 NEG가 있는 외부 패스 스루 네트워크 부하 분산기(확대하려면 클릭).

시작하기 전에

Google Cloud CLI 설치 이 도구에 대한 전체 개요는 gcloud CLI 개요를 참조하세요. API 및 gcloud 참조에서 부하 분산과 관련된 명령어를 확인할 수 있습니다.

이전에 gcloud CLI를 실행한 적이 없으면 먼저 gcloud init 명령어를 실행하여 인증합니다.

이 페이지는 bash에 익숙한 개발자를 대상으로 합니다.

네트워크 및 서브넷 설정

이 페이지의 예시에서는 lb-network라는 커스텀 모드 VPC 네트워크를 사용합니다. IPv4 트래픽만 처리하려면 자동 모드 VPC 네트워크를 사용하면 됩니다. 하지만 IPv6 트래픽에는 커스텀 모드 서브넷이 필요합니다.

IPv6 트래픽에는 이중 스택 서브넷(stack-typeIPv4_IPv6로 설정됨)도 필요합니다. 커스텀 모드 VPC 네트워크에서 이중 스택 서브넷을 만들 때 서브넷에 IPv6 액세스 유형을 선택합니다. 이 예시에서는 서브넷의 ipv6-access-type 매개변수를 EXTERNAL로 설정합니다. 즉, 이 서브넷의 새 VM에 외부 IPv4 주소와 외부 IPv6 주소를 모두 할당할 수 있습니다. 전달 규칙을 외부 IPv4 주소 및 외부 IPv6 주소에 할당할 수도 있습니다.

이 예시에서 사용되는 백엔드 및 부하 분산기 구성요소는 다음 리전 및 서브넷에 있습니다.

  • 리전: us-central1
  • 서브넷: lb-subnet, 기본 IPv4 주소 범위 10.1.2.0/24. 서브넷에 구성할 IPv4 주소 범위를 선택하더라도 IPv6 주소 범위가 자동으로 할당됩니다. Google은 고정된 크기(/64)의 IPv6 CIDR 블록을 제공합니다.

예시 네트워크 및 서브넷을 만들려면 다음 단계를 따르세요.

콘솔

IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 단계를 따르세요.

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

    VPC 네트워크로 이동

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

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

  4. 서브넷 섹션에서 다음을 수행합니다.

    • 서브넷 생성 모드커스텀으로 설정합니다.
    • 새 서브넷 섹션에서 다음 필드를 구성하고 완료를 클릭합니다.
      • 이름: lb-subnet
      • 리전: us-central1
      • IP 스택 유형: IPv4 및 IPv6(이중 스택)
      • IPv4 범위: 10.1.2.0/24
        서브넷의 IPv4 주소 범위를 구성할 수 있지만 서브넷의 IPv6 주소 범위를 선택할 수는 없습니다. Google은 고정된 크기(/64)의 IPv6 CIDR 블록을 제공합니다.
      • IPv6 액세스 유형: 외부
  5. 만들기를 클릭합니다.

IPv4 트래픽만 지원하려면 다음 단계를 따르세요.

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

    VPC 네트워크로 이동

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

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

  4. 서브넷 섹션에서 다음을 수행합니다.

    • 서브넷 생성 모드커스텀으로 설정합니다.
    • 새 서브넷 섹션에서 다음 필드를 구성하고 완료를 클릭합니다.
      • 이름: lb-subnet
      • 리전: us-central1
      • IP 스택 유형: IPv4(단일 스택)
      • IPv4 범위: 10.1.2.0/24
  5. 만들기를 클릭합니다.

gcloud

  1. 커스텀 모드 VPC 네트워크를 만듭니다.

    gcloud compute networks create lb-network \
        --subnet-mode=custom
    
  2. lb-network 네트워크 내에서 us-central1 리전의 백엔드에 대한 서브넷을 만듭니다.

    IPv4 및 IPv6 트래픽 모두의 경우 다음 명령어를 사용하여 이중 스택 서브넷을 만듭니다.

    gcloud compute networks subnets create lb-subnet \
      --stack-type=IPV4_IPv6 \
      --ipv6-access-type=EXTERNAL \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-central1
    

    IPv4 트래픽 전용의 경우 다음 명령어를 사용합니다.

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

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

외부 패스 스루 네트워크 부하 분산기의 리전 특성을 설명하기 위해 이 예시에서는 서로 다른 두 영역에 있는 두 개의 영역별 NEG 백엔드를 사용합니다. 트래픽은 두 NEG 및 각 NEG 내의 엔드포인트 간에 부하 분산됩니다.

VM 만들기

이 부하 분산 시나리오에서는 VM 4개를 만들고 각 인스턴스에 Apache 웹 서버를 설치합니다. 이 웹 서버는 TCP 포트 80에서 리슨합니다. 기본적으로 Apache는 임의의 IP 주소에 바인딩되도록 구성됩니다. 외부 패스 스루 네트워크 부하 분산기는 대상 IP 주소를 보존하여 패킷을 전달합니다.

설명의 편의를 위해 이러한 백엔드 VM은 Debian GNU/Linux 10을 실행합니다.

IPv4 및 IPv6 트래픽을 모두 처리하려면 백엔드 VM을 이중 스택으로 구성합니다. VM의 stack-typeIPv4_IPv6로 설정합니다. VM은 서브넷에서 ipv6-access-type 설정(이 예시에서는 EXTERNAL)도 상속합니다. IPv6 요구사항에 대한 자세한 내용은 외부 패스 스루 네트워크 부하 분산기 개요: 전달 규칙을 참조하세요.

기존 VM을 백엔드로 사용하려면 gcloud compute instances network-interfaces update 명령어를 사용하여 VM을 이중 스택으로 업데이트합니다.

외부 패스 스루 네트워크 부하 분산기에 백엔드 VM으로 참여하는 인스턴스는 적절한 Linux 게스트 환경, Windows 게스트 환경 또는 동일한 기능을 제공하는 기타 프로세스를 실행해야 합니다.

각 VM은 nic0nic1의 두 가지 네트워크 인터페이스로 생성됩니다. 이 튜토리얼에서는 lb-network VPC 네트워크 및 lb-subnet 서브넷과 연결된 nic1이 사용됩니다. lb-network 네트워크 및 lb-subnet 서브넷을 사용해서 이 절차 뒷부분의 영역별 NEG 만들기를 수행합니다.

콘솔

VM 만들기

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

    VM 인스턴스로 이동

  2. 다음 단계를 반복하여 다음 이름 및 영역 조합으로 4개의 VM을 만듭니다.

    • 이름: vm-a1, 영역: us-west1-a
    • 이름: vm-a2, 영역: us-west1-a
    • 이름: vm-c1, 영역: us-west1-c
    • 이름: vm-c2, 영역: us-west1-c
  3. 인스턴스 만들기를 클릭합니다.

  4. 이전에 표시된 대로 이름을 설정합니다.

  5. 리전의 경우 us-west1을 선택하고 이전에 표시된 대로 영역을 선택합니다.

  6. 부팅 디스크 섹션에서 부팅 디스크 옵션으로 Debian 운영체제 및 10(Buster) 버전이 선택되어 있는지 확인합니다. 필요한 경우 선택을 클릭하여 이미지를 변경합니다.

  7. 고급 옵션을 클릭하고 다음과 같이 변경합니다.

    • 네트워킹을 클릭하고 다음 네트워크 태그를 추가합니다. lb-tag
    • 네트워크 인터페이스에 대해 네트워크 인터페이스 추가를 클릭하고 다음과 같이 변경합니다.

      IPv4 및 IPv6 백엔드의 경우:

      • 네트워크: lb-network
      • 서브넷: lb-subnet
      • IP 스택 유형: IPv4 and IPv6 (dual-stack)
      • 기본 내부 IP: 임시(자동)
      • 외부 IPv4 주소: 임시(자동)
      • 외부 IPv6 주소: 자동 할당

      IPv4 전용 백엔드의 경우:

      • 네트워크: lb-network
      • 서브넷: lb-subnet
      • IP 스택 유형: IPv4 (single-stack)
      • 기본 내부 IP: 임시(자동)
      • 외부 IP: 임시

      그런 다음 완료를 클릭합니다.

    • 관리를 클릭합니다. 시작 스크립트 필드에 다음 스크립트 콘텐츠를 복사하여 붙여넣습니다. 스크립트 콘텐츠는 4개의 모든 VM에서 동일합니다.

      #! /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
      
  8. 만들기를 클릭합니다.

gcloud

다음 명령어를 4번 실행하고 [VM-NAME][ZONE]에 이러한 4개의 조합을 사용하여 4개의 VM을 만듭니다. 스크립트 콘텐츠는 4개의 모든 VM에서 동일합니다.

  • VM_NAME: vm-a1ZONE: us-west1-a
  • VM_NAME: vm-a2ZONE: us-west1-a
  • VM_NAME: vm-c1ZONE: us-west1-c
  • VM_NAME: vm-c2ZONE: us-west1-c

IPv4 및 IPv6 트래픽을 모두 처리하려면 다음 명령어를 사용하세요.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=lb-tag \
    --network-interface=network=default,subnet=default,stack_type=IPv4_IPv6,--ipv6-network-tier=PREMIUM \
    --network-interface=network=lb-network,subnet=lb-subnet,stack_type=IPv4_IPv6,--ipv6-network-tier=PREMIUM \
    --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'

IPv4 트래픽 전용 트래픽을 처리하려면 다음 명령어를 사용합니다.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=lb-tag \
    --network-interface=network=default,subnet=default,stack_type=IPv4_ONLY \
    --network-interface=network=lb-network,subnet=lb-subnet,stack_type=IPv4_ONLY \
    --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'

GCE_VM_IP 엔드포인트를 사용하여 영역별 NEG 만들기

NEG는 이전 단계에서 만든 VM과 동일한 영역에서 생성되어야 합니다. 이 예시에서는 또한 이전 단계에서 만든 VMnic1과 연결된 lb-network VPC 네트워크 및 lb-subnet 서브넷에서 NEG를 만듭니다. 따라서 NEG의 엔드포인트가 VM의 nic1에 배치됩니다.

콘솔

영역별 네트워크 엔드포인트 그룹을 만들려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
    네트워크 엔드포인트 그룹 페이지로 이동
  2. 네트워크 엔드포인트 그룹 만들기를 클릭합니다.
  3. 영역별 NEG의 이름neg-a로 입력합니다.
  4. 네트워크 엔드포인트 그룹 유형네트워크 엔드포인트 그룹(영역)을 선택합니다.
  5. 네트워크lb-network를 선택합니다.
  6. 서브넷으로 lb-subnet을 선택합니다.
  7. 영역으로 us-west1-a를 선택합니다.
  8. 만들기를 클릭합니다.
  9. 이 단계를 반복하여 us-west1-c 영역에 neg-c라는 두 번째 영역별 NEG를 만듭니다.

엔드포인트를 영역별 NEG에 추가합니다.

  1. Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
    네트워크 엔드포인트 그룹으로 이동
  2. 이전 단계에서 만든 첫 번째 네트워크 엔드포인트 그룹의 이름(neg-a)을 클릭합니다. 네트워크 엔드포인트 그룹 세부정보 페이지가 표시됩니다.
  3. 이 그룹의 네트워크 엔드포인트 섹션에서 네트워크 엔드포인트 추가를 클릭합니다. 네트워크 엔드포인트 추가 페이지가 표시됩니다.

    1. VM 인스턴스를 클릭하고 vm-a1을 선택하여 내부 IP 주소를 네트워크 엔드포인트로 추가합니다.
    2. 만들기를 클릭합니다.
    3. 다시 네트워크 엔드포인트 추가를 클릭하고 VM 인스턴스 아래에서 vm-a2를 선택합니다.
    4. 만들기를 클릭합니다.
  4. 이전 단계에서 만든 두 번째 네트워크 엔드포인트 그룹의 이름(neg-c)을 클릭합니다. 네트워크 엔드포인트 그룹 세부정보 페이지가 표시됩니다.

  5. 이 그룹의 네트워크 엔드포인트 섹션에서 네트워크 엔드포인트 추가를 클릭합니다. 네트워크 엔드포인트 추가 페이지가 표시됩니다.

    1. VM 인스턴스를 클릭하고 vm-c1을 선택하여 해당 내부 IP 주소를 네트워크 엔드포인트로 추가합니다.
    2. 만들기를 클릭합니다.
    3. 다시 네트워크 엔드포인트 추가를 클릭하고 VM 인스턴스 아래에서 vm-c2를 선택합니다.
    4. 만들기를 클릭합니다.

gcloud

  1. gcloud compute network-endpoint-groups create 명령어를 사용하여 us-west1-aneg-a라는 GCE_VM_IP 영역 NEG를 만듭니다.

    gcloud compute network-endpoint-groups create neg-a \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=lb-subnet
    
  2. neg-a에 엔드포인트를 추가합니다.

    gcloud compute network-endpoint-groups update neg-a \
        --zone=us-west1-a \
        --add-endpoint='instance=vm-a1' \
        --add-endpoint='instance=vm-a2'
    
  3. gcloud compute network-endpoint-groups create 명령어를 사용하여 us-west1-cneg-c라는 GCE_VM_IP 영역 NEG를 만듭니다.

    gcloud compute network-endpoint-groups create neg-c \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-c \
        --network=lb-network \
        --subnet=lb-subnet
    
  4. neg-c에 엔드포인트를 추가합니다.

    gcloud compute network-endpoint-groups update neg-c \
        --zone=us-west1-c \
        --add-endpoint='instance=vm-c1' \
        --add-endpoint='instance=vm-c2'
    

방화벽 규칙 구성

외부 트래픽(상태 점검 프로브 포함)이 백엔드 인스턴스에 도달하도록 허용하는 방화벽 규칙을 만듭니다.

이 예시에서는 모든 소스 범위의 TCP 트래픽이 포트 80의 백엔드 인스턴스에 도달하도록 허용하는 방화벽 규칙을 만듭니다. 특히 상태 점검 프로브에 대해 별도의 방화벽 규칙을 만들려면 상태 점검 개요: 프로브 IP 범위 및 방화벽 규칙에 설명된 소스 IP 주소 범위를 사용합니다.

콘솔

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

    방화벽으로 이동

  2. IPv4 트래픽을 허용하려면 다음 단계를 수행합니다.

    1. 방화벽 규칙 만들기를 클릭합니다.
    2. 이름allow-network-lb-ipv4을 입력합니다.
    3. 네트워크lb-network를 선택합니다.
    4. 대상으로 지정된 대상 태그를 선택합니다.
    5. 대상 태그 필드에 lb-tag를 입력합니다.
    6. 소스 필터에 대해 IPv4 범위를 선택합니다.
    7. 소스 IPv4 범위0.0.0.0/0으로 설정합니다. 이렇게 하면 모든 소스의 IPv4 트래픽이 허용됩니다. 이렇게 하면 Google의 상태 점검 프로브가 백엔드 인스턴스에 도달할 수도 있습니다.
    8. 지정된 프로토콜 및 포트에 대해 TCP를 선택하고 80을 입력합니다.
    9. 만들기를 클릭합니다.
  3. IPv6 트래픽을 허용하려면 다음 단계를 수행합니다.

    1. 방화벽 규칙 만들기를 다시 클릭합니다.
    2. 이름allow-network-lb-ipv6을 입력합니다.
    3. 네트워크lb-network를 선택합니다.
    4. 대상으로 지정된 대상 태그를 선택합니다.
    5. 대상 태그 필드에 lb-tag를 입력합니다.
    6. 소스 필터에 대해 IPv6 범위를 선택합니다.
    7. 소스 IPv6 범위::/0으로 설정합니다. 이렇게 하면 모든 소스의 IPv6 트래픽이 허용됩니다. 이렇게 하면 Google의 상태 점검 프로브가 백엔드 인스턴스에 도달할 수도 있습니다.
    8. 지정된 프로토콜 및 포트에 대해 TCP를 선택하고 80을 입력합니다.
    9. 만들기를 클릭합니다.

gcloud

  1. IPv4 트래픽을 허용하려면 다음 명령어를 실행합니다.

    gcloud compute firewall-rules create allow-network-lb-ipv4 \
        --network=lb-network \
        --target-tags=lb-tag \
        --allow=tcp:80 \
        --source-ranges=0.0.0.0/0
    
  2. IPv6 트래픽을 허용하려면 다음 명령어를 실행합니다.

    gcloud compute firewall-rules create allow-network-lb-ipv6 \
      --network=lb-network \
      --target-tags=lb-tag \
      --allow=tcp:80 \
      --source-ranges=::/0
    

부하 분산기 구성

다음으로 부하 분산기를 설정합니다.

부하 분산기를 구성하면 사용자가 구성하는 고정 외부 IP 주소로 전송되는 패킷이 VM에 수신됩니다. Compute Engine에서 제공하는 이미지를 사용하는 경우 IP 주소를 처리하도록 인스턴스가 자동으로 구성됩니다. 다른 이미지를 사용하는 경우 이 주소를 eth1의 별칭 또는 각 인스턴스의 루프백으로 구성해야 합니다.

부하 분산기를 설정하려면 다음 안내를 따르세요.

콘솔

구성 시작

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

    부하 분산으로 이동

  2. 부하 분산기 만들기를 클릭합니다.
  3. 부하 분산기 유형네트워크 부하 분산기(TCP/UDP/SSL)를 선택하고 다음을 클릭합니다.
  4. 프록시 또는 패스 스루패스 스루 부하 분산기를 선택하고 다음을 클릭합니다.
  5. 공개 또는 내부공개(외부)를 선택하고 다음을 클릭합니다.
  6. 구성을 클릭합니다.

백엔드 구성

  1. 외부 패스 스루 네트워크 부하 분산기 만들기 페이지에서 새 부하 분산기에 대해 network-lb-zonal-neg 이름을 입력합니다.
  2. 리전에서 us-west1을 선택합니다.
  3. 백엔드 유형영역별 네트워크 엔드포인트 그룹을 선택합니다.
  4. 백엔드 구성을 클릭합니다. 이전에 입력한 부하 분산기 이름이 나타나지만 수정할 수 없습니다.
  5. 백엔드 구성 페이지에서 다음과 같이 변경하세요.
    1. 네트워크 엔드포인트 그룹 목록에서 neg-a를 선택한 후 완료를 클릭합니다.
    2. 백엔드 추가를 클릭하고 이전 단계를 반복하여 neg-c를 추가합니다.
    3. 상태 점검에서 상태 점검 만들기 또는 다른 상태 점검 만들기를 선택한 후 다음 정보를 입력합니다.
      • 이름: tcp-health-check
      • 프로토콜: TCP
      • 포트: 80
    4. 저장을 클릭합니다.
  6. 계속하기 전에 백엔드 구성 옆에 파란색 체크표시가 있는지 확인합니다.

프런트엔드 구성

  1. 프런트엔드 구성을 클릭합니다.
  2. 이름netlb-forwarding-rule를 입력합니다.
  3. IPv4 트래픽을 처리하려면 다음 단계를 따르세요.
    1. IP 버전에서 IPv4를 선택합니다.
    2. IP 주소에서 드롭다운 메뉴를 클릭하고 IP 주소 만들기를 선택합니다.
      1. 새 고정 IP 주소 예약 페이지에서 이름netlb-ipv4-address을 입력합니다.
      2. 예약을 클릭합니다.
    3. 포트에 대해 단일을 선택합니다. 포트 번호80을 입력합니다.
    4. 완료를 클릭합니다.
  4. IPv6 트래픽을 처리하려면 다음 단계를 따르세요.

    1. IP 버전에서 IPv6을 선택합니다.
    2. 서브네트워크lb-subnet을 선택합니다.
    3. IPv6 범위의 경우 드롭다운 메뉴를 클릭하고 IP 주소 만들기를 선택합니다.
      1. 새 고정 IP 주소 예약 페이지에서 이름netlb-ipv6-address을 입력합니다.
      2. 예약을 클릭합니다.
    4. 포트에 대해 단일을 선택합니다. 포트 번호80을 입력합니다.
    5. 완료를 클릭합니다.

    프런트엔드 구성 왼쪽의 체크 표시가 있는 파란색 원은 설정이 완료되었음을 나타냅니다.

구성 검토

  1. 검토 및 완료를 클릭합니다.
  2. 부하 분산기 구성 설정을 검토합니다.
  3. 선택사항: 부하 분산기를 만드는 데 사용되는 REST API 요청을 보려면 상응하는 코드를 클릭합니다.
  4. 만들기를 클릭합니다.

    부하 분산 페이지의 새 부하 분산기에 대한 백엔드 열에 새 부하 분산기가 정상임을 나타내는 녹색 확인 표시가 나타납니다.

gcloud

  1. 정적 외부 IP 주소를 예약합니다.

    IPv4 트래픽의 경우: 부하 분산기의 고정 외부 IPv4 주소를 만듭니다.

    gcloud compute addresses create netlb-ipv4-address \
        --region=us-west1
    

    IPv6 트래픽의 경우: 부하 분산기의 고정 외부 IPv6 주소 범위를 만듭니다. 사용되는 서브넷은 외부 IPv6 범위를 갖는 이중 스택 서브넷이어야 합니다.

    gcloud compute addresses create netlb-ipv6-address \
        --region=us-west1 \
        --subnet=lb-subnet \
        --ip-version=IPV6 \
        --endpoint-type=NETLB
    
  2. TCP 상태 점검 만들기

    gcloud compute health-checks create tcp tcp-health-check \
        --region=us-west1 \
        --port=80
    
  3. 백엔드 서비스를 만듭니다.

    gcloud compute backend-services create networklb-backend-service \
        --protocol=TCP \
        --health-checks=tcp-health-check \
        --health-checks-region=us-west1 \
        --region=us-west1
    
  4. 2개의 영역 NEG neg-aneg-c를 백엔드 서비스에 전달합니다.

    gcloud compute backend-services add-backend networklb-backend-service \
        --region=us-west1 \
        --network-endpoint-group=neg-a \
        --network-endpoint-group-zone=us-west1-a
    
    gcloud compute backend-services add-backend networklb-backend-service \
        --region=us-west1 \
        --network-endpoint-group=neg-c \
        --network-endpoint-group-zone=us-west1-c
    
  5. IPv4 트래픽 또는 IPv6 트래픽 처리 여부에 따라 전달 규칙을 만듭니다. 두 가지 유형의 트래픽을 모두 처리하는 두 전달 규칙을 만듭니다.

    1. IPv4 트래픽의 경우: 수신되는 TCP 트래픽을 백엔드 서비스로 라우팅하는 전달 규칙을 만듭니다. 1단계에서 예약된 IPv4 주소를 부하 분산기의 고정 외부 IP 주소로 사용합니다.

      gcloud compute forwarding-rules create forwarding-rule-ipv4 \
        --load-balancing-scheme=EXTERNAL \
        --region=us-west1 \
        --ports=80 \
        --address=netlb-ipv4-address \
        --backend-service=networklb-backend-service
      
    2. IPv6 트래픽의 경우: IPv6 트래픽을 처리하는 전달 규칙을 만듭니다. 1단계에서 예약된 IPv6 주소 범위를 부하 분산기의 고정 외부 IP 주소로 사용합니다. 사용되는 서브넷은 외부 IPv6 서브넷 범위를 갖는 이중 스택 서브넷이어야 합니다.

      gcloud compute forwarding-rules create forwarding-rule-ipv6 \
          --load-balancing-scheme=EXTERNAL \
          --region=us-west1 \
          --network-tier=PREMIUM \
          --ip-version=IPV6 \
          --subnet=lb-subnet \
          --address=netlb-ipv6-address \
          --ports=80 \
          --backend-service=networklb-backend-service
      

부하 분산기 테스트

부하 분산 서비스를 구성했으므로 이제 부하 분산기의 외부 IP 주소로 트래픽을 전송할 수 있으며 트래픽이 백엔드 인스턴스로 분산되는 것을 볼 수 있습니다.

부하 분산기의 외부 IP 주소 조회

콘솔

  1. 고급 부하 분산 페이지에서 전달 규칙 탭으로 이동합니다.

    전달 규칙으로 이동

  2. 부하 분산기에서 사용하는 전달 규칙을 찾습니다.

  3. 주소 열에서 나열된 외부 IP 주소를 확인합니다.

gcloud: IPv4

부하 분산기에서 사용하는 network-lb-forwarding-rule 전달 규칙의 외부 IPv4 주소를 확인하려면 다음 명령어를 입력합니다.

gcloud compute forwarding-rules describe forwarding-rule-ipv4 \
    --region=us-west1

gcloud: IPv6

부하 분산기에서 사용하는 network-lb-forwarding-rule 전달 규칙의 외부 IPv6 주소를 확인하려면 다음 명령어를 입력합니다.

gcloud compute forwarding-rules describe forwarding-rule-ipv6 \
    --region=us-west1

부하 분산기로 트래픽 전송

curl을 사용하여 부하 분산기에 웹 요청을 만들어 IP 주소에 연결합니다.

  • IPv4 연결이 설정된 클라이언트에서 다음 명령어를 실행합니다.

    $ while true; do curl -m1 IPV4_ADDRESS; done
    
  • IPv6 연결이 설정된 클라이언트에서 다음 명령어를 실행합니다.

    $ while true; do curl -m1 http://IPV6_ADDRESS; done
    

    예를 들어 할당된 IPv6 주소가 [2001:db8:1:1:1:1:1:1/96]:80이면 명령어는 다음과 같습니다.

    $ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:80; done
    

curl 명령어에서 반환된 텍스트를 확인합니다. 응답을 생성하는 백엔드 VM의 이름은 해당 텍스트에 표시됩니다(예: Page served from: VM_NAME).

curl 명령어는 백엔드 인스턴스에서 무작위로 응답합니다. 처음에 응답이 성공하지 못하면 구성이 완전히 로드되고 인스턴스가 정상으로 표시될 때까지 30초 정도 기다린 다음 다시 시도합니다.

추가 구성 옵션

외부 패스 스루 네트워크 부하 분산기를 추가로 맞춤설정하려면 세션 어피니티 및 트래픽 조정을 구성하고 장애 조치 정책 또는 연결 추적 정책을 설정할 수 있습니다. 이러한 태스크는 선택사항이며 원하는 순서대로 수행할 수 있습니다. 자세한 내용은 추가 구성 옵션을 참조하세요.

BYOIP로 IPv6 전달 규칙 만들기

이전 단계에서 만든 부하 분산기는 IP versionIPv4 또는 IPv6인 전달 규칙으로 구성되었습니다. 이 섹션에서는 자체 IP 주소 사용(BYOIP)으로 IPv6 전달 규칙을 만드는 방법을 설명합니다.

자체 IP 주소 사용을 통해 Google Cloud 리소스에 자체 공개 IPv6 주소를 프로비저닝하고 사용할 수 있습니다. 자세한 내용은 자체 IP 주소 사용을 참조하세요.

BYOIP 주소로 IPv6 전달 규칙을 구성하려면 먼저 다음 단계를 완료해야 합니다.

  1. 공개 공지 IPv6 프리픽스 만들기
  2. 공개 위임 프리픽스 만들기
  3. IPv6 하위 프리픽스 만들기
  4. 프리픽스 알림

새 전달 규칙을 만들려면 다음 단계를 수행합니다.

Console

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

    부하 분산으로 이동

  2. 수정할 부하 분산기의 이름을 클릭합니다.
  3. 수정을 클릭합니다.
  4. 프런트엔드 구성을 클릭합니다.
  5. 프런트엔드 IP 및 포트 추가를 클릭합니다.
  6. 새 프런트엔드 IP 및 포트 섹션에서 다음을 지정합니다.
    1. 프로토콜TCP입니다.
    2. IP 버전 필드에서 IPv6를 선택합니다.
    3. IPv6 범위의 소스 필드에서 BYOIP를 선택합니다.
    4. IP 집합 목록에서 전달 규칙 옵션을 사용 설정하여 이전 단계에서 만든 하위 프리픽스를 선택합니다.
    5. IPv6 범위 필드에 IPv6 주소 범위를 입력합니다. IPv6 주소 범위는 IPv6 하위 프리픽스 사양을 준수해야 합니다.
    6. 포트 필드에 포트 번호를 입력합니다.
    7. 완료를 클릭합니다.
  7. 업데이트를 클릭합니다.

Google Cloud CLI

gcloud compute forwarding-rules create 명령어를 사용하여 전달 규칙을 만듭니다.

gcloud compute forwarding-rules create FWD_RULE_NAME \
    --load-balancing-scheme EXTERNAL \
    --ip-protocol PROTOCOL \
    --ports ALL \
    --ip-version IPV6 \
    --region REGION_A \
    --address IPV6_CIDR_RANGE  \
    --backend-service BACKEND_SERVICE \
    --ip-collection PDP_NAME

다음을 바꿉니다.

  • FWD_RULE_NAME: 전달 규칙의 이름입니다.
  • PROTOCOL: 전달 규칙의 IP 프로토콜입니다. 기본값은 TCP입니다. IP 프로토콜은 TCP, UDP, L3_DEFAULT 중 하나일 수 있습니다.
  • REGION_A: 전달 규칙의 리전입니다.
  • IPV6_CIDR_RANGE: 전달 규칙에서 제공하는 IPv6 주소 범위. IPv6 주소 범위는 IPv6 하위 프리픽스 사양을 준수해야 합니다.
  • BACKEND_SERVICE: 백엔드 서비스 이름
  • PDP_NAME: 공개 위임 프리픽스 이름. PDP는 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 모드의 하위 프리픽스여야 합니다.

다음 단계