네트워크 부하 분산기를 대상 풀에서 백엔드 서비스로 전환

이 가이드에서는 기존 네트워크 부하 분산기를 대상 풀 백엔드에서 리전 백엔드 서비스로 전환하는 방법을 안내합니다.

리전 백엔드 서비스로 전환하면 레거시가 아닌 상태 확인(TCP, SSL, HTTP, HTTPS, HTTP/2), 관리형 인스턴스 그룹, 연결 드레이닝, 장애 조치 정책 등의 기능을 활용할 수 있습니다.

이 가이드에서는 다음 샘플 대상 풀 기반 네트워크 부하 분산기를 리전 백엔드 서비스를 대신 사용하도록 전환하는 방법을 안내합니다.

대상 풀이 있는 네트워크 부하 분산기
실행 전: 대상 풀이 있는 네트워크 부하 분산

실행 후 백엔드 서비스 기반 네트워크 부하 분산기 배포는 다음과 같습니다.

리전별 백엔드 서비스가 있는 네트워크 부하 분산기
실행 후: 리전 백엔드 서비스가 있는 네트워크 부하 분산

이 예시에서는 us-central-1a 영역에 2개의 인스턴스가 있고 us-central-1c 영역에 2개의 인스턴스가 있는 기존 대상 풀 기반 네트워크 부하 분산기가 있다고 가정합니다.

이러한 전환에 필요한 대략적인 단계는 다음과 같습니다.

  1. 대상 풀 인스턴스를 인스턴스 그룹으로 분류합니다.
    백엔드 서비스는 관리형 또는 비관리형 인스턴스 그룹에서만 작동합니다. 단일 대상 풀에 배치할 수 있는 인스턴스 수에는 제한이 없지만 인스턴스 그룹에는 최대 크기가 있습니다. 대상 풀이 이 최대 인스턴스 수를 초과하는 경우 백엔드를 여러 인스턴스 그룹으로 분할해야 합니다.
    기존 배포에 백업 대상 풀이 포함되어 있는 경우 해당 인스턴스에 대해 별도의 인스턴스 그룹을 만듭니다. 이 인스턴스 그룹은 장애 조치 그룹으로 구성됩니다.
  2. 지역별 백엔드 서비스 만들기
    배포에 백업 대상 풀이 포함되어 있으면 백엔드 서비스를 만드는 동안 장애 조치 비율을 지정해야 합니다. 이는 대상 풀 배포에 구성된 장애 조치율과 일치해야 합니다.
  3. 이전에 만든 인스턴스 그룹을 백엔드 서비스에 추가
    배포에 백업 대상 풀이 포함된 경우 해당 장애 조치 인스턴스 그룹을 백엔드 서비스에 추가할 때 --failover 플래그로 표시합니다.
  4. 새 백엔드 서비스를 가리키는 전달 규칙 구성
    다음과 같은 2가지 옵션이 있습니다.
    • (권장) 기존 전달 규칙이 백엔드 서비스를 가리키도록 업데이트합니다.
      또는
    • 백엔드 서비스를 가리키는 새 전달을 만듭니다. 부하 분산기의 프런트엔드에 사용할 새 IP 주소를 만들어야 합니다. 그런 다음 이전 대상 풀 기반 부하 분산기의 IP 주소에서 새 IP 주소로 원활하게 전환되도록 DNS 설정을 수정합니다.

시작하기 전에

gcloud 명령줄 도구를 설치합니다. 이 도구에 관한 개요는 gcloud 도구 가이드를 참조하세요. 부하 분산 관련 명령어는 gcloud compute 명령어 그룹에서 확인할 수 있습니다.

이전에 gcloud 명령줄 도구를 실행하지 않았으면 먼저 gcloud init를 실행하여 인증합니다.

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

영역별 비관리형 인스턴스 그룹 만들기

백엔드가 있는 각 영역에 영역별 비관리형 인스턴스 그룹을 만듭니다. 설정에 따라 인스턴스를 필요한 수만큼 여러 인스턴스 그룹으로 나눌 수 있습니다. 이 예시에서는 영역마다 하나씩 2개의 인스턴스 그룹만 사용하고 모든 백엔드 VM을 연결된 인스턴스 그룹의 지정된 영역에 배치합니다.

이 예시에서는 인스턴스 그룹을 uc-central1-a 영역에 1개, us-central1-c 영역 1개, 총 두 개를 만듭니다.

인스턴스 그룹 설정

Cloud Console

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

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

  2. 인스턴스 그룹 만들기를 클릭합니다.
  3. 왼쪽에서 새 비관리형 인스턴스 그룹을 선택합니다.
  4. 이름ig-us-1를 입력합니다.
  5. 위치에서 단일 영역을 선택합니다.
  6. 리전으로 us-central1을 선택합니다.
  7. 영역으로 us-central1-a를 선택합니다.
  8. 인스턴스가 있는 위치에 따라 네트워크서브네트워크를 선택합니다. 이 예시에서는 기존 대상 풀 인스턴스가 default 네트워크와 서브네트워크에 있습니다.
  9. VM 인스턴스에서 이 인스턴스 그룹에 추가할 두 인스턴스를 선택합니다.
  10. 만들기를 클릭합니다.
  11. 다음 단계를 반복하여 다음 사양으로 두 번째 인스턴스 그룹을 만듭니다.
    • 이름: ig-us-2
    • 리전: us-central1
    • 영역: us-central1-c us-central1-c 영역에 있는 2개의 인스턴스를 이 인스턴스 그룹에 추가합니다.

gcloud

  1. gcloud compute instance-groups unmanaged create 명령어를 사용하여 us-central1-a 영역에 비관리형 인스턴스 그룹을 만듭니다.

    gcloud compute instance-groups unmanaged create ig-us-1 \
        --zone us-central1-a
    
  2. us-central1-c 영역에서 두 번째 관리형 인스턴스 그룹을 만듭니다.

    gcloud compute instance-groups unmanaged create ig-us-2 \
        --zone us-central1-c
    
  3. us-ig-1 인스턴스 그룹에 인스턴스를 추가합니다.

    gcloud compute instance-groups unmanaged add-instances us-ig-1 \
        --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \
        --zone us-central1-a
    
  4. us-ig-2 인스턴스 그룹에 인스턴스를 추가합니다.

    gcloud compute instance-groups unmanaged add-instances us-ig-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    

기존 부하 분산기 배포에 백업 대상 풀도 있으면 이 단계를 반복하여 해당 인스턴스에 대한 별도의 장애 조치 인스턴스 그룹을 만듭니다.

상태 확인 만들기

상태 확인을 만들어 인스턴스 그룹의 인스턴스 상태를 확인합니다. 기존 대상 풀 기반 네트워크 부하 분산기에는 레거시 HTTP 상태 확인이 연결될 수 있습니다.

부하 분산기가 분배할 트래픽의 프로토콜과 일치하는 새 상태 확인을 만들 수 있습니다. 백엔드 서비스 기반 네트워크 부하 분산기는 TCP, SSL, HTTP(S), HTTP/2 상태 확인을 사용할 수 있습니다.

Console

  1. Cloud Console의 상태 확인 페이지로 이동합니다.

    상태 확인 페이지로 이동

  2. 이름을 입력합니다.
  3. 범위리전으로 설정합니다.
  4. 리전으로 us-central1을 선택합니다.
  5. 프로토콜HTTP를 선택합니다.
  6. 포트80을 입력합니다.
  7. 만들기를 클릭합니다.

gcloud

  1. 이 예시에서는 백엔드 서비스와 함께 사용할 레거시가 아닌 HTTP 상태 확인을 만듭니다.

    gcloud compute health-checks create http http-health-check \
    --region us-central1 \
    --port 80
    

백엔드 서비스 구성

다음 섹션 중 하나를 사용하여 백엔드 서비스를 만듭니다. 기존 네트워크 부하 분산기에 백업 대상 풀이 있으면 백엔드 서비스를 생성하는 동안 장애 조치율을 구성해야 합니다.

또한 백엔드 서비스에 백엔드를 추가할 때 --failover 플래그를 사용하여 장애 조치 인스턴스 그룹을 지정해야 합니다.

백업 대상 풀이 없는 배포

gcloud

  1. us-central1 리전에서 리전별 백엔드 서비스를 만듭니다.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-checks http-health-check \
       --health-checks-region us-central1 \
       --protocol TCP
    
  2. 두 인스턴스 그룹(us-ig-1us-ig-2)을 백엔드 서비스에 백엔드로 추가합니다.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    

백업 대상 풀이 있는 배포

gcloud

  1. us-central1 리전에서 리전별 백엔드 서비스를 만듭니다. 대상 풀에 이전에 구성된 장애 조치율과 일치하도록 백엔드 서비스 장애 조치율을 구성합니다.

    gcloud compute backend-services create network-lb-backend-service \
       --region us-central1 \
       --health-check http-health-check \
       --failover-ratio 0.5
    
  2. 두 인스턴스 그룹(us-ig-1us-ig-2)을 백엔드 서비스에 백엔드로 추가합니다.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group us-ig-2 \
       --instance-group-zone us-central1-c \
       --region us-central1
    
  3. 장애 조치 인스턴스 그룹을 만든 경우 백엔드 서비스에 추가합니다. 이 백엔드를 백엔드 서비스에 추가할 때 --failover 플래그로 표시합니다.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group FAILOVER_INSTANCE_GROUP \
       --instance-group-zone ZONE \
       --region us-central1 \
       --failover
    

전달 규칙 구성

새로운 백엔드 서비스로 트래픽을 전달하는 전달 규칙을 구성하는 옵션은 두 가지가 있습니다. 기존 전달 규칙을 업데이트하거나 새 IP 주소로 새 전달 규칙을 만들 수 있습니다.

기존 전달 규칙이 새 백엔드 서비스를 가리키도록 업데이트하려면 set-target 플래그를 사용합니다.

gcloud compute forwarding-rules set-target network-lb-forwarding-rule  \
    --backend-service network-lb-backend-service \
    --region us-central1

새 전달 규칙 만들기

기존 전달 규칙을 업데이트하지 않으려면 새 IP 주소로 새 전달 규칙을 만들 수 있습니다. 지정된 IP 주소에는 한 번에 하나의 전달 규칙만 연결할 수 있으므로 수신 트래픽을 이전 IP 주소에서 새 IP 주소로 전환하려면 DNS 설정을 수동으로 수정해야 합니다.

다음 명령어를 사용하여 새 IP 주소로 새 전달 규칙을 만듭니다. us-central1 리전에 이미 예약된 IP 주소를 지정하려면 --address 플래그를 사용할 수 있습니다.

gcloud compute forwarding-rules create network-lb-forwarding-rule \
    --load-balancing-scheme external \
    --region us-central1 \
    --ports 80 \
    --backend-service network-lb-backend-service

부하 분산기 테스트

부하 분산기를 테스트하여 전달 규칙이 예상대로 수신 트래픽을 전달하는지 확인합니다.

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

gcloud

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

gcloud compute forwarding-rules describe network-lb-forwarding-rule
    --region us-central1

nc 명령어를 사용하여 외부 IP 주소에 액세스합니다.

이 예시에서는 세션 어피니티에 기본 해싱 방법을 사용했습니다. 따라서 운영체제에서 할당한 소스 포트에 따라 nc 명령어의 요청이 백엔드 VM에 무작위로 배포됩니다.

모든 백엔드 VM 응답이 나타날 때까지 명령어를 몇 번 반복합니다.

$ nc IP_ADDRESS 80

이전 부하 분산기와 연결된 리소스 삭제

새 네트워크 부하 분산기가 예상대로 작동하는지 확인한 후 이전 대상 풀 리소스 및 이전 전달 규칙을 삭제할 수 있습니다(해당되는 경우).

다음 단계