기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Classic Load Balancer 문제 해결: 상태 확인
로드 밸런서는 ELB에서 제공하는 기본 상태 확인 구성 또는 지정한 사용자 지정 상태 확인 구성을 사용하여 등록된 인스턴스의 상태를 확인합니다. 상태 확인 구성에는 프로토콜, ping 포트, ping 경로, 응답 시간 초과 및 상태 확인 간격과 같은 정보가 있습니다. 상태 확인 간격 내에 200 응답 코드가 반환되면 해당 인스턴스는 정상으로 간주됩니다. 자세한 내용은 Classic Load Balancer의 인스턴스 상태 확인 단원을 참조하십시오.
일부 또는 모든 인스턴스의 현재 상태가 OutOfService이고 설명 필드에 Instance has failed at least
the Unhealthy Threshold number of health checks consecutively 메시지가 표시되는 경우, 인스턴스가 로드 밸런서 상태 확인에 실패한 것입니다. 다음은 살펴봐야 할 문제, 잠재적인 원인 및 문제를 해결하기 위해 수행할 수 있는 단계입니다.
문제
상태 확인 대상 페이지 오류
문제: 지정된 ping 포트 및 ping 경로(예: HTTP:80/index.html)의 인스턴스에 발행된 HTTP GET 요청은 200이 아닌 응답 코드를 수신합니다.
원인 1: 인스턴스에 대상 페이지가 구성되어 있지 않습니다.
솔루션 1: 등록된 각 인스턴스에서 대상 페이지(예: index.html)를 만들고 해당 경로를 ping 경로로 지정합니다.
원인 2: 응답의 Content-Length 헤더 값이 설정되어 있지 않습니다.
솔루션 2: 응답에 본문이 포함되어 있으면 0보다 크거나 같은 값으로 Content-Length 헤더를 설정하거나 Transfer-Encoding 값을 'chunked'로 설정합니다.
원인 3: 애플리케이션이 로드 밸런서에 요청을 받거나 200 응답 코드를 반환하도록 구성되어 있지 않습니다.
솔루션 3: 인스턴스에서 애플리케이션을 확인하여 원인을 검사합니다.
인스턴스 연결 시간 초과
문제: EC2 인스턴스에 대한 로드 밸런서의 상태 확인 요청이 시간 초과되거나 간헐적으로 실패합니다.
먼저 인스턴스와 직접 연결하여 문제를 확인합니다. 인스턴스의 프라이빗 IP 주소를 사용하여 네트워크 내에서 인스턴스에 연결하는 것이 좋습니다.
TCP 연결에 대해 다음 명령을 사용합니다.
telnet private-IP-address-of-the-instance port
HTTP 또는 HTTPS 연결에 대해 다음 명령을 사용합니다.
curl –I private-IP-address-of-the-instance:port/health-check-target-page
HTTP/HTTPS 연결을 사용하고 있고 200이 아닌 응답을 받고 있는 경우 상태 확인 대상 페이지 오류 단원을 참조하십시오. 직접 연결할 수 있는 경우 다음 사항을 확인합니다.
원인 1: 인스턴스가 구성된 응답 제한 시간 내에 응답하지 않습니다.
솔루션 1: 로드 밸런서 상태 확인 구성에서 응답 제한 시간을 조정합니다.
원인 2: 인스턴스에 상당한 로드가 발생했으며 구성된 응답 제한 시간보다 응답을 하는 데 오래 걸립니다.
솔루션 2:
-
CPU의 과다 사용에 대한 모니터링 그래프를 확인합니다. 자세한 내용은 Amazon EC2 사용 설명서의 특정 EC2 인스턴스에 대한 통계 가져오기를 참조하세요.
EC2 인스턴스에 연결하여 메모리 또는 한도 같은 다른 애플리케이션 리소스의 사용률을 확인합니다.
필요에 따라 인스턴스를 더 추가하거나 Auto Scaling을 활성화합니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서를 참조하세요.
원인 3: HTTP 또는 HTTPS 연결을 사용 중이며 ping 경로 필드에 지정된 대상 페이지(예: HTTP:80/index.html) 상태 확인이 수행되고 있는 경우, 대상 페이지가 응답하는 데 구성된 제한 시간보다 오래 걸릴 수 있습니다.
솔루션 3: 더 간단한 상태 확인 대상 페이지를 사용하거나 상태 확인 간격 설정을 조정합니다.
퍼블릭 키 인증이 실패함
문제: 백엔드 인증이 활성화된 HTTPS 또는 SSL 프로토콜을 사용하도록 구성된 로드 밸런서가 퍼블릭 키 인증을 실패합니다.
원인: SSL 인증서의 퍼블릭 키가 로드 밸런서에 구성된 퍼블릭 키와 일치하지 않습니다. s_client 명령을 사용하여 인증서 체인에 있는 서버 인증서 목록을 확인합니다. 자세한 내용은 OpenSSL 설명서의 s_client
솔루션: SSL 인증서를 업데이트해야 할 수 있습니다. SSL 인증서가 최신 상태인 경우 로드 밸런서에 SSL 인증서를 다시 설치해 봅니다. 자세한 내용은 Classic Load Balancer를 위한 SSL 인증서 교체 단원을 참조하십시오.
인스턴스가 로드 밸런서에서 트래픽을 수신하지 않음
문제: 인스턴스에 대한 보안 그룹이 로드 밸런서의 트래픽을 차단하고 있습니다.
인스턴스에서 패킷을 캡처하여 문제를 확인합니다. 다음 명령을 사용합니다.
# tcpdump port health-check-port
원인 1: 인스턴스와 연결된 보안 그룹에서 로드 밸런서의 트래픽을 허용하지 않습니다.
솔루션 1: 로드 밸런서의 트래픽을 허용하도록 인스턴스 보안 그룹을 편집합니다. 로드 밸런서 보안 그룹의 모든 트래픽을 허용하는 규칙을 추가합니다.
원인 2: 로드 밸런서의 보안 그룹은 EC2 인스턴스에 대한 트래픽을 허용하지 않습니다.
솔루션 2: 로드 밸런서의 보안 그룹을 편집하여 서브넷 및 EC2 인스턴스에 대한 트래픽을 허용합니다.
보안 그룹 관리에 대한 자세한 내용은 Classic Load Balancer 보안 그룹 구성을(를) 참조하세요.
인스턴스의 포트가 열려 있지 않음
문제: 로드 밸런서가 EC2 인스턴스로 전송한 상태 확인이 포트 또는 방화벽에 의해 차단됩니다.
다음 명령을 사용하여 문제를 확인합니다.
netstat –ant
원인: 지정된 상태 확인 포트 또는 리스너 포트(다르게 구성된 경우)가 열려 있지 않습니다. 상태 확인을 위해 지정된 포트와 리스너 포트는 모두 열려 있어야 하며 수신 대기해야 합니다.
솔루션: 인스턴스의 상태 확인 구성에 지정된 리스너 포트 및 포트를 열고(다르게 구성된 경우) 로드 밸런서 트래픽을 수신합니다.
Auto Scaling 그룹의 인스턴스가 ELB 상태 확인에 실패함
문제: Auto Scaling 그룹의 인스턴스는 기본 Auto Scaling 상태 확인을 통과했지만 ELB 상태 확인은 통과하지 못했습니다.
원인 :Auto Scaling은 EC2 상태 확인을 사용하여 인스턴스의 하드웨어 및 소프트웨어 문제를 감지하지만, 로드 밸런서는 인스턴스에 요청을 보내고 200 응답 코드를 기다리거나 인스턴스와 TCP 연결을 설정(TCP 기반 상태 확인)하여 상태 확인을 수행합니다.
인스턴스에서 실행 중인 애플리케이션에는 로드 밸런서가 인스턴스를 서비스에서 제외시키는 것을 고려하게 하는 문제가 있기 때문에 인스턴스가 ELB 상태 확인을 실패할 수 있습니다. 이 인스턴스는 Auto Scaling 상태 확인을 통과할 수 있습니다. 즉, EC2 상태 확인을 기반으로 정상적으로 간주되기 때문에 Auto Scaling 정책에 의해 대체되지 않습니다.
솔루션: Auto Scaling 그룹에 대해 ELB 상태 확인을 사용합니다. ELB 상태 확인을 사용하면 Auto Scaling은 인스턴스 상태 확인과 ELB 상태 확인의 결과를 점검하여 인스턴스의 상태를 판단합니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서의 Auto Scaling 그룹에 ELB 상태 확인 추가를 참조하세요. Amazon EC2 Auto Scaling