강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Cola님의 프로필 이미지
Cola

작성한 질문수

비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)

[해설 강의] ALB 배치하기

Unhealthy

작성

·

40

0

대상그룹 설정 후 server-a, server-b가 Unhealthy상태가 되어서

dns주소로 health체크가 제대로 되지 않네요..

502에러 504에러가 뜹니다.. 계속 마지막 단계에서 못넘어가네요

영상보고 똑같이 따라했는데 원인을 못찾겠습니다ㅠㅠ

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 ! 질문 잘 해주셨어요 ~

질문해주신 내용에 답변 드려볼게요 !

우선 말씀해주신 상황을 보면 ALB의 대상 그룹(Target Group)에서 설정한 Health Check가 정상적으로 동작하지 않아 server-a와 server-b가 Unhealthy 상태로 표시되는 것으로 보여요 ~

이 경우 ALB가 백엔드 서버가 정상이라고 판단하지 못하기 때문에 DNS 주소로 접속했을 때 502 또는 504 에러가 발생할 수 있어요 !

이 경우 몇 가지 원인을 하나씩 확인해보시면서 디버깅 하시는걸 추천드려요 !

우선 가장 먼저 확인해보셔야 할 부분은 instagram-server-a와 instagram-server-b에서 Spring Boot 애플리케이션이 실제로 80번 포트에서 정상적으로 실행되고 있는지 확인해보세요 !

Bastion Host를 통해 각 백엔드 서버에 SSH로 접속하신 다음에 sudo lsof -i:80 명령어로 80번 포트를 사용하고 있는 프로세스가 있는지 확인해보시고, curl localhost:80/health 명령어로 응답이 정상적으로 오는지도 확인해보세요!

그 다음으로 확인해보실 부분은 대상 그룹의 상태검사 경로 설정인데요, 혹시 이 경로가 다르게 설정되어 있지는 않은지 확인해보시면 좋을 것 같아요 !

그리고 백엔드 인스턴스의 보안 그룹도 체크해보시는걸 추천드려요 !

instagram-server-security-group의 인바운드 규칙에서 HTTP(80번 포트)에 대해 트래픽을 허용하고 있는지 확인해보세요 !

ALB가 백엔드 서버로 헬스체크 요청을 보낼 때도 80번 포트를 통해 보내기 때문에, 보안 그룹에서 이 트래픽이 막혀있으면 Unhealthy 상태가 돼요 !

마지막으로 ALB의 서브넷 설정이 퍼블릭 서브넷(instagram-public-subnet-a, instagram-public-subnet-b)으로 제대로 되어 있는지, 그리고 대상 그룹에 등록한 인스턴스가 실제로 instagram-server-a, instagram-server-b가 맞는지도 한 번 확인해보세요 !

위 사항들을 하나씩 확인해보시고, 그래도 해결이 안 되시면 각 단계별로 어떤 결과가 나오는지 알려주시면 같이 원인을 찾아볼게요~~

추가로 궁금하신 점 있으시면 언제든 편하게 추가 질문 남겨주세요~~

Cola님의 프로필 이미지
Cola
질문자

따로 건드린건 없는데 시간이 지나니 Unhealthy가 정상으로 돌아와서 테스트 완료했습니다..원인을 찾지 못해 찝찝하네요.

답변 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. Cola님.

ELB 설정 과정에서 서버가 Unhealthy 상태로 나타나고, 502 또는 504 오류가 발생하는 상황에 대해 도움을 드릴 수 있는 몇 가지 확인 사항을 안내해드리겠습니다.

  1. Target Group 설정 확인:

    • 모든 인스턴스가 Target Group에 올바르게 등록되었는지 확인하세요. 또한, Target Group의 헬스 체크 설정이 올바른 경로와 HTTP 코드를 사용하고 있는지 검토해 보세요.
  2. 헬스 체크 경로 확인:

    • 각 서버의 헬스 체크 경로가 존재하고 정상적으로 응답하는지 확인하세요. (http://server/healthcheck) 등의 경로에 올바르게 응답해야 합니다.
  3. 보안 그룹 및 네트워크 설정:

    • EC2 인스턴스와 ELB의 보안 그룹이 열려 있는지, 필요한 포트(예: HTTP의 경우 80 또는 443번 포트)가 열려 있는지 확인하세요.
  4. 서버 애플리케이션 상태:

    • 서버 애플리케이션이 정상적으로 실행 중인지, 서버 내에서 자체적으로 URL에 접근했을 때 정상적으로 응답하는지 확인해 보세요.
  5. 로그 확인:

    • 서버와 ELB의 로그 파일을 확인하여 보다 구체적으로 어떤 요청이 실패하고 있는지 살펴보세요. 특히, CloudWatch 로그를 통해 요청이 오는지 및 오류의 원인을 확인할 수 있습니다.

유사한 문제와 관련하여 다음 링크들이 도움이 될 수 있습니다:
- ELB 설정 후 인스턴스 상태가 Unhealthy한 이유
- HTTP 502, 504 Gateway Timeout Error 해결 방법

위의 내용을 바탕으로 설정을 다시 점검해 보시고, 문제가 지속될 경우 추가적인 기술 지원을 요청해 보시는 것도 좋은 방법입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Cola님의 프로필 이미지
Cola

작성한 질문수

질문하기