Keepalived Health Check의 핵심 아키텍처
Keepalived의 Health Check 프레임워크는 VRRP 서브시스템과 완전히 독립적인 자식 프로세스에서 실행됩니다. 이 설계는 VRRP의 타이밍 지터를 최소화하면서 Health Check 작업이 중요한 VRRP 경로를 방해하지 않도록 격리합니다. 각 자식 프로세스는 독립적인 스케줄링 I/O 멀티플렉서를 소유하여 리얼타임 네트워킹 동작을 보장합니다.
체커(Checker)는 여러 레이어 4~7 프로토콜로 실제 서버의 생존 여부를 검사하고 이진 결정(remove/add to LVS topology)을 내립니다. 모든 Health Check는 전역 스케줄링 프레임워크에 등록되며 멀티스레드 유한상태기계(FSM) 기반으로 구현됩니다. 이는 고속 프로토콜 상호작용과 나노초 단위의 정밀한 타이밍을 필요로 하는 인프라 환경에서 확장성을 제공합니다.
주요 Health Check 메커니즘과 실무 고려사항
- 프로토콜별 검증: TCP_CHECK로 기본 포트 연결성을 확인하고, HTTP_GET/SSL_GET으로 애플리케이션 레이어의 응답을 검증합니다. connect_timeout, retry, delay_before_retry 파라미터로 타임아웃 및 재시도 동작을 세밀하게 제어할 수 있습니다.
- 커스텀 스크립트 기반 검사: track_file, track_process, 임의 스크립트 실행으로 복잡한 비즈니스 로직 검증이 가능합니다. 스크립트 반환값 0은 성공, 비영값은 장애로 판정하며, 장애 검출 시 FAULT 상태로 전이됩니다.
- 우선순위 동적 조정: 서비스 장애 시 체크 가중치에 따라 VRRP 우선순위가 감소하여 자동 failover가 발생합니다. 이는 마스터가 완전히 다운되지 않더라도 응답 불능 상태에서 벗어날 수 있게 합니다.