마이그레이션 개요

이 페이지에서는 전역 외부 애플리케이션 부하 분산기와 기존 애플리케이션 부하 분산기의 차이점과 기존 애플리케이션 부하 분산기 리소스를 전역 외부 애플리케이션 부하 분산기로 이전하는 방법을 자세히 설명합니다.

전역 외부 애플리케이션 부하 분산기의 고급 트래픽 관리 기능을 활용하려면 기존 애플리케이션 부하 분산기 리소스를 전역 외부 애플리케이션 부하 분산기 인프라로 이전하는 것이 좋습니다.

기존 애플리케이션 부하 분산기와 전역 외부 애플리케이션 부하 분산기 비교

리소스를 이전하기 전에 기존 애플리케이션 부하 분산기와 전역 외부 애플리케이션 부하 분산기의 차이점을 알아야 합니다.

기능 차이

전역 외부 애플리케이션 부하 분산기에는 다음 기능이 지원되지 않습니다. 기본 애플리케이션 부하 분산기에서만 사용할 수 있습니다.

데이터 영역 차이점

다음은 기본 애플리케이션 부하 분산기와 전역 외부 애플리케이션 부하 분산기 간의 데이터 영역 차이를 보여주는 표입니다. 이러한 차이는 부하 분산기가 몇 가지 일반적인 이벤트에 응답하는 방식에 영향을 줍니다.

이벤트 기본 애플리케이션 부하 분산기 응답 전역 외부 애플리케이션 부하 분산기 응답
상태/오류 코드
모든 백엔드가 비정상 HTTP 502 반환 HTTP 503 반환
요청이 차단된 SSL 암호화 사용 HTTP 502 반환 HTTP 503 반환
백엔드에 의해 조기 업스트림 연결 재설정 HTTP 502 반환 HTTP 503 반환
연결 업그레이드 실패(예: Websockets으로 업그레이드 시) HTTP 400 반환 HTTP 403 반환
헤더가 너무 큼 HTTP 413 반환 HTTP 431 반환
할당량 및 한도
URL 맵 구성 두 부하 분산기 간에는 URL 맵 구성 한도에 상당한 차이가 있습니다. 자세한 내용은 할당량: URL 맵 문서를 참고하세요.
헤더 처리
요청은 본문이 없는 커스텀 HTTP 메서드 사용 백엔드로 전송되는 요청에 Transfer Encoding: Chunked 헤더 추가 백엔드로 전송되는 요청에 Content-Length: 0 헤더 추가
백엔드로 전송되는 요청에 추가된 X-Forwarded-For 헤더 형식 IP 사이에 ', ' 구분 기호 사용 IP 사이에 ',' 구분 기호 사용(쉼표 뒤의 공백 없음)
헤더 대소문자 유지 헤더 대소문자 보존 모든 헤더 키는 소문자로 변환됨
이름이 동일한 반복되는 헤더 허용됨 반복되는 헤더는 RFC 7230에서 허용하는 대로 값을 순서대로 추가하고 쉼표로 구분하여 단일 헤더로 결합할 수 있습니다.
(HTTP/1.1만 해당) 잘못된 헤더 이름(예: 헤더에 지원되지 않는 문자). 허용됨(HTTP/1.1의 경우) HTTP 502 반환(HTTP 1.1의 경우)
(HTTP/1.1만 해당) 요청에 반복된(동일한) Content-Length 헤더 허용됨(HTTP/1.1의 경우) HTTP 502 반환(HTTP 1.1의 경우)
(HTTP/1.1만 해당) 헤더에 여러 호스트가 있음 2개 이상의 호스트가 추가되고 첫 번째 호스트가 유효하면 헤더가 수락됨 2개 이상의 호스트 추가되고 유효하지 않은 경우 부하 분산기가 HTTP 502를 반환함
(HTTP/1.1만 해당) Connection: Keep-Alive 헤더 기본적으로 백엔드로 전송되는 요청에 Keep-Alive header 추가 기본적으로 이 헤더는 추가되지 않음
요청 처리
요청의 백슬래시 변경되지 않은 URL 슬래시로 변환
요청의 중복 슬래시 병합 슬래시는 병합되지 않은 상태로 유지 슬래시 병합
요청 경로의 `#` 허용됨 HTTP 400 반환
(HTTP/1.1만 해당) 요청 경로에 잘못된 문자가 있음(예: '\\x7f\\x7f') 허용됨(HTTP/1.1의 경우) HTTP 502 반환(HTTP 1.1의 경우)
트래픽 분산(URL 맵 구성)
클라이언트 요청에 포트 번호 포함 URL 맵에 포트를 사용하여 호스트를 구성한 경우에도 포트 번호가 무시됩니다. 호스트 이름만 고려됩니다. 예를 들어 example.com:5000에 대한 요청은 example.com에 대한 백엔드 서비스와 일치합니다. 호스트 이름과 포트 번호가 모두 고려됩니다. 예를 들어 example.com:5000에 대한 요청은 example.com:5000에 대한 백엔드 서비스와 일치합니다. 일치 항목이 없으면 기본 백엔드 서비스가 사용됩니다.

차이점과 지원되는 기능에 관한 자세한 내용은 부하 분산기 기능 비교애플리케이션 부하 분산기 개요를 참고하세요.

기존 애플리케이션 부하 분산기에서 전역 외부 애플리케이션 부하 분산기로 이전

전역 외부 애플리케이션 부하 분산기로 이전하려면 부하 분산 리소스(특히 백엔드 서비스 및 전달 규칙)의 부하 분산 스키마를 EXTERNAL에서 EXTERNAL_MANAGED로 변경합니다. 이렇게 하려면 일련의 이전 단계를 실행하여 실제로 이전을 완료하기 전에 새 부하 분산 스킴으로 네트워크 트래픽의 일부를 테스트할 수 있습니다. 리소스 이전 중에 기본 애플리케이션 부하 분산기 인프라 또는 전역 외부 애플리케이션 부하 분산기 인프라 중 어느 쪽으로 전송할 요청의 비율을 제어할 수 있습니다.

다음 다이어그램은 마이그레이션 전과 후의 부하 분산 리소스의 부하 분산 스킴을 보여줍니다.

기존 애플리케이션 부하 분산기 리소스의 이전 프로세스
기존 애플리케이션 부하 분산기 리소스의 이전 프로세스 (확대하려면 클릭)

위 다이어그램에서 다음 사항에 유의하세요.

  • 리소스가 이전되기 전에는 모든 요청이 기존 애플리케이션 부하 분산기 인프라를 사용합니다.
  • 리소스가 이전되는 동안 일부 요청은 전역 외부 애플리케이션 부하 분산기 인프라로 전송되고 나머지 요청은 기존 애플리케이션 부하 분산기 인프라로 전송됩니다.
  • 리소스가 이전된 후 모든 요청은 전역 외부 애플리케이션 부하 분산기 인프라를 사용합니다.

원활한 전환을 위해 다음과 같은 기존 애플리케이션 부하 분산기 리소스를 지정된 순서대로 마이그레이션하세요.

  1. 부하 분산기의 전달 규칙에 연결된 모든 백엔드 서비스를 이전합니다.

  2. 부하 분산기의 전달 규칙에 연결된 모든 백엔드 버킷을 이전합니다. 백엔드 버킷에는 부하 분산 스키마가 없으므로 전달 규칙 수준에서 이를 실행합니다.

  3. 부하 분산기의 전달 규칙을 이전합니다.

    전달 규칙에 연결된 모든 백엔드 서비스와 백엔드 버킷이 이미 마이그레이션된 후에만 전달 규칙을 마이그레이션할 수 있습니다.

이전 상태

부하 분산 스킴을 EXTERNAL_MANAGED로 변경하기 전에 리소스를 다른 상태로 설정하여 이전합니다.

  1. PREPARE: 리소스를 이 상태로 설정하여 이전을 준비합니다.
  2. TEST_BY_PERCENTAGE: 준비된 리소스를 테스트하려면 리소스를 이 상태로 설정하여 네트워크 트래픽의 비율을 전송합니다. 이 단계는 선택사항입니다.
  3. TEST_ALL_TRAFFIC: 리소스를 이 상태로 설정하면 모든 네트워크 트래픽이 기존 애플리케이션 부하 분산기 인프라 대신 전역 외부 애플리케이션 부하 분산기 인프라를 통해 리소스로 전송됩니다.

마이그레이션 프로세스

다운타임을 방지하려면 리소스를 특정 순서대로 기존 애플리케이션 부하 분산기 인프라에서 전역 외부 애플리케이션 부하 분산기 인프라로 마이그레이션한 다음 부하 분산 스키마를 EXTERNAL에서 EXTERNAL_MANAGED로 변경하여 마이그레이션을 완료합니다.

  1. 부하 분산기의 백엔드 서비스를 이전합니다.

    각 백엔드 서비스에 대해 다음 단계를 반복합니다.

    1. 마이그레이션을 위해 백엔드 서비스를 준비합니다.

      전역 외부 애플리케이션 부하 분산기 인프라를 통해 트래픽을 전송하기 전에 백엔드 서비스의 상태를 PREPARE로 설정합니다. 이렇게 하면 백엔드 서비스가 전역 외부 애플리케이션 부하 분산기 인프라 네트워크 트래픽을 처리할 수 있도록 준비됩니다. 백엔드 서비스가 전역 외부 애플리케이션 부하 분산기 인프라를 통해 트래픽을 전송할 준비가 되려면 약 6분 정도 걸립니다.

    2. 선택사항: 준비된 백엔드 서비스를 테스트합니다.

      백엔드 서비스가 PREPARE 상태가 되면 상태를 TEST_BY_PERCENTAGE로 설정하고 기본 애플리케이션 부하 분산기 네트워크 트래픽의 비율을 전역 외부 애플리케이션 부하 분산기 인프라로 설정합니다.

      이 단계는 선택사항이지만 백엔드 서비스를 이전하기 전에 트래픽을 테스트하는 것이 좋습니다. 작은 비율 값으로 시작하고 리소스의 로그를 모니터링합니다. 백엔드 서비스가 예상대로 작동하면 비율을 점진적으로 100%까지 늘립니다.

      TEST_BY_PERCENTAGE 상태에서는 전역 외부 애플리케이션 부하 분산기 인프라의 추가 기능을 사용할 수 없습니다.

    3. 모든 기존 애플리케이션 부하 분산기 네트워크 트래픽을 준비된 백엔드 서비스로 전송합니다.

      백엔드 서비스 테스트가 성공하면 상태를 TEST_ALL_TRAFFIC로 설정하고 모든 기존 애플리케이션 부하 분산기 네트워크 트래픽을 준비된 백엔드 서비스로 전송합니다. 백엔드 서비스가 네트워크 트래픽을 처리할 준비가 되려면 약 6분 정도 걸립니다.

      TEST_ALL_TRAFFIC 상태에서는 전역 외부 애플리케이션 부하 분산기 인프라의 추가 기능을 사용할 수 없습니다.

    4. 이전된 백엔드 서비스의 부하 분산 스키마를 EXTERNAL_MANAGED로 변경합니다.

      전역 외부 애플리케이션 부하 분산기 인프라에서 준비된 백엔드 서비스를 테스트한 후 부하 분산 스킴을 EXTERNAL_MANAGED로 변경합니다. 백엔드 서비스가 완전히 이전되는 데 약 6분 정도 걸립니다. 백엔드 서비스의 부하 분산 스킴이 EXTERNAL_MANAGED로 변경되면 전역 외부 애플리케이션 부하 분산기 인프라의 고급 기능을 사용할 수 있습니다.

  2. 부하 분산기의 백엔드 버킷을 이전합니다. 백엔드 버킷에는 부하 분산 스키마가 없으므로 전달 규칙 수준에서 이를 실행합니다.

    각 버킷에 대해 다음 단계를 반복합니다.

    1. 마이그레이션을 위해 백엔드 버킷을 준비합니다.

      전역 외부 애플리케이션 부하 분산기 인프라를 통해 트래픽을 전송할 수 있기 전에 백엔드 버킷의 상태를 PREPARE로 설정하고 잠시 (약 6분) 기다립니다.

    2. 선택사항: 준비된 백엔드 서비스를 테스트합니다.

      백엔드 버킷이 PREPARE 상태가 되면 상태를 TEST_BY_PERCENTAGE로 설정하고 기존 애플리케이션 부하 분산기 네트워크 트래픽의 비율을 전역 외부 애플리케이션 부하 분산기 인프라로 설정합니다.

    3. 모든 기존 애플리케이션 부하 분산기 네트워크 트래픽을 준비된 백엔드 버킷으로 전송합니다.

      백엔드 버킷의 상태를 TEST_ALL_TRAFFIC로 설정하고 모든 기존 애플리케이션 부하 분산기 네트워크 트래픽을 백엔드 버킷으로 전송합니다. 백엔드 버킷이 네트워크 트래픽을 처리할 준비가 되려면 약 6분 정도 걸립니다.

      TEST_ALL_TRAFFIC 상태에서는 전역 외부 애플리케이션 부하 분산기 인프라의 추가 기능을 사용할 수 없습니다.

  3. 전달 규칙을 이전합니다.

    각 전달 규칙의 전달 규칙 부하 분산 스키마를 EXTERNAL_MANAGED로 변경하고 잠시 (약 6분) 기다립니다. 전달 규칙의 부하 분산 스키마가 EXTERNAL_MANAGED로 변경되면 전 세계 외부 애플리케이션 부하 분산기 인프라의 고급 기능을 사용할 수 있습니다.

자세한 단계별 절차는 기존 애플리케이션 부하 분산기에서 리소스 이전을 참고하세요.

다음 다이어그램은 이전의 다양한 상태에 있는 기존 애플리케이션 부하 분산기 리소스를 보여줍니다.

기존 애플리케이션 부하 분산기 리소스의 이전 상태입니다.
기존 애플리케이션 부하 분산기 리소스의 이전 상태 (확대하려면 클릭)

리소스를 이전한 후 기존 애플리케이션 로드 밸런서로 롤백하려면 이전 후 90일 이내에 로드 밸런싱 스킴을 변경하세요. 90일이 지나면 리소스를 롤백할 수 없습니다.

세션 어피니티 사용하기

세션 어피니티가 있는 기존 애플리케이션 부하 분산기 백엔드 서비스를 이전할 때는 다음 사항을 고려하세요.

  • TEST_BY_PERCENTAGE의 값을 설정하면 기존 애플리케이션 부하 분산기를 타겟팅하는 일부 트래픽이 전역 외부 애플리케이션 부하 분산기로 리디렉션됩니다. 이렇게 하면 클라이언트 IP 어피니티가 손상됩니다. 이전 비율을 변경하면 (예: 10% 증가) 다음 요청에서 어피니티가 다시 설정될 때까지 동일한 비율의 클라이언트 IP 주소(이 예에서는 10%)에 대한 세션 어피니티가 중단됩니다.

  • TEST_BY_PERCENTAGE의 값을 설정하면 세션 쿠키가 없는 트래픽의 해당 비율이 전역 외부 애플리케이션 부하 분산기로 리디렉션됩니다. 또한 세션 쿠키가 있는 모든 트래픽을 쿠키를 생성한 부하 분산기 함대로 리디렉션합니다.

  • TEST_BY_PERCENTAGE 값을 0%로 설정하거나 설정하지 않거나 백엔드 서비스를 PREPARE 상태로 설정하면 전역 외부 애플리케이션 부하 분산기로 전달되는 모든 기존 쿠키가 무효화됩니다.

  • 백엔드 서비스의 부하 분산 스킴을 EXTERNAL_MANAGED로 변경하면 기존 애플리케이션 부하 분산기 함대에서 생성된 모든 쿠키가 무효화됩니다. 이렇게 하면 전역 외부 애플리케이션 부하 분산기를 사용하는 애플리케이션에 문제가 있는 경우 트래픽을 롤백할 수 있습니다. 예를 들어 클라이언트가 기존 애플리케이션 부하 분산기 함대의 쿠키를 제공하지만 백엔드 서비스 스키마가 EXTERNAL_MANAGED이면 클라이언트의 쿠키가 적용되지 않습니다. 전역 외부 애플리케이션 부하 분산기는 쿠키를 무시하고 새 쿠키를 만듭니다.

이전된 리소스 롤백

리소스를 마이그레이션한 후 전역 외부 애플리케이션 부하 분산기 인프라에서 기존 애플리케이션 부하 분산기 인프라로 롤백하려면 부하 분산 스키마를 변경한 후 90일 이내에 롤백하면 됩니다.

백엔드 서비스를 EXTERNAL 스킴으로 롤백하려면 전달 규칙을 롤백해야 합니다. 전달 규칙을 EXTERNAL 스키마로 롤백할 때 백엔드 서비스를 롤백할 필요는 없습니다.

리소스를 롤백하려면 다음 단계를 따르세요.

  1. 리소스에 구성된 전역 외부 애플리케이션 부하 분산기의 새로운 고급 트래픽 관리 기능을 삭제합니다.
  2. 전달 규칙을 롤백합니다.

    전달 규칙의 부하 분산 스키마를 EXTERNAL_MANAGED에서 EXTERNAL로 변경합니다.

  3. 백엔드 버킷을 롤백합니다.

    1. 백엔드 버킷의 이전 상태를 TEST_ALL_TRAFFIC로 설정하고 잠시 (약 6분) 기다립니다.
    2. 선택사항: 트래픽을 줄이려면 백엔드 버킷의 이전 상태를 TEST_BY_PERCENTAGE로 설정하고 트래픽의 비율을 설정합니다.
    3. 백엔드 버킷의 이전 상태를 PREPARE로 설정합니다.
    4. 백엔드 버킷을 이전 전 상태로 되돌립니다.
  4. 백엔드 서비스를 롤백합니다.

    1. 백엔드 서비스의 이전 상태를 TEST_ALL_TRAFFIC로 설정하고 잠시 기다립니다 (약 6분).
    2. 선택사항: 트래픽을 줄이려면 백엔드 서비스의 이전 상태를 TEST_BY_PERCENTAGE로 설정하고 트래픽의 비율을 설정합니다.
    3. 백엔드 서비스의 이전 상태를 PREPARE로 설정합니다.
    4. 백엔드 서비스를 이전 전 상태로 되돌립니다.

자세한 단계별 절차는 이전된 리소스를 기존 애플리케이션 부하 분산기로 롤백을 참고하세요.

이전 프로세스 추적하기

리소스를 이전하는 동안 다음을 확인하여 부하 분산 스킴을 확인할 수 있습니다.

  • 전역 외부 애플리케이션 부하 분산기의 로깅 및 모니터링 대시보드 자세한 내용은 전역 외부 애플리케이션 부하 분산기 로깅 및 모니터링을 참고하세요.

  • 다음 HTTP 요청 및 응답 헤더의 값:

    • X-External-Managed-Migration-Scheme-Override: 이 요청 헤더는 값에 따라 요청을 라우트합니다. 헤더 값이 EXTERNAL이면 요청이 기존 애플리케이션 부하 분산기 인프라로 전달됩니다. 값이 EXTERNAL_MANAGED이면 전역 외부 애플리케이션 부하 분산기 인프라를 통해 요청을 라우팅합니다.

      이 헤더를 사용하여 요청을 특정 부하 분산기 함대로 전달합니다.

    • X-External-Managed-Migration-Selected-Scheme: 이 요청 및 응답 헤더는 요청을 라우팅하는 데 사용되는 부하 분산 스킴에 관해 백엔드와 클라이언트에 알립니다. 헤더는 클라이언트로 반환되고 고객의 백엔드로 전달됩니다.

      요청이 기존 애플리케이션 부하 분산기 인프라를 통해 라우팅되는 경우 값은 EXTERNAL입니다. 요청이 전역 외부 애플리케이션 부하 분산기 인프라를 통해 라우팅되는 경우 값은 EXTERNAL_MANAGED입니다.

다음 단계