VM 인스턴스 그룹 백엔드가 있는 전역 외부 애플리케이션 부하 분산기 설정

이 설정 가이드에서는 Compute Engine 관리형 인스턴스 그룹 백엔드가 있는 전역 외부 애플리케이션 부하 분산기를 만드는 방법을 설명합니다.

일반적인 개념은 외부 애플리케이션 부하 분산기 개요를 참조하세요.

기존 애플리케이션 부하 분산기를 사용하는 경우 전역 외부 애플리케이션 부하 분산기를 사용하여 새 배포를 계획할 때 이전 개요를 검토하세요.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


부하 분산기 토폴로지

HTTPS 부하 분산기의 경우 다음 다이어그램에 표시된 구성을 만듭니다.

관리형 인스턴스 그룹(MIG) 백엔드가 있는 외부 애플리케이션 부하 분산기
그림 1. 관리형 인스턴스 그룹(MIG) 백엔드가 있는 외부 애플리케이션 부하 분산기(확대하려면 클릭)

HTTP 부하 분산기의 경우 다음 다이어그램에 표시된 구성을 만듭니다.

관리형 인스턴스 그룹(MIG) 백엔드가 있는 외부 애플리케이션 부하 분산기
그림 2. 관리형 인스턴스 그룹(MIG) 백엔드가 있는 외부 애플리케이션 부하 분산기(확대하려면 클릭)

다이어그램의 이벤트 순서는 다음과 같습니다.

  1. 클라이언트가 전달 규칙에 정의된 외부 IPv4 주소로 콘텐츠 요청을 보냅니다.
  2. HTTPS 부하 분산기의 경우 전달 규칙은 요청을 대상 HTTPS 프록시로 전달합니다.

    HTTP 부하 분산기의 경우 전달 규칙은 요청을대상 HTTP 프록시로 전달합니다.

  3. 대상 프록시는 URL 맵의 규칙을 사용하여 단일 백엔드 서비스가 모든 요청을 수신하는지 확인합니다.

  4. 부하 분산기는 백엔드 서비스에 인스턴스 그룹이 하나만 있는지 확인하고 해당 그룹의 가상 머신(VM)으로 요청을 전달합니다.

  5. VM은 사용자가 요청한 콘텐츠를 제공합니다.

시작하기 전에

부하 분산기를 만들려면 먼저 다음 단계를 완료하세요.

SSL 인증서 리소스 설정

HTTPS 부하 분산기의 경우 다음에 설명된 대로 SSL 인증서 리소스를 만듭니다.

Google 관리형 인증서를 사용하는 것이 좋습니다.

이 예시에서는 이름이 www-ssl-cert인 SSL 인증서 리소스가 이미 있다고 가정합니다.

권한 설정

이 가이드의 단계를 수행하려면 프로젝트에서 Compute Engine 인스턴스, 방화벽 규칙, 예약된 IP 주소를 만들 수 있는 권한이 있어야 합니다. 프로젝트 소유자 또는 편집자 역할이 있거나 다음과 같은 Compute Engine IAM 역할이 있어야 합니다.

작업 필요한 역할
인스턴스 만들기 인스턴스 관리자
방화벽 규칙 추가 및 삭제 보안 관리자
부하 분산기 구성요소 만들기 네트워크 관리자
프로젝트 만들기(선택사항) 프로젝트 생성자

자세한 내용은 다음 가이드를 참조하세요.

네트워크 및 서브넷 구성

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

콘솔

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

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

    VPC 네트워크로 이동

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

  3. 네트워크의 이름을 입력합니다.

  4. 선택사항: 이 네트워크에서 서브넷에 내부 IPv6 주소 범위를 구성하려면 다음 단계를 완료합니다.

    1. VPC 네트워크 ULA 내부 IPv6 범위에서 사용 설정됨을 선택합니다.
    2. 내부 IPv6 범위 할당에 대해 자동 또는 수동을 선택합니다.

      수동을 선택한 경우 fd20::/20 범위 내에서 /48 범위를 입력합니다. 범위가 사용 중인 경우 다른 범위를 제공하라는 메시지가 표시됩니다.

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

  6. 새 서브넷 섹션에서 다음 필드를 구성합니다.

    1. 이름 필드에 서브넷 이름을 입력합니다.
    2. 리전 필드에서 리전을 선택합니다.
    3. IP 스택 유형IPv4 및 IPv6(이중 스택)을 선택합니다.
    4. IP 주소 범위 필드에 IP 주소 범위를 입력합니다. 이 범위는 서브넷의 기본 IPv4 범위입니다.

      서브넷의 IPv4 주소 범위를 구성할 수 있지만 서브넷의 IPv6 주소 범위를 선택할 수는 없습니다. Google은 고정된 크기(/64)의 IPv6 CIDR 블록을 제공합니다.

    5. IPv6 액세스 유형에서 외부를 선택합니다.

  7. 완료를 클릭합니다.

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

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

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

    VPC 네트워크로 이동

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

  3. 이름 필드에 네트워크의 이름을 입력합니다.

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

  5. 새 서브넷 섹션에서 다음을 구성합니다.

    1. 이름 필드에 서브넷 이름을 입력합니다.
    2. 리전 필드에서 리전을 선택합니다.
    3. IP 스택 유형IPv4(단일 스택)를 선택합니다.
    4. IP 주소 범위 필드에 서브넷의 기본 IPv4 범위를 입력합니다.
  6. 완료를 클릭합니다.

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

gcloud

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

    gcloud compute networks create NETWORK \
        [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
        --switch-to-custom-subnet-mode
    
  2. 네트워크 내에서 백엔드용 서브넷을 만듭니다.

    IPv4 및 IPv6 트래픽의 경우 다음 명령어를 사용하여 서브넷을 업데이트합니다.

    gcloud compute networks subnets create SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_A
    

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

    gcloud compute networks subnets create SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

다음을 바꿉니다.

  • NETWORK: VPC 네트워크의 이름입니다.

  • ULA_IPV6_RANGE: 내부 IPv6 서브넷 범위에 대해 Google에서 사용하는 fd20::/20 범위 내의 /48 프리픽스입니다. --internal-ipv6-range 플래그를 사용하지 않으면 Google은 네트워크의 /48 프리픽스를 선택합니다.

  • SUBNET: 서브넷의 이름입니다.

  • REGION_A: 리전의 이름입니다.

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

Compute Engine 백엔드로 부하 분산기를 설정하려면 VM이 인스턴스 그룹에 있어야 합니다. 이 가이드에서는 Apache가 실행 중인 Linux VM을 사용하여 관리형 인스턴스 그룹을 만들고 부하 분산을 설정하는 방법을 설명합니다. 관리형 인스턴스 그룹은 지정된 인스턴스 템플릿을 기반으로 각 관리형 인스턴스를 만듭니다.

관리형 인스턴스 그룹은 외부 HTTP(S) 부하 분산기의 백엔드 서버를 실행하는 VM을 제공합니다. 여기에서는 백엔드에서 데모용으로 자체 호스트 이름을 제공합니다.

관리형 인스턴스 그룹을 만들기 전에 인스턴스 템플릿을 만듭니다.

콘솔

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

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

    인스턴스 템플릿으로 이동

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

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

  4. 리전 목록에서 리전을 선택합니다.

  5. 부팅 디스크가 Debian GNU/Linux 10(buster)과 같은 Debian 이미지로 설정되었는지 확인합니다. 이 안내에서는 apt-get처럼 Debian에서만 사용할 수 있는 명령어를 사용합니다.

  6. 고급 옵션을 펼칩니다.

  7. 네트워킹을 펼치고 다음 필드를 구성합니다.

    1. 네트워크 태그allow-health-check,allow-health-check-ipv6을 입력합니다.
    2. 네트워크 인터페이스 섹션에서 수정을 클릭하고 다음 필드를 구성합니다.
      • 네트워크: NETWORK
      • 서브넷: SUBNET
      • IP 스택 유형: IPv4 및 IPv6(이중 스택)
    3. 완료를 클릭합니다.
  8. 관리를 펼칩니다. 시작 스크립트 필드에 다음 스크립트를 입력합니다.

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

gcloud

IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 명령어를 실행하세요.

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPv4_IPv6 \
  --tags=allow-health-check,allow-health-check-ipv6 \
  --image-family=debian-10 \
  --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'

Terraform

인스턴스 템플릿을 만들려면 google_compute_instance_template 리소스를 사용합니다.

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

관리형 인스턴스 그룹을 만들고 인스턴스 템플릿을 선택합니다.

콘솔

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

    인스턴스 그룹으로 이동

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

  3. 왼쪽에서 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다.

  4. 이름lb-backend-example를 입력합니다.

  5. 위치에서 단일 영역을 선택합니다.

  6. 리전에서 원하는 리전을 선택합니다.

  7. 영역에서 영역을 선택합니다.

  8. 인스턴스 템플릿에서 인스턴스 템플릿 lb-backend-template을 선택합니다.

  9. 자동 확장 모드에서 사용: 그룹에 인스턴스 추가 및 삭제를 선택합니다.

    최소 인스턴스 수2로, 최대 인스턴스 수2 이상으로 설정합니다.

  10. 새 인스턴스 그룹을 만들려면 만들기를 클릭합니다.

gcloud

  1. 템플릿을 기반으로 관리형 인스턴스 그룹을 만듭니다.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
    

Terraform

관리형 인스턴스 그룹을 만들려면 google_compute_instance_group_manager 리소스를 사용합니다.

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

인스턴스 그룹에 이름이 지정된 포트 추가

인스턴스 그룹에 HTTP 서비스를 정의하고 해당 포트에 포트 이름을 매핑합니다. 부하 분산 서비스가 이름이 지정된 포트로 트래픽을 전달합니다. 자세한 내용은 이름이 지정된 포트를 참조하세요.

콘솔

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

    인스턴스 그룹으로 이동

  2. lb-backend-example을 클릭합니다.

  3. 인스턴스 그룹의 개요 페이지에서 수정을 클릭합니다.

  4. 포트 매핑 섹션에서 포트 추가를 클릭합니다.

    1. 포트 이름으로 http를 입력합니다. 포트 번호로 80을 입력합니다.
  5. 저장을 클릭합니다.

gcloud

gcloud compute instance-groups set-named-ports 명령어를 사용합니다.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone ZONE_A

Terraform

named_port 속성은 관리형 인스턴스 그룹 샘플에 포함되어 있습니다.

방화벽 규칙 구성

이 예시에서는 fw-allow-health-check 방화벽 규칙을 만듭니다. Google Cloud 상태 점검 시스템(130.211.0.0/2235.191.0.0/16)의 트래픽을 허용하는 인그레스 규칙입니다. 이 예시에서는 대상 태그 allow-health-check를 사용하여 VM을 식별합니다.

콘솔

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

    방화벽 정책으로 이동

  2. 방화벽 규칙 만들기를 클릭하여 방화벽 규칙을 만듭니다.

  3. 이름fw-allow-health-check을 입력합니다.

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

  5. 대상에서 지정된 대상 태그를 선택합니다.

  6. allow-health-check대상 태그 필드를 채웁니다.

  7. 소스 필터IPv4 범위로 설정합니다.

  8. 소스 IPv4 범위130.211.0.0/2235.191.0.0/16으로 설정합니다.

  9. 프로토콜 및 포트에서 지정된 프로토콜 및 포트를 선택합니다.

  10. tcp 체크박스를 선택한 다음 포트 번호로 80을 입력합니다.

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

gcloud

gcloud compute firewall-rules create fw-allow-health-check \
    --network=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Terraform

방화벽 규칙을 만들려면 google_compute_firewall 리소스를 사용합니다.

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

IPv6 상태 점검 방화벽 규칙 만들기

부하 분산 중인 인스턴스에 적용할 수 있고 Google Cloud 상태 점검 시스템(2600:2d00:1:b029::/64)의 트래픽을 허용하는 인그레스 규칙이 있는지 확인합니다. 이 예시에서는 대상 태그 allow-health-check-ipv6를 사용하여 방화벽 규칙이 적용되는 VM 인스턴스를 식별합니다.

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

콘솔

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

    방화벽 정책으로 이동

  2. IPv6 서브넷 트래픽을 허용하려면 방화벽 규칙 만들기를 다시 클릭하고 다음 정보를 입력합니다.

    • 이름: fw-allow-lb-access-ipv6
    • 네트워크: NETWORK
    • 우선순위: 1000
    • 트래픽 방향: 인그레스
    • 대상: 지정된 대상 태그
    • 대상 태그 필드에 allow-health-check-ipv6을 입력합니다.
    • 소스 필터: IPv6 범위
    • 소스 IPv6 범위: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • 프로토콜 및 포트: 모두 허용
  3. 만들기를 클릭합니다.

gcloud

서브넷과의 통신을 허용하려면 fw-allow-lb-access-ipv6 방화벽 규칙을 만듭니다.

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

외부 IP 주소 예약

인스턴스가 준비되어 실행 중이므로 고객이 부하 분산기에 연결하는 데 사용하는 전역 고정 외부 IP 주소를 설정합니다.

콘솔

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

    외부 IP 주소로 이동

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

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

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

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

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

  7. 예약을 클릭합니다.

gcloud

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global

예약된 IPv4 주소를 확인합니다.

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Terraform

IP 주소를 예약하려면 google_compute_global_address 리소스를 사용합니다.

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

부하 분산기 설정

이 예시에서는 클라이언트와 부하 분산기 간에 HTTPS(프런트엔드)를 사용합니다. HTTPS의 경우 프록시를 구성하려면 하나 이상의 SSL 인증서 리소스가 필요합니다. Google 관리형 인증서를 사용하는 것이 좋습니다.

프런트엔드에서 HTTPS를 사용하는 경우에도 백엔드에서 HTTP를 사용할 수 있습니다. Google은 Google Cloud VPC 네트워크 내에 있는 Google 프런트엔드(GFE)와 백엔드 간의 트래픽을 자동으로 암호화합니다.

콘솔

구성 시작

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

    부하 분산으로 이동

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

기본 구성

부하 분산기 이름web-map-https 또는 web-map-http를 입력합니다.

프런트엔드 구성

  1. 프런트엔드 구성을 클릭합니다.
  2. 프로토콜HTTPS로 설정합니다.
  3. IPv4 트래픽에 IPv4를 선택합니다. IP 주소를 이전에 만든 lb-ipv4-1로 설정합니다.
  4. 포트443으로 설정합니다.
  5. 인증서를 클릭하고 기본 SSL 인증서를 선택합니다.
  6. 선택사항: SSL 정책을 만듭니다.
    1. SSL 정책 목록에서 정책 만들기를 선택합니다.
    2. SSL 정책 이름을 my-ssl-policy로 설정합니다.
    3. 최소 TLS 버전TLS 1.0을 선택합니다.
    4. 프로필최신을 선택합니다. 사용 설정된 기능사용 중지된 기능이 표시됩니다.
    5. 저장을 클릭합니다.
    SSL 정책을 만들지 않으면 기본 SSL 정책이 적용됩니다.
  7. 선택사항: HTTP-HTTPS 간 리디렉션 사용 설정 체크박스를 선택하여 리디렉션을 사용 설정합니다.

    이 체크박스를 사용 설정하면 HTTPS 부하 분산기와 동일한 IP 주소를 사용하는 추가적인 부분 HTTP 부하 분산기를 만들고 수신되는 HTTP 요청을 부하 분산기의 HTTPS 프런트엔드로 리디렉션합니다.

    이 체크박스는 HTTPS 프로토콜이 선택되었고 예약된 IP 주소가 사용될 때만 선택할 수 있습니다.

  8. 완료를 클릭합니다.

백엔드 구성

  1. 백엔드 구성을 클릭합니다.
  2. 백엔드 서비스 및 백엔드 버킷 만들기 또는 선택에서 백엔드 서비스 > 백엔드 서비스 만들기를 선택합니다.
  3. 백엔드 서비스 이름(예: web-backend-service)을 추가합니다.
  4. IP 주소 선택 정책 목록에서 IPv6 우선 사용을 선택합니다.
  5. 프로토콜에서 HTTP를 선택합니다.
  6. 이름이 지정된 포트http를 입력합니다.
  7. 백엔드 > 새 백엔드 > 인스턴스 그룹에서 인스턴스 그룹인 lb-backend-example을 선택합니다.
  8. 포트 번호80을 입력합니다.
  9. 다른 기본 설정은 유지합니다.
  10. 상태 점검에서 상태 점검 만들기를 선택한 후 상태 점검 이름(예: http-basic-check)을 추가합니다.
  11. 프로토콜을 HTTP로 설정한 후 저장을 클릭합니다.
  12. 선택사항: 기본 백엔드 보안 정책을 구성합니다. 기본 보안 정책은 사용자가 구성한 기준점을 통해 트래픽을 제한합니다. 기본 보안 정책에 대한 자세한 내용은 비율 제한 개요를 참조하세요.

    1. Google Cloud Armor 기본 보안 정책을 선택 해제하려면 백엔드 보안 정책 목록 메뉴에서 None을 선택합니다.
    2. 보안 섹션에서 기본 보안 정책을 선택합니다.
    3. 정책 이름 필드에 자동으로 생성된 이름을 사용하거나 보안 정책 이름을 입력합니다.
    4. 요청 수 필드에서 기본 요청 수를 수락하거나 1~10,000 사이의 정수를 입력합니다.
    5. 간격 필드에서 간격을 선택합니다.
    6. 키에 적용 필드에서 모두, IP 주소, X-Forwarded-For IP 주소 값 중 하나를 선택합니다. 이러한 옵션에 대한 자세한 내용은 비율 제한을 위한 클라이언트 식별을 참조하세요.
  13. 다른 기본 설정은 유지합니다.
  14. 만들기를 클릭합니다.

라우팅 규칙

라우팅 규칙의 경우 기본 설정을 유지합니다.

검토 및 완료

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

부하 분산기가 생성될 때까지 기다립니다.

HTTPS 부하 분산기를 만들었고 HTTP-HTTPS 리디렉션 사용 설정 체크박스를 선택한 경우 -redirect 서픽스로 생성된 HTTP 부하 분산기도 표시됩니다.

  1. 부하 분산기 이름을 클릭합니다.
  2. 부하 분산기 세부정보 화면에서 부하 분산기의 IP:포트를 기록해 둡니다.

gcloud

  1. 상태 점검을 만듭니다.
     gcloud compute health-checks create http http-basic-check \
         --port 80
     
  2. 백엔드 서비스를 만듭니다.
    gcloud beta compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=http-basic-check \
        --global
    
  3. 백엔드 서비스에 인스턴스 그룹을 백엔드로 추가합니다.
    gcloud beta compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-example \
      --instance-group-zone=ZONE_A \
      --global
    
  4. HTTP의 경우 URL 맵을 만들어 수신 요청을 기본 백엔드 서비스로 라우팅합니다.
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. HTTPS의 경우 URL 맵을 만들어 수신 요청을 기본 백엔드 서비스로 라우팅합니다.
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

HTTPS 프런트엔드 설정

HTTP 부하 분산기의 경우 이 섹션을 건너뜁니다.

  1. HTTPS의 경우 아직 만들지 않았으면 다음 섹션과 같이 전역 SSL 인증서 리소스를 만듭니다.
  2. HTTPS의 경우 대상 HTTPS 프록시를 만들어 요청을 URL 맵에 라우팅합니다. 프록시는 HTTPS 부하 분산기의 SSL 인증서를 보유하는 부하 분산기의 일부이므로 이 단계에서 인증서도 로드합니다.

    gcloud beta compute target-https-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    

    HTTP_KEEP_ALIVE_TIMEOUT_SEC를 5~1,200초의 클라이언트 HTTP 연결 유지 제한 시간 값으로 바꿉니다. 기본값은 610초입니다. 이 필드는 선택사항입니다.

  3. HTTPS의 경우 전역 전달 규칙을 만들어 수신 요청을 프록시로 라우팅합니다.
    gcloud beta compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. 선택사항: HTTPS의 경우 전역 SSL 정책을 만들고 이를 HTTPS 프록시에 연결합니다.
    전역 SSL 정책을 만들려면 다음을 실행합니다.
    gcloud compute ssl-policies create my-ssl-policy \
      --profile MODERN \
      --min-tls-version 1.0
    
    전역 대상 HTTPS 프록시에 SSL 정책을 연결하려면 다음 안내를 따르세요.
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

HTTP 프런트엔드 설정

HTTPS 부하 분산기의 경우 이 섹션을 건너뜁니다.

  1. HTTP의 경우 대상 HTTP 프록시를 만들어 URL 맵에 요청을 라우팅합니다.
    gcloud beta compute target-http-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-http
    

    HTTP_KEEP_ALIVE_TIMEOUT_SEC를 5~1,200초의 클라이언트 HTTP 연결 유지 제한 시간 값으로 바꿉니다. 기본값은 610초입니다. 이 필드는 선택사항입니다.

  2. HTTP의 경우 전역 전달 규칙을 만들어 수신 요청을 프록시로 라우팅합니다.
    gcloud beta compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. 상태 점검을 만들려면 google_compute_health_check 리소스를 사용합니다.

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. 백엔드 서비스를 만들려면 google_compute_backend_service 리소스를 사용합니다.

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. URL 맵을 만들려면 google_compute_url_map 리소스를 사용합니다.

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. 대상 HTTP 프록시를 만들려면 google_compute_target_http_proxy 리소스를 사용합니다.

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. 전달 규칙을 만들려면 google_compute_global_forwarding_rule 리소스를 사용합니다.

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

부하 분산기에 도메인 연결

부하 분산기를 만든 후 부하 분산기와 연결된 IP 주소를 확인합니다(예: 30.90.80.100). 도메인이 부하 분산기를 가리키도록 하려면 도메인 등록 서비스를 사용하여 A 레코드를 만듭니다. SSL 인증서에 여러 도메인을 추가했다면 모두 부하 분산기의 IP 주소를 가리키는 A 레코드를 도메인마다 추가해야 합니다. 예를 들어 www.example.comexample.comA 레코드를 만들려면 다음을 사용합니다.

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Cloud DNS를 DNS 제공업체로 사용하는 경우 레코드 추가, 수정, 삭제를 참조하세요.

인스턴스로 전송되는 트래픽 테스트

부하 분산 서비스가 실행 중이므로 이제 전달 규칙으로 트래픽을 전송하고 다른 인스턴스로 분산되는 트래픽을 살펴볼 수 있습니다.

콘솔

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

    부하 분산으로 이동

  2. 앞에서 만든 부하 분산기를 클릭합니다.
  3. 백엔드 섹션에서 VM이 정상인지 확인합니다. 정상 열에 두 VM이 모두 정상으로 표시되어야 합니다(2/2). 그렇지 않으면 먼저 페이지를 새로고침해 보세요. Google Cloud 콘솔에서 VM이 정상인지 확인하는 데 몇 분 정도 걸릴 수 있습니다. 몇 분 후에도 백엔드가 정상으로 표시되지 않으면 방화벽 구성과 백엔드 VM에 할당된 네트워크 태그를 검토합니다.

  4. HTTPS의 경우 Google이 관리하는 인증서를 사용하는 경우 인증서 리소스의 상태가 ACTIVE인지 확인합니다. 자세한 내용은 Google 관리 SSL 인증서 리소스 상태를 참조하세요.
  5. Google Cloud 콘솔에서 백엔드 인스턴스가 정상임을 표시하면 https://IP_ADDRESS(또는 http://IP_ADDRESS)로 이동하여 웹브라우저를 사용해 부하 분산기를 테스트할 수 있습니다. IP_ADDRESS부하 분산기의 IP 주소로 바꿉니다.
  6. 자체 서명 인증서를 HTTPS 테스트에 사용하면 브라우저에 경고가 표시됩니다. 브라우저가 자체 서명 인증서를 수락하도록 명시적으로 지시해야 합니다.
  7. 브라우저는 페이지를 제공한 인스턴스의 이름과 영역을 표시하는 콘텐츠로 페이지에 렌더링해야 합니다(예: Page served from: lb-backend-example-xxxx). 브라우저에서 이 페이지를 렌더링하지 않는 경우 이 가이드의 구성 설정을 검토하세요.

gcloud

gcloud compute addresses describe lb-ipv4-1 \
   --format="get(address)" \
   --global

몇 분이 지난 후에 다음 curl 명령어를 실행하여 설정을 테스트할 수 있습니다.

curl http://IP_ADDRESS

-또는-

curl https://HOSTNAME

추가 구성

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

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

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

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

콘솔

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

    부하 분산으로 이동

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

gcloud

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

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

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

    gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

다음을 바꿉니다.

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

다음 단계

관련 문서:

관련 동영상: