네트워크

클러스터 환경에서 클러스터 노드 간의 상태를 모니터링을 할 수 있는 HeartBeat에 대해 알아보겠습니다.

forward error correction Circle 2025. 1. 24. 08:23
반응형

Ⅰ. Heartbeat 통신이란?

 고가용성(HA, High Availability) 클러스터 환경에서 클러스터 노드 간의 상태를 모니터링하고, 노드의 장애를 감지하기 위해 사용되는 핵심 메커니즘입니다. 노드들은 주기적으로 서로 "심장 박동" 신호(heartbeat)를 주고받으며, 이 신호가 끊기거나 지연되면 장애로 간주하여 자동으로 복구 조치를 수행합니다.

Ⅱ. Heartbeat 통신의 개념

 ⅰ. 역할
클러스터에 있는 각 노드가 활성 상태인지 확인하고, 장애가 발생했을 때 다른 노드가 이를 감지하여 즉시 페일오버(Failover)를 트리거합니다.
 ⅱ. 원리
노드들은 특정 주기(보통 수 초 이내)로 서로 패킷(Heartbeat 메시지)을 주고받아 상태를 확인합니다.
 1) 정상: Heartbeat 신호가 규칙적으로 전달됨.
 2) 장애: 일정 시간 동안 Heartbeat 신호가 전달되지 않으면 노드가 비정상 상태로 간주.

Ⅲ. Heartbeat 통신의 주요 구성 요소

 ⅰ. Heartbeat 메시지
   1) 클러스터 노드 간에 주고받는 간단한 상태 정보.
   2) 메시지에는 노드의 식별 정보(ID), 상태 정보, 타임스탬프 등이 포함됩니다.
 ⅱ. Heartbeat 인터페이스
   1) 통신에 사용되는 네트워크 인터페이스(예: Ethernet, 무선 네트워크, 직렬 포트).
   2) 일반적으로 전용 네트워크를 사용하여 클러스터 통신의 안정성을 높임.
 ⅲ. Heartbeat 타이머
   1) 메시지가 도착하지 않는 시간(타임아웃)을 측정하여 노드 상태를 평가.
   2) 타임아웃 값이 초과되면 장애로 간주.
 ⅳ. Heartbeat 다중 경로 지원
   1) Heartbeat 통신이 단일 네트워크 경로에 의존하지 않도록 여러 경로를 사용할 수 있음.
      : Ethernet + 직렬 포트를 조합하여 통신.

Ⅳ. Heartbeat 통신 방식

구분 설명 장점 단점
Unicast(유니캐스트) 1) 특정 노드에만 Heartbeat 메시지를 전송.
2) 노드 간 1:1 통신 방식.
효율적이고, 네트워크 트래픽이 적음. 네트워크 장애 시 다른 경로로 메시지를 전달할 수 없음.
Multicast(멀티캐스트) 클러스터에 속한 모든 노드에 동시에 Heartbeat 메시지를 전송. 여러 노드가 동시에 상태 정보를 받을 수 있어 다중 노드 환경에 적합. 네트워크 구성에 따라 멀티캐스트 트래픽이 제한될 수 있음.
Broadcast(브로드캐스트) 네트워크 내 모든 노드에 Heartbeat 메시지를 전송. 네트워크 구성에 상관없이 동작. 네트워크 트래픽 증가 및 보안 문제가 발생할 가능성.

Ⅴ. Heartbeat 통신의 특징

  ⅰ. 주기적 메시징
     1) 정해진 주기로 상태 확인을 위해 메시지가 교환됩니다.
     2) 빠른 장애 감지
     3) Heartbeat 타임아웃 설정을 통해 수 초 이내에 장애를 감지할 수 있습니다.
 ⅱ. 다중 인터페이스 지원
     : 네트워크 인터페이스뿐만 아니라 직렬 포트 또는 가상 인터페이스를 통해 통신.
 ⅲ. 네트워크 독립성
     : 전용 네트워크를 사용할 수 있으며, 장애 시 네트워크 경로를 변경 가능.
 ⅳ. 확장성
     : 2노드 클러스터뿐만 아니라 다중 노드 환경에서도 작동 가능.

Ⅵ. Heartbeat 통신의 장점

 ⅰ. 장애 탐지 속도
    : 장애 발생 시 즉각적으로 감지하고 복구 조치를 트리거.
 ⅱ. 서비스 연속성 보장
    : 장애를 감지하고 페일오버를 수행해 서비스 중단 최소화.
 ⅲ. 유연한 구성
    : 다양한 통신 경로와 방식을 지원해 복잡한 네트워크 환경에서도 안정적 운영.
 ⅳ. 데이터 보호
    : 클러스터의 다른 노드로 데이터 및 서비스를 안전하게 전환 가능.

Ⅶ. Heartbeat 통신의 한계 및 문제점

 ⅰ. 네트워크 장애 오판 가능성(Split Brain)
   1) Heartbeat가 끊겼을 때 네트워크 문제인지 노드 장애인지 구분하기 어려움.
   2) Split Brain은 각 노드가 서로 독립적으로 활성화되면서 데이터 불일치가 발생할 수 있음.
 ⅱ. 단일 경로 의존 문제
   : 단일 경로 사용 시, 해당 경로의 장애로 인해 Heartbeat 신호가 전달되지 않을 위험.
 ⅲ. 정확도 제한
   : 타이머 설정이 너무 짧거나 길면, 정상 상태를 장애로 잘못 인식하거나 장애 탐지가 지연될 수 있음.

Ⅷ. Heartbeat 통신의 개선 방안

 ⅰ. 다중 Heartbeat 경로 구성
   : 이더넷, 직렬 포트, 전용 네트워크 등을 조합하여 여러 경로를 설정.
 ⅱ. Quorum 장치 사용
   : 클러스터 환경에서 Split Brain을 방지하기 위해 Quorum 장치(공유 스토리지 또는 외부 서비스)를 활용.
 ⅲ. 적절한 타임아웃 설정
   : 네트워크 환경과 애플리케이션 요구사항에 따라 타임아웃 값을 적절히 조정.
 ⅳ. 링크 감지 도구 활용
   : 네트워크 상태를 지속적으로 모니터링하여 링크 상태를 사전에 감지.

Ⅸ. Heartbeat 통신의 사용 사례

 ⅰ. LifeKeeper와 같은 HA 솔루션에서 클러스터 노드 간 상태 확인.
 ⅱ. 데이터베이스 클러스터에서 노드 상태 확인 및 페일오버.
 ⅲ. 웹 서버 이중화에서 Apache 또는 Nginx 서버의 가용성 유지.

반응형