팀원끼리 퀴즈를 푸는 시간을 가졌었습니다. 퀴즈는 오류상황을 전달받고 왜 오류가 발생했는지 파악하는 문제였습니다. 막상 퀴즈를 제가 풀려고 하니 못 풀었습니다. 퀴즈 정답을 듣고 관련된 개념을 정리하고자 글을 작성합니다.
퀴즈
잘 실행되었던 웹 애플리케이션이 갑자기 연결에러가 발생했습니다. 그 원인을 찾는게 퀴즈였습니다.
웹 애플리케이션은 EC2 인스턴스에 실행되고 있고 NLB, Route53에 연결되어 있습니다.
모든 aws서비스는 상태가 정상입니다.
- EC2 인스턴스는 on-demand이고 웹 애플리케이션은 잘 실행되고 있다.
- NLB healthy check는 정상이다.
- route53에 NLB 접속주소를 잘 등록했다.
퀴즈 정답
NLB가 재생성되어서 접속오류가 발생합니다. NLB는 설정을 수정하면 재생성되고 접속주소(DNS name, IP)가 변경됩니다. Route53은 이전 NLB접속주소로 설정되어 있기 때문에, 사용자는 존재하지 않는 주소로 연결요청을 합니다.
해결방법
가장 좋은 해결방법은 NLB IP를 고정IP로 설정하는 것입니다. NLB IP를 고정으로 설정하면 NLB가 재생성되더라도 IP가 변하지 않습니다. Route53은 NLB 고정 IP로 레코드를 설정하면 NLB 재생성 되는 상황을 고려하지 않아도 됩니다.
느낀점
퀴즈 후에 두가지를 느꼈는데요.
첫 번째, 트러블슈팅 포인트를 파악하자입니다. 연결오류는 애플리케이션 오류가 아니라 네트워크 오류이기 때문에 애플리케이션을 먼저 분석할 필요가 없었습니다.
두 번째 AWS 리소스 세부사항을 잘 이해하자입니다. 트러블슈팅 포인트를 잘못잡은 것도 있지만 NLB가 재부팅되면 접속주소가 바뀐다는 것을 잘 몰랐습니다. 그리고 현업에서는 고정 IP를 적극 사용하는 것을 생각했습니다.
예제코드
퀴즈를 직접 재현해보고 싶으면 예제코드를 실행하시면 됩니다. 제 github에 공개되어 있습니다. 테라폼으로 aws리소스를 구성했습니다. 예제코드 실행방법은 제 유투브를 참조해주시면 감사하겠습니다.
- github 주소: https://github.com/sungwook-practice/route53_and_nlb_trouble
- 유투브: https://youtu.be/tJqbDPi4Hu4?t=719
'전공영역 공부 기록' 카테고리의 다른 글
Dockerfile ENTRYPOINT에 arg를 사용가능한지 테스트 (0) | 2023.08.08 |
---|---|
Argocd rbac 테스트 (0) | 2023.08.06 |
DNS 이해 (1) | 2023.07.21 |
쿠버네티스 kubectl 유틸리티 도구 (0) | 2023.07.08 |
linux에서 GPU card목록 확인 (0) | 2023.06.23 |