대상 풀에서 백엔드 서비스로 외부 패스 스루 네트워크 부하 분산기 마이그레이션

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

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


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

둘러보기


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

이전: 대상 풀이 있는 외부 패스 스루 네트워크 부하 분산기
이전: 대상 풀이 있는 외부 패스 스루 네트워크 부하 분산기

결과적으로 생성되는 백엔드 서비스 기반 외부 패스 스루 네트워크 부하 분산기 배포는 다음과 같습니다.

이후: 리전 백엔드 서비스가 있는 외부 패스 스루 네트워크 부하 분산기
이후: 리전 백엔드 서비스가 있는 외부 패스 스루 네트워크 부하 분산기

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

이러한 마이그레이션에 필요한 대략적인 단계는 다음과 같습니다.

  1. 대상 풀 인스턴스를 인스턴스 그룹으로 분류

    백엔드 서비스는 관리형 또는 비관리형 인스턴스 그룹에서만 작동합니다. 단일 대상 풀에 배치할 수 있는 인스턴스 수에는 제한이 없지만 인스턴스 그룹에는 최대 크기가 있습니다. 대상 풀이 이 최대 인스턴스 수를 초과하는 경우 백엔드를 여러 인스턴스 그룹으로 분할해야 합니다.

    기존 배포에 백업 대상 풀이 포함되어 있는 경우 해당 인스턴스에 대해 별도의 인스턴스 그룹을 만듭니다. 이 인스턴스 그룹은 장애 조치 그룹으로 구성됩니다.

  2. 지역별 백엔드 서비스 만들기

    배포에 백업 대상 풀이 포함되어 있으면 백엔드 서비스를 만드는 동안 장애 조치 비율을 지정해야 합니다. 이는 대상 풀 배포에 구성된 장애 조치율과 일치해야 합니다.

  3. 이전에 만든 인스턴스 그룹을 백엔드 서비스에 추가

    배포에 백업 대상 풀이 포함된 경우 해당 장애 조치 인스턴스 그룹을 백엔드 서비스에 추가할 때 --failover 플래그로 표시하세요.

  4. 새 백엔드 서비스를 가리키는 전달 규칙 구성

    다음 옵션 중 하나를 선택할 수 있습니다.

    • 기존 전달 규칙이 백엔드 서비스를 가리키도록 업데이트합니다(권장).

    • 백엔드 서비스를 가리키는 새 전달 규칙을 만듭니다. 부하 분산기의 프런트엔드에 사용할 새 IP 주소를 만들어야 합니다. 그런 다음 이전 대상 풀 기반 부하 분산기의 IP 주소에서 새 IP 주소로 원활하게 마이그레이션되도록 DNS 설정을 수정합니다.

시작하기 전에

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

이전에 Google Cloud CLI를 실행한 적이 없다면 먼저 gcloud init를 실행하여 인증하세요.

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

마이그레이션할 백엔드 및 전달 규칙 식별

  1. 모든 대상 풀을 나열하려면 Cloud Shell에서 다음 명령어를 실행합니다.

    gcloud compute target-pools list
    

    마이그레이션할 대상 풀의 이름을 기록해 둡니다. 이 이름을 이후에 TARGET_POOL_NAME으로 참조합니다.

  2. 대상 풀 TARGET_POOL_NAME의 모든 VM 인스턴스를 나열하려면 Cloud Shell에서 다음 명령어를 실행합니다.

    gcloud compute target-pools describe TARGET_POOL_NAME \
      --region=us-central1
    

    VM 인스턴스의 이름을 기록합니다. 이 이름들은 이후에 BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3, BACKEND_INSTANCE4로 지칭됩니다.

  3. 외부 패스 스루 네트워크 부하 분산기의 전달 규칙을 나열하려면 Cloud Shell에서 다음 명령어를 실행합니다.

    gcloud compute forwarding-rules list
      --filter="target: ( TARGET_POOL_NAME )"
    

    전달 규칙의 이름을 기록해 둡니다. 이 이름을 이후에 FORWARDING_RULE로 참조합니다.

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

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

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

인스턴스 그룹 설정

콘솔

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

    인스턴스 그룹으로 이동

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

    • 이름: ig-us-2
    • 리전: us-central1
    • 영역: us-central1-c

    us-central1-c 영역에서 두 인스턴스 BACKEND_INSTANCE3BACKEND_INSTANCE4를 이 인스턴스 그룹에 추가합니다.

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

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. ig-us-1 인스턴스 그룹에 인스턴스를 추가합니다.

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

    gcloud compute instance-groups unmanaged add-instances ig-us-2 \
        --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \
        --zone us-central1-c
    
  5. 기존 부하 분산기 배포에 백업 대상 풀도 있으면 이 단계를 반복하여 해당 인스턴스에 대한 별도의 장애 조치 인스턴스 그룹을 만듭니다.

상태 점검 만들기

상태 점검을 만들어 인스턴스 그룹의 인스턴스 상태를 확인합니다. 기존 대상 풀 기반 외부 패스 스루 네트워크 부하 분산기에는 기존 HTTP 상태 점검이 연결될 가능성이 높습니다.

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

콘솔

  1. Google Cloud 콘솔에서 상태 점검 페이지로 이동합니다.

    상태 점검으로 이동

  2. 상태 점검 만들기를 클릭합니다.
  3. 이름 필드에 network-lb-health-check를 입력합니다.
  4. 범위리전으로 설정합니다.
  5. 리전에서 us-central1을 선택합니다.
  6. 프로토콜에서 HTTP를 선택합니다.
  7. 포트80을 입력합니다.
  8. 만들기를 클릭합니다.

gcloud

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

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

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-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 network-lb-health-check \
       --failover-ratio 0.5
    
  2. 두 인스턴스 그룹(ig-us-1ig-us-2)을 백엔드 서비스에 백엔드로 추가합니다.

    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-1 \
       --instance-group-zone us-central1-a \
       --region us-central1
    
    gcloud compute backend-services add-backend network-lb-backend-service \
       --instance-group ig-us-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 FORWARDING_RULE  \
    --backend-service network-lb-backend-service \
    --region us-central1

FORWARDING_RULE을 기존 전달 규칙의 이름으로 바꿉니다.

새 전달 규칙 만들기

기존 전달 규칙을 업데이트하지 않으려면 새 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에 무작위로 배포됩니다.

  1. 연결을 테스트하려면 먼저 다음 명령어를 실행하여 Linux에 Netcat을 설치하세요.

    $ sudo apt install netcat
    
  2. 모든 백엔드 VM 응답이 나타날 때까지 다음 명령어를 몇 번 반복합니다.

    $ nc IP_ADDRESS 80
    

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

새 외부 패스 스루 네트워크 부하 분산기가 올바르게 작동하는지 확인한 후 이전 대상 풀 리소스를 삭제할 수 있습니다.

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

    부하 분산으로 이동

  2. 대상 풀에 연결된 이전 부하 분산기를 선택한 다음 삭제를 클릭합니다.
  3. 생성된 상태 점검을 선택한 후 부하 분산기 및 선택한 리소스 삭제를 클릭합니다.

다음 단계