본문 바로가기

사는 이야기/펌킨도서관

L4 스위치 헬스 체크 동작 원리

펌킨네트웍스 기술팀 김하늘 님이 작성한 L4 스위치 헬스 체크 동작 원리에 대한 글을 공유합니다.
L4 스위치는 부하 분산을 제공하는 서버의 서비스 가능 여부를 확인하기 위하여 ‘헬스 체크(Health Check)’ 방식으로 서버에 패킷을 보내 상태 여부에 따라 부하 분산을 진행합니다. L3 스위치로도 헬스 체크를 할 수 있지만 ICMP와 ARP 부분으로만 확인할 수 있습니다. 서버에서 동작 중인 서비스 별로 관리할 수는 없죠. L4 스위치는 각각의 서비스 타입 별로 확인이 가능하기 때문에 서버에서 운영 중인 환경에 따라 세세하게 관리가 가능합니다.


다음은 L4 스위치에서 서버로 보낸 헬스 체크 패킷에 대한 예입니다.


펌킨네트웍스 AEN 시리즈는 기본적으로 5초마다 헬스 체크 패킷을 보내며 3회 시도까지 서버에서의 응답이 없다면 서비스가 불가능 하다고 판단하여 부하 분산에서 제외합니다. 헬스 체크 패킷의 전송 간격과 횟수는 설정에서 조정이 가능하며 'AND'와 'OR' 옵션을 이용해 특정 조건을 만족할 때 헬스 체크가 성공하도록 설정할 수도 있습니다.


확인하고자 하는 대상에 대한 헬스 체크 유형을 선택할 수 있는 데, 각각의 조건은 다음과 같이 설명할 수 있습니다.
  • ICMP : ICMP Echo Request / Reply를 이용한 검사로 FWLB나 VPNLB 같은 경우에 헬스 체크 패킷에 대한 응답은 수신한 방향으로 송신

  • LINK : 서비스 설정에 별도로 등록되어 있는 Port Link 상태에 따라 헬스 체크 여부 확인

  • ARP : 헬스 체크를 등록한 IP와 MAC이 ARP Table에 존재하는지 대조하여 확인

  • TCP : TCP 패킷으로 해당 서비스 포트를 확인하며, 서버에서의 Half-Open을 방지하기 위해 확인이 끝난 뒤 RST를 전송, 서비스의 라우팅 방식이 DSR인 경우에는 서버의 VIP 설정을 확인

  • UDP : UDP 패킷으로 해당 서비스 포트를 확인하며, UDP 특성상 응답이 없으면 정상, Port Unreachable을 받으면 비정상으로 판별하므로 통상적으로 ICMP 체크와 AND로 조합하여 사용

  • Contents: URL, 호스트 네임에 대하여 확인 HTTP 200 OK(임의 설정 가능)을 통해 서버 상태 판별

설정을 마친 후 구동 중인 시스템의 상태 확인은 다음과 같이 할 수 있습니다. 아래 그림은 ICMP만 확인한 것 입니다.


다음 화면은 ICMP와 TCP 4443 Port를 AND하여 둘다 조건이 만족하는지 확인한 결과입니다.


참고로 확인되지 않는 포트를 AND로 하면 모든 조건이 만족하지 못하여 전체 헬스 체크가 FAIL 상태로 뜹니다.



확인되지 않는 포트를 OR로 하면 해당 부분만 FAIL 처리하고 나머지는 정상으로 확인됩니다.