본문 바로가기

⭐ AWS/Load Balancing & TargetGroup

TargetGroup의 Unhealthy 상태 체크

728x90
반응형

# 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

 

GitHub - Nanninggu/Test-Case-TCP-IP-Server: TCP/IP 테스트용 (서버)

TCP/IP 테스트용 (서버). Contribute to Nanninggu/Test-Case-TCP-IP-Server development by creating an account on GitHub.

github.com

https://github.com/Nanninggu/Test-Case-TCP-IP-Client

 

GitHub - Nanninggu/Test-Case-TCP-IP-Client: 테스트 케이스 클라이언트

테스트 케이스 클라이언트. Contribute to Nanninggu/Test-Case-TCP-IP-Client development by creating an account on GitHub.

github.com

- 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 소켓 프로그래밍 정리

 

TCP/IP 소켓 프로그래밍 정리

# TCP/IP 소켓 프로그래밍 정리 1. 소켓 이란? - 네트워크 환경에 연결할 수 있게 만들어진 연결부를 의미. OSI 7계층 중 4계층인 TCP 상에서 동작하는 소켓을 주로 사용, 이를 TCP 소켓 이라고 부른다. 2

may9noy.tistory.com

Process 정리

- User → NLB → TG → Application의 흐름을 나타낸다.

2024.03.06 - [⭐ AWS/Load Balancing & TargetGroup] - TargetGroup(대상 그룹) IP 및 HealthCheck

 

TargetGroup(대상 그룹) IP 및 HealthCheck

# TargetGroup 대상그룹 관련 내용 대상그룹 상태체크 내용을 변경해도 ip 변경 되지 않는다. - 대상그룹 상태체크 NLB IP는 해당 서브넷의 성격에 따라서 퍼블릭IP와 프라이빗IP가 부여된다. nslookup nlbd

may9noy.tistory.com

- HealthCheck는 소켓 프로그래밍에서 bind() API를 호출 후 운영체제가 Socket을 할당 하고 할당 후 Listen()상태가 됐을때 랜덤 포트로 해당 소켓이 살아 있는지 체크 후 Healthy와 Unhealthy를 판단하여 화면에 표시한다.

 

- 끝 -

728x90
반응형