Elastic Load Balancing을 사용하여 웹 사이트에 액세스할 수 없는 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

웹 사이트에 액세스할 수 없습니다. Elastic Load Balancing(ELB)을 사용하여 최종 사용자가 웹 사이트에 액세스할 수 없는 이유를 이해하려면 어떻게 해야 하나요?

간략한 설명

웹 사이트에 접속할 수 없는 문제에는 여러 가지 이유가 있습니다. 최상의 문제 해결 방법을 찾으려면 먼저 다음 질문을 확인하세요.

  • 웹 사이트에 접속할 수 없으며 브라우저 기본 시간 초과 페이지가 표시되나요?
  • 문제가 간헐적으로 발생하나요?
  • 지연 후 페이지가 로드되나요?
  • 페이지에 HTTP 5XX와 같은 오류가 표시되나요?

해결 방법

DNS 조회 및 비교 수행

이 문제가 발생한 도메인이 로드 밸런서 노드의 IP 주소로 올바르게 확인되는지 확인합니다. 이렇게 하면 클라이언트가 시도하는 연결 시도가 올바른 IP 주소로 전송됩니다.

1.    DNS 조회를 실시합니다.

dig <affected domain>

또는

nslookup <affected domain>

2.    이제 비교를 위해 로드 밸런서의 DNS에 DNS 조회를 실시합니다. 예:

dig lb-xxxxxxxxxx.us-east-1.elb.amazonaws.com

IP 주소 목록이 일치하면 이 확인에 성공한 것입니다. 로드 밸런서가 확장 상태인 경우 단일 DNS 응답에서 표시할 수 있는 IP 주소보다 더 많은 IP 주소가 있을 수 있습니다. 이 사용 사례에서는 이 비교가 충분하지 않을 수 있습니다. 모든 IP를 나열하려면 다중 DNS 쿼리를 실행해야 합니다.

백엔드/타겟의 상태 확인

백엔드/타겟 상태 확인의 상태를 확인합니다. 로드 밸런서에는 백엔드/타겟의 상태를 확인하는 데 사용하는 구성된 상태 확인이 있습니다. 로드 밸런서의 유형에 따라 비정상 백엔드/타겟이 라우팅에 영향을 줄 수 있습니다. 유형에 따라 로드 밸런서의 상태를 확인합니다.

참고:

  • 교차 영역 활성화 또는 비활성화는 요청이 NLB 및 CLB로 라우팅되는 방식에 영향을 줄 수 있습니다.
  • 트래픽 포트 이외의 포트에서 상태 확인을 구성할 수 있습니다. 이 경우 타겟/백엔드가 정상이더라도 타겟이 전송된 트래픽에 응답하지 않을 수 있습니다.

상태 확인에서 타겟이 비정상으로 표시되면 타겟/백엔드 인스턴스에서 서비스가 중단될 수 있습니다. 또는 로드 밸런서가 타겟/백엔드 인스턴스에서 응답을 받을 수 없습니다.

로드 밸런서의 노드에 직접 연결

로드 밸런서의 노드에 직접 연결합니다. 이 테스트는 이전에 확인된 DNS였던 로드 밸런서의 모든 IP 주소에 연결할 수 있는지를 확인합니다. 이 테스트로 특정 가용 영역(AZ) 서브넷에서만 문제가 발생하는지도 확인할 수 있습니다.

로드 밸런서의 IP 주소를 기록한 다음 이러한 IP 주소에 대한 연결을 한 번에 하나씩 시도합니다. 이 테스트에 브라우저를 사용하면 인증서 검증 및 호스트 헤더로 인해 작동하지 않을 수 있습니다. 대신 curl 도구를 사용하여 이 형식으로 이 확인을 수행하는 것이 가장 좋습니다. <protocol>, <ELB IP Address>, <port>, <path>, 및 <domain name>을 웹 설정의 올바른 값으로 바꿔야 합니다.

curl -lvk <protocol>://<ELB IP Address>:<port>/<path> -H "Host: <domain name>"

예:

Eg: curl -lvk https://3.2.1.1:443/test -H "Host: example.com"

시도에서 응답을 받으면 예상 응답인지 오류인지 확인합니다. 응답이 만족스러우면 다음 IP 주소를 확인합니다.

로드 밸런서에서 백엔드/타겟 문제 확인

로드 밸런서가 사용하는 모든 IP 주소에 대한 연결을 확인했다면 로드 밸런서와 타겟/백엔드의 통신 상태를 확인합니다.

1.    먼저 보안 그룹, 네트워크 ACL 및 라우팅을 확인합니다.

2.    이들이 액세스를 허용하는 경우 타겟/백엔드에 로그인합니다. 액세스를 설정한 후 이 명령을 사용하여 웹 서비스가 구성된 포트에서 수신 대기 중인지 확인합니다. 'port'를 타겟/백엔드의 수신 포트로 바꿉니다. 이 포트는 로드 밸런서에 타겟/백엔드를 등록할 때 사용되는 포트입니다.

Windows:

netstat -an | findstr "LISTEN" | findstr "port"

Linux:

netstat -an | grep LISTEN | grep "port"

3.    예상 수신 포트를 언급한 후에도 아무것도 표시되지 않으면 웹 서비스가 다운된 것입니다. 계속해서 서비스 상태 문제 해결을 진행합니다.

4.    응답에서 포트가 수신 대기 중이라고 표시되면 curl을 사용하여 포트에 연결을 시도합니다. <protocol>을 수신 애플리케이션 서비스로 바꾸고 <port>를 localhost 포트로 바꿉니다.

curl -lvk <protocol>://localhost:<port>

이 명령에서 응답을 받으면 웹 서비스가 작동하는 것입니다. 이 테스트 단계에서는 동일한 Amazon Virtual Private Cloud(Amazon VPC)에 있는 다른 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 연결을 시작할 수 있습니다. 이 연결 시도가 웹 서비스에 도달하여 응답을 받는지 확인합니다. 이 응답은 타겟/백엔드에 연결하려고 할 때 로드 밸런서가 수신하는 내용도 보여줍니다.


관련 정보

EC2 인스턴스에서 호스팅되는 응답하지 않는 웹 사이트 문제를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 2년 전