# TargetGroup의 Unhealthy 상태 체크 및 테스트
1. TG가 Unhealthy 상태가 되는 조건을 살펴보기
1-1. HealthCheck 실패, ELB를 사용하는 경우 정의된 헬스체크를 통과해야 한다. 보통은 해당 서비스가 설정된 트래픽 포트로 HealthCheck를 진행하고, 별도의 지정된 포트를 통해 HealthCheck를 수행할 수 있다. 내용은 아래를 참고.
TargetGrpup를 보면 상태 검사라는 항목이 있다. 해당 항목에서 해당 포트에 대한 애플리케이션이 정상적으로 동작 하고 있는지 HealchCheck를 할 수 있다. 아래와 같이 해당 포트가 설정된 TCP 포트를 통해서 HealthCheck를 수행할 수 있고, 재 정의 항목을 선택하여 HealthCheck 경로를 재 정의 할 수 있다.
2. HealthCheck 동작을 보면 아래와 같다.
일단 애플리케이션이 현재 동작하지 않으므로, HealthCheck는 Unhealthy 상태로 확인 된다.
서버에 붙어서 프로그램을 기동 시켜보자.
일단 테스트 애플리케이션의 포트는 6300 이므로 NLB_DNS:6300으로 접근을 해보면 아래와 같다.
애플리케이션을 실행 후 6300이 속한 NLB의 TG를 보면 아래와 같이 바뀐 것을 확인할 수 있다. (약 넉넉잡아 5분 정도 시간이 필요하다.)
3. 애플리케이션과 AWS TG 상태를 확인하기 (정리하기)
- 애플리케이션의 상태 (로컬에서 → NLB DNS:6300로 접근)
- 코드는 아래의 GitHub 참고 ( Server, Client)
https://github.com/Nanninggu/Test-Case-TCP-IP-Server
https://github.com/Nanninggu/Test-Case-TCP-IP-Client
- NLB TG 상태 체크
추가로...!
- HealthCheck 시 애플리케이션에서 발생할 수 있는 에러는 아래와 같다.
일단 TCP를 연결할 땐 HealthCheck를 빼고 하는 게 만일을 대비해서 좋을 거 같다.
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:91)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:53)
at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:58)
Caused by: java.lang.StringIndexOutOfBoundsException: offset 0, count -1, length 1024
at java.base/java.lang.String.checkBoundsOffCount(String.java:4591)
at java.base/java.lang.String.<init>(String.java:523)
at java.base/java.lang.String.<init>(String.java:1417)
at com.example.tcp_ip_test.SimpleServer.serverForTCPIP(SimpleServer.java:27)
at com.example.tcp_ip_test.TcpIpTestApplication.main(TcpIpTestApplication.java:13)
3.1 마지막으로, 정리를 하면 아래와 같다.
- TCP/IP 내용 정리는 아래 참고
2024.03.25 - [네트워크/TCP IP] - TCP/IP 소켓 프로그래밍 정리
Process 정리
- User → NLB → TG → Application의 흐름을 나타낸다.
2024.03.06 - [⭐ AWS/Load Balancing & TargetGroup] - TargetGroup(대상 그룹) IP 및 HealthCheck
- HealthCheck는 소켓 프로그래밍에서 bind() API를 호출 후 운영체제가 Socket을 할당 하고 할당 후 Listen()상태가 됐을때 랜덤 포트로 해당 소켓이 살아 있는지 체크 후 Healthy와 Unhealthy를 판단하여 화면에 표시한다.
- 끝 -
'⭐ AWS > Load Balancing & TargetGroup' 카테고리의 다른 글
TG의 Health Check 정리 (0) | 2024.03.25 |
---|---|
TargetGroup(대상 그룹) IP 및 HealthCheck (0) | 2024.03.06 |
대상그룹 (TargetGroup) 정리 (0) | 2024.01.18 |
대상그룹 (TargetGroup) 생성하고 리스너에 등록하기 (0) | 2023.03.17 |
ALB 리스너 규칙 정리 / /api (0) | 2022.07.12 |