이 페이지에서는 전역 외부 애플리케이션 부하 분산기와 기본 애플리케이션 부하 분산기의 차이점과 기본 애플리케이션 부하 분산기 리소스를 전역 외부 애플리케이션 부하 분산기로 마이그레이션하는 방법을 설명합니다.
전역 외부 애플리케이션 부하 분산기의 고급 트래픽 관리 기능을 활용하기 위해서는 기본 애플리케이션 부하 분산기 리소스를 전역 외부 애플리케이션 부하 분산기 인프라로 마이그레이션하는 것이 좋습니다.
기본 애플리케이션 부하 분산기와 전역 외부 애플리케이션 부하 분산기 비교
리소스를 마이그레이션하기 전에 기본 애플리케이션 부하 분산기와 전역 외부 애플리케이션 부하 분산기의 차이를 이해해야 합니다.
기능 차이
전역 외부 애플리케이션 부하 분산기에는 다음 기능이 지원되지 않습니다. 기본 애플리케이션 부하 분산기에서만 사용할 수 있습니다.
- 표준 네트워크 등급
-
GKE 클러스터용 전역 외부 애플리케이션 부하 분산기를 배포하려면 GKE Gateway Controller를 대신 사용합니다. 설정 안내는 게이트웨이 배포를 참조하세요.
데이터 영역 차이점
다음은 기본 애플리케이션 부하 분산기와 전역 외부 애플리케이션 부하 분산기 간의 데이터 영역 차이를 보여주는 표입니다. 이러한 차이는 부하 분산기가 몇 가지 일반적인 이벤트에 응답하는 방식에 영향을 줍니다.
이벤트 | 기본 애플리케이션 부하 분산기 응답 | 전역 외부 애플리케이션 부하 분산기 응답 |
상태/오류 코드 | ||
모든 백엔드가 비정상 | 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
로 변경합니다. 이렇게 하려면 실제로 마이그레이션을 마무리하기 전에 새로운 부하 분산 스키마로 네트워크 트래픽 부분을 테스트할 수 있는 일련의 마이그레이션 단계를 수행합니다. 리소스 마이그레이션 중에는 기본 애플리케이션 부하 분산기 인프라 또는 전역 외부 애플리케이션 부하 분산기 인프라로 전송되는 요청 비율을 제어합니다.
다음 다이어그램은 마이그레이션 전후의 부하 분산 리소스에 대한 부하 분산 스키마를 보여줍니다.
이전 다이어그램에서 다음 사항에 유의하세요.
- 리소스가 마이그레이션되기 전에는 모든 요청에 기본 애플리케이션 부하 분산기 인프라가 사용됩니다.
- 리소스가 마이그레이션되는 동안 일부 요청은 전역 외부 애플리케이션 부하 분산기 인프라로 전송되고 나머지 요청은 기본 애플리케이션 부하 분산기 인프라로 전송됩니다.
- 리소스가 마이그레이션된 후에는 모든 요청에 전역 외부 애플리케이션 부하 분산기 인프라가 사용됩니다.
원활한 전환을 보장하기 위해서는 지정된 순서로 다음 기본 애플리케이션 부하 분산기 리소스를 마이그레이션하세요.
부하 분산기의 전달 규칙에 연결된 모든 백엔드 서비스를 마이그레이션합니다.
부하 분산기의 전달 규칙에 연결된 모든 백엔드 버킷을 마이그레이션합니다. 백엔드 버킷에 부하 분산 스키마가 없기 때문에 이 작업은 전달 규칙 수준에서 수행합니다.
부하 분산기의 전달 규칙을 마이그레이션합니다.
전달 규칙에 연결된 모든 백엔드 서비스와 백엔드 버킷이 이미 마이그레이션된 후에만 전달 규칙을 마이그레이션할 수 있습니다.
마이그레이션 상태
부하 분산 스키마를 EXTERNAL_MANAGED
로 변경하기 전에 리소스를 다른 상태로 설정하여 마이그레이션합니다.
PREPARE
: 마이그레이션을 준비하려면 리소스를 이 상태로 설정합니다.TEST_BY_PERCENTAGE
: 준비된 리소스를 테스트하기 위해 일정 비율의 네트워크 트래픽을 보내려면 리소스를 이 상태로 설정합니다. 이 단계는 선택사항입니다.TEST_ALL_TRAFFIC
: 기본 애플리케이션 부하 분산기 인프라 대신 전역 외부 애플리케이션 부하 분산기 인프라를 통해 리소스에 모든 네트워크 트래픽을 보내려면 리소스를 이 상태로 설정합니다.
마이그레이션 프로세스
다운타임이 없도록 하려면 기본 애플리케이션 부하 분산기 인프라에서 전역 외부 애플리케이션 부하 분산기 인프라로 특정 순서로 리소스를 마이그레이션한 후 부하 분산 스키마를 EXTERNAL
에서 EXTERNAL_MANAGED
로 변경하여 마이그레이션을 마무리합니다.
부하 분산기의 백엔드 서비스를 마이그레이션합니다.
각 백엔드 서비스에 대해 다음 단계를 반복합니다.
마이그레이션을 위해 백엔드 서비스를 준비합니다.
전역 외부 애플리케이션 부하 분산기 인프라를 통해 트래픽을 전송할 수 있으려면 먼저 백엔드 서비스의 상태를
PREPARE
로 설정합니다. 이렇게 하면 백엔드 서비스가 전역 외부 애플리케이션 부하 분산기 인프라 네트워크 트래픽을 처리할 수 있습니다. 백엔드 서비스가 전역 외부 애플리케이션 부하 분산기 인프라를 통해 트래픽을 전송할 준비가 되려면 잠시(약 6분 정도) 시간이 걸립니다.선택사항: 준비된 백엔드 서비스를 테스트합니다.
백엔드 서비스가
PREPARE
상태에 있으면 상태를TEST_BY_PERCENTAGE
로 설정하고 전역 외부 애플리케이션 부하 분산기 인프라에 대한 기본 애플리케이션 부하 분산기 네트워크 트래픽의 비율을 설정합니다.이 단계는 선택사항이지만 백엔드 서비스를 마이그레이션하기 전에 트래픽을 테스트하는 것이 좋습니다. 작은 비율 값으로 시작하고 리소스 로그를 모니터링하세요. 백엔드 서비스가 예상한 대로 작동하면 비율을 점차적으로 100%까지 늘립니다.
TEST_BY_PERCENTAGE
상태에서는 전역 외부 애플리케이션 부하 분산기 인프라의 추가 기능을 사용할 수 없습니다.모든 기본 애플리케이션 부하 분산기 네트워크 트래픽을 준비된 백엔드 서비스로 보냅니다.
백엔드 서비스 테스트가 성공하면 상태를
TEST_ALL_TRAFFIC
으로 설정하고 모든 기본 애플리케이션 부하 분산기 네트워크 트래픽을 준비된 백엔드 서비스로 보냅니다. 백엔드 서비스가 네트워크 트래픽을 처리하도록 준비되려면 잠시(약 6분 정도) 시간이 걸립니다.TEST_ALL_TRAFFIC
상태에서는 전역 외부 애플리케이션 부하 분산기 인프라의 추가 기능을 사용할 수 없습니다.마이그레이션된 백엔드 서비스의 부하 분산 스키마를
EXTERNAL_MANAGED
로 변경합니다.전역 외부 애플리케이션 부하 분산기 인프라에서 준비된 백엔드 서비스를 테스트한 후 부하 분산 스키마를
EXTERNAL_MANAGED
로 변경합니다. 백엔드 서비스가 완전히 마이그레이션되려면 잠시(약 6분 정도) 시간이 걸립니다. 백엔드 서비스의 부하 분산 스키마가EXTERNAL_MANAGED
로 변경된 후에는 전역 외부 애플리케이션 부하 분산기 인프라의 고급 기능을 사용할 수 있습니다.
부하 분산기의 백엔드 버킷을 마이그레이션합니다. 백엔드 버킷에 부하 분산 스키마가 없기 때문에 이 작업은 전달 규칙 수준에서 수행합니다.
각 버킷에 대해 다음 단계를 반복합니다.
마이그레이션을 위해 백엔드 버킷을 준비합니다.
전역 외부 애플리케이션 부하 분산기 인프라를 통해 트래픽을 전송할 수 있으려면 먼저 백엔드 버킷의 상태를
PREPARE
로 설정하고 잠시(약 6분 정도) 기다립니다.선택사항: 준비된 백엔드 서비스를 테스트합니다.
백엔드 버킷이
PREPARE
상태에 있으면 상태를TEST_BY_PERCENTAGE
로 설정하고 전역 외부 애플리케이션 부하 분산기 인프라에 대한 기본 애플리케이션 부하 분산기 네트워크 트래픽의 비율을 설정합니다.모든 기본 애플리케이션 부하 분산기 네트워크 트래픽을 준비된 백엔드 버킷으로 보냅니다.
백엔드 버킷의 상태를
TEST_ALL_TRAFFIC
으로 설정하고 모든 기본 애플리케이션 부하 분산기 네트워크 트래픽을 여기로 보냅니다. 백엔드 버킷이 네트워크 트래픽을 처리하도록 준비되려면 잠시(약 6분 정도) 시간이 걸립니다.TEST_ALL_TRAFFIC
상태에서는 전역 외부 애플리케이션 부하 분산기 인프라의 추가 기능을 사용할 수 없습니다.
전달 규칙을 마이그레이션합니다.
각 전달 규칙에 대해 전달 규칙의 부하 분산 스키마를
EXTERNAL_MANAGED
로 변경하고 잠시(약 6분 정도) 기다립니다. 전달 규칙의 부하 분산 스키마가EXTERNAL_MANAGED
로 변경된 후에는 전역 외부 애플리케이션 부하 분산기 인프라의 고급 기능을 사용할 수 있습니다.
자세한 단계별 프로세스는 기본 애플리케이션 부하 분산기에서 리소스 마이그레이션을 참조하세요.
다음 다이어그램은 여러 마이그레이션 상태의 기본 애플리케이션 부하 분산기 리소스를 보여줍니다.
리소스를 마이그레이션한 후 기본 애플리케이션 부하 분산기로 롤백하려면 마이그레이션한지 90일 내에 부하 분산 스키마를 변경합니다. 90일이 지나면 리소스를 롤백할 수 없습니다.
세션 어피니티 사용
세션 어피니티로 기본 애플리케이션 부하 분산기 백엔드 서비스를 마이그레이션할 때는 다음 주의사항을 고려하세요.
TEST_BY_PERCENTAGE
의 값을 설정하면 기본 애플리케이션 부하 분산기를 대상으로 하던 일부 트래픽이 전역 외부 애플리케이션 부하 분산기로 리디렉션됩니다. 이로 인해 클라이언트 IP 어피니티가 깨질 수 있습니다. 마이그레이션 비율을 변경(예: 10% 증가)하면 다음 요청에서 어피니티가 다시 설정될 때까지 클라이언트 IP 주소의 동일 비율(이 예시에서는 10%)에 대해 세션 어피니티가 깨집니다.TEST_BY_PERCENTAGE
의 값을 설정하면 세션 쿠키가 없는 해당 트래픽 비율을 전역 외부 애플리케이션 부하 분산기로 리디렉션합니다. 또한 세션 쿠키가 포함된 모든 트래픽을 쿠키를 생성한 부하 분산기 Fleet로 리디렉션합니다.TEST_BY_PERCENTAGE
의 값을 0%로 설정하거나 설정하지 않은 상태로 두거나 백엔드 서비스를PREPARE
상태로 설정하면 전역 외부 애플리케이션 부하 분산기로 지정된 모든 기존 쿠키가 무효화됩니다.백엔드 서비스의 부하 분산 스키마를
EXTERNAL_MANAGED
로 변경하면 기본 애플리케이션 부하 분산기 Fleet에서 생성된 모든 쿠키가 무효화됩니다. 이렇게 하면 전역 외부 애플리케이션 부하 분산기를 사용하는 애플리케이션에 문제가 있을 때 트래픽을 롤백할 수 있습니다. 예를 들어 클라이언트가 기본 애플리케이션 부하 분산기 Fleet의 쿠키를 제공하지만 백엔드 서비스 스키마가EXTERNAL_MANAGED
이면 클라이언트의 쿠키가 적용되지 않습니다. 전역 외부 애플리케이션 부하 분산기는 이 쿠키를 무시하고 새로 만듭니다.
마이그레이션된 리소스 롤백
리소스를 마이그레이션한 후 전역 외부 애플리케이션 부하 분산기 인프라에서 기본 애플리케이션 부하 분산기 인프라로 롤백하려면 부하 분산 스키마를 변경한지 90일 내에 롤백할 수 있습니다.
백엔드 서비스에서 EXTERNAL
스키마로 롤백하려면 전달 규칙을 롤백해야 합니다. 전달 규칙을 EXTERNAL
스키마로 롤백할 때는 백엔드 서비스를 롤백할 필요가 없습니다.
리소스를 롤백하려면 다음 단계를 수행합니다.
- 리소스에 구성된 전역 외부 애플리케이션 부하 분산기의 새로운 고급 트래픽 관리 기능을 삭제합니다.
전달 규칙을 롤백합니다.
전달 규칙의 부하 분산 스키마를
EXTERNAL_MANAGED
에서EXTERNAL
로 변경합니다.백엔드 버킷을 롤백합니다.
- 백엔드 버킷의 마이그레이션 상태를
TEST_ALL_TRAFFIC
로 설정하고 잠시(약 6분 정도) 기다립니다. - 선택사항: 트래픽을 줄이려면 백엔드 버킷의 마이그레이션 상태를
TEST_BY_PERCENTAGE
로 설정하고 트래픽의 비율을 설정합니다. - 백엔드 버킷의 마이그레이션 상태를
PREPARE
로 설정합니다. - 백엔드 버킷을 마이그레이션 이전 상태로 되돌립니다.
- 백엔드 버킷의 마이그레이션 상태를
백엔드 서비스를 롤백합니다.
- 백엔드 서비스의 마이그레이션 상태를
TEST_ALL_TRAFFIC
으로 설정하고 잠시(약 6분 정도) 기다립니다. - 선택사항: 트래픽을 줄이려면 백엔드 서비스의 마이그레이션 상태를
TEST_BY_PERCENTAGE
로 설정하고 트래픽의 비율을 설정합니다. - 백엔드 서비스의 마이그레이션 상태를
PREPARE
로 설정합니다. - 백엔드 서비스를 마이그레이션 이전 상태로 되돌립니다.
- 백엔드 서비스의 마이그레이션 상태를
자세한 단계별 프로세스는 마이그레이션된 리소스를 기본 애플리케이션 부하 분산기로 롤백을 참조하세요.
마이그레이션 프로세스 추적
리소스를 마이그레이션하는 동안 다음을 통해 부하 분산 스키마를 확인할 수 있습니다.
전역 외부 애플리케이션 부하 분산기의 로깅 및 모니터링 대시보드. 자세한 내용은 전역 외부 애플리케이션 부하 분산기 로깅 및 모니터링을 참조하세요.
다음 HTTP 요청 및 응답 헤더의 값:
X-External-Managed-Migration-Scheme-Override
: 이 요청 헤더는 해당 값에 따라 요청을 라우팅합니다. 헤더 값이EXTERNAL
이면 요청을 기본 애플리케이션 부하 분산기 인프라로 전달합니다. 값이EXTERNAL_MANAGED
면 전역 외부 애플리케이션 부하 분산기 인프라를 통해 요청을 라우팅합니다.이 헤더를 사용하여 특정 부하 분산기 Fleet로 요청을 전달합니다.
X-External-Managed-Migration-Selected-Scheme
: 이 요청 및 응답 헤더는 백엔드 및 클라이언트에 요청을 라우팅하는 데 사용되는 부하 분산 스키마 정보를 알려줍니다. 헤더는 클라이언트로 반환되고 고객의 백엔드로 전달됩니다.기본 애플리케이션 부하 분산기 인프라를 통해 요청이 라우팅되는 경우에는 값이
EXTERNAL
입니다. 요청이 전역 외부 애플리케이션 부하 분산기 인프라를 통해 라우팅되는 경우에는 값이EXTERNAL_MANAGED
입니다.