Today I Learned

[TIL] 23/07/06 AWS 인스턴스 재부팅 후 502 에러, 대상 그룹 Unhealthy 해결

jnk1m 2023. 7. 6. 18:29

문제:

AWS EC2 인스턴스를 중지하고 다시 시작한 이후 502 에러가 발생했다. 

재부팅 이전에는 로드밸런서를 포함하여 아무 문제 없이 잘 작동했는데 재부팅 이후로 사이트에 접속이 안되기 시작했다.

502 Bad Gateway 에러는 사용자의 요청이 뒷단의 서버까지 제대로 전달되지 않을 때 발생한다. 

이를 확인하기 위해 로드밸런서 보안 그룹, IP 연결 등등을 확인했으나 이상이 없었다.

 

대상 그룹(Target Group)에 들어와 확인해 보니 80 포트가 Unhealthy 상태였다.

 

조건:

1. 로드밸런서에는 80포트, 8080포트가 등록
2. 대상 그룹에는 80포트만 등록
3. 실제 애플리케이션은 80포트에서 8080포트로 포트 포워딩을 진행하지 않은 상태. 

 

원인:

  1. 로드밸런서에는 80포트와 8080포트가 등록되어 있지만, 실제 대상 그룹에는 80포트만 등록되어 있다. 즉, 로드 밸런서는 80, 8080포트로 들어오는 트래픽을 대상 그룹의 80포트로만 전달하려고 한다.
  2. 실제 애플리케이션은 톰캣을 사용하여 8080포트에서 실행되고 있다. 이때 80포트에서 8080포트로 포트 포워딩 설정이 없기 때문에 로드밸런서에게 전달받은 트래픽을 처리하지 못하는 것

해결 방법:

  • 포트 포워딩 설정: 서버에서 80 -> 8080 포트로 포트 포워딩하도록 설정한다. 
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
  • 대상 그룹 설정 변경: 대상 그룹 설정을 변경하여 8080 포트를 추가로 등록한다. 

 

👉 로드밸런서, 대상그룹, 어플리케이션 서버의 일관된 설정의 중요함을 느꼈다.... HTTPS 설정할 때도 Route53과 로드밸런서의 설정을 일관되게 하지 않아 접속이 안 돼서 애먹었었지... 같은 실수하지 않도록 신경 쓰자..😞