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포트로 포트 포워딩을 진행하지 않은 상태.
원인:
- 로드밸런서에는 80포트와 8080포트가 등록되어 있지만, 실제 대상 그룹에는 80포트만 등록되어 있다. 즉, 로드 밸런서는 80, 8080포트로 들어오는 트래픽을 대상 그룹의 80포트로만 전달하려고 한다.
- 실제 애플리케이션은 톰캣을 사용하여 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과 로드밸런서의 설정을 일관되게 하지 않아 접속이 안 돼서 애먹었었지... 같은 실수하지 않도록 신경 쓰자..😞