Application Load Balancer 대상 그룹의 상태 확인
Application Load Balancer는 등록된 대상으로 요청을 주기적으로 전송하여 상태를 확인합니다. 이러한 테스트를 바로 상태 확인이라고 합니다.
각각의 교차 영역 노드는 로드 밸런서의 활성화된 가용 영역에서 정상 상태 대상에만 요청을 전송합니다. 각각의 로드 밸런서 노드는 대상이 등록된 대상 그룹에 대한 상태 확인 설정을 사용하여 각 대상의 상태를 확인합니다. 대상이 등록된 후에는 상태 확인을 통과해야만 정상 상태로 간주됩니다. 각각의 상태 확인이 완료되고 나면 로드 밸런서 노드는 상태 확인을 위해 설정된 연결을 종료합니다.
대상 그룹에 비정상인 등록된 대상만 포함되는 경우 로드 밸런서는 상태와 관계없이 모든 해당 대상에 요청을 라우팅합니다. 즉 모든 대상이 활성화된 모든 가용 영역에서 동시에 상태 확인에 실패하면 로드 밸런서가 열리지 않습니다. 오류 시 열림이 적용되면 상태에 관계없이 로드 밸런싱 알고리즘에 따라 활성화된 모든 가용 영역의 모든 대상에 대한 트래픽이 허용됩니다.
WebSockets에서는 상태 확인이 지원되지 않습니다.
상태 확인 설정
다음 표에 설명된 대로 대상 그룹의 대상에 대한 상태 확인을 구성합니다. 테이블에 사용되는 설정 이름은 API에 사용되는 이름입니다. 로드 밸런서는 지정된 포트, 프로토콜 및 상태 확인 경로를 사용하여 HealthCheckIntervalSeconds 초마다 모든 등록 대상에 상태 확인 요청을 전송합니다. 각 상태 확인 요청은 독립적이며 결과는 전체 간격 동안 지속됩니다. 대상이 응답하는 데 걸리는 시간은 다음 상태 확인 요청의 간격에 영향을 미치지 않습니다. 상태 확인이 UnhealthyThresholdCount 연속 실패를 초과하면 로드 밸런서는 대상을 서비스에서 제외합니다. 상태 확인이 HealthyThresholdCount 연속 성공을 초과하면 로드 밸런서는 대상을 다시 서비스합니다.
설정 | 설명 |
---|---|
HealthCheckProtocol |
대상에 대한 상태 확인을 수행할 때 로드 밸런서가 사용하는 프로토콜입니다. Application Load Balancer의 경우 가능한 프로토콜은 HTTP와 HTTPS입니다. HTTP 프로토콜이 기본 설정값입니다. 이러한 프로토콜은 HTTP GET 메서드를 사용하여 상태 확인 요청을 전송합니다. |
HealthCheckPort |
대상에 대한 상태 확인을 수행할 때 로드 밸런서가 사용하는 포트입니다. 각 대상이 로드 밸런서에서 트래픽을 수신하는 포트를 사용하도록 기본 설정되어 있습니다. |
HealthCheckPath |
대상에 대한 상태 확인을 위한 대상입니다. 프로토콜 버전이 HTTP/1.1 또는 HTTP/2인 경우 유효한 URI(/path?query)를 참조하세요. 기본값은 /입니다. 프로토콜 버전이 gRPC인 경우, 사용자 지정 상태 확인 방법의 경로를 |
HealthCheckTimeoutSeconds |
상태 확인 실패를 의미하는 대상으로부터 응답이 없는 기간(초 단위)입니다. 범위는 2~120초입니다. 대상 유형이 |
HealthCheckIntervalSeconds |
개별 인스턴스의 상태 확인 간의 대략적인 간격(초 단위)입니다. 범위는 5~300초입니다. 대상 유형이 |
HealthyThresholdCount |
비정상 상태의 대상을 정상으로 간주하기까지 필요한 연속적인 상태 확인 성공 횟수입니다. 범위는 2~10회입니다. 기본값은 5입니다. |
UnhealthyThresholdCount |
대상을 비정상 상태로 간주하기까지 필요한 연속적인 상태 확인 실패 횟수입니다. 범위는 2~10회입니다. 기본값은 2입니다. |
Matcher |
대상으로부터 응답 성공을 확인할 때 사용하는 코드입니다. 이를 콘솔에서 성공 코드라고 합니다. 프로토콜 버전이 HTTP/1.1 또는 HTTP/2인 경우 가능한 값은 200~499입니다. 값 범위(예: "200-299")에서 여러 값(예: "200,202")을 지정할 수 있습니다. 기본값은 200입니다. 프로토콜 버전이 gRPC인 경우 가능한 값은 0~99입니다. 여러 값(예: "0,1") 또는 값 범위(예: "0-5")를 지정할 수 있습니다. 기본값은 12입니다. |
대상 상태
로드 밸런서가 대상으로 상태 확인 요청을 전송할 수 있으려면 먼저 대상 그룹에 이를 등록하고 리스너 규칙에서 대상 그룹을 지정한 다음, 로드 밸런서에서 대상의 가용 영역을 활성화해야 합니다. 대상이 로드 밸런서에서 요청을 수신할 수 있으려면 먼저 초기 상태 확인을 통과해야 합니다. 대상이 초기 상태 확인을 통과한 후에는 상태가 Healthy
가 됩니다.
다음 표에는 등록 대상의 상태로 가능한 값이 나와 있습니다.
값 | 설명 |
---|---|
|
로드 밸런서에서는 대상 등록이나 대상에 대해 초기 상태 확인이 진행 중에 있습니다. 관련 사유 코드: |
|
대상이 정상 상태입니다. 관련 사유 코드: 없음 |
|
대상이 상태 확인에 응답하지 않았거나 상태 확인에 실패했습니다. 관련 사유 코드: |
|
대상이 대상 그룹에 등록되어 있지 않거나, 대상 그룹이 리스너 규칙에서 사용되지 않거나, 대상이 활성화되지 않은 가용 영역에 있거나, 대상이 중지 상태 또는 종료 상태입니다. 관련 사유 코드: |
|
대상이 등록 취소되고 있으며 Connection Draining이 진행 중입니다. 관련 사유 코드: |
|
대상 그룹에 대한 상태 확인이 비활성화되었습니다. 관련 사유 코드: |
상태 확인 사유 코드
대상의 상태가 Healthy
이외의 값인 경우에는 API가 문제에 대한 사유 코드와 설명을 반환하고 콘솔이 동일한 설명을 표시합니다. Elb
로 시작되는 사유 코드는 로드 밸런서 측에서 호출되고, Target
으로 시작되는 사유 코드는 대상 측에서 호출됩니다. 상태 확인 실패의 다양한 원인에 대한 자세한 내용은 문제 해결을 참조하세요.
사유 코드 | 설명 |
---|---|
|
초기 상태 확인이 진행 중 |
|
내부 오류로 인한 상태 확인 실패 |
|
대상 등록이 진행 중 |
|
대상 등록 취소가 진행 중 |
|
상태 확인 실패 |
|
상태 확인 비활성화됨 |
|
대상이 중지 상태에 있음 대상이 종료 상태에 있음 대상이 종료 또는 중지 상태에 있음 대상이 잘못된 상태에 있음 |
|
로드 밸런서에서 사용 중인 IP 주소이므로 대상으로 사용할 수 없음 |
|
대상 그룹이 로드 밸런서에서 트래픽을 수신하도록 구성되지 않음 대상이 로드 밸런서에서 활성화되지 않은 가용 영역에 있음 |
|
대상이 대상 그룹에 등록되지 않음 |
|
[code] 등의 코드에서 상태 확인 실패 |
|
요청 시간 초과 |