Redis Sentinel 소개 및 핵심 기능
Sentinel은 Redis 클러스터 아키텍처에서 핵심적인 구성 요소로 작동하며 다음과 같은 주요 역할을 수행합니다:
- 모니터링: Redis 마스터 및 슬레이브 프로세스의 상태를 지속적으로 감시
- 알림 시스템: 장애 발생 시 관리자에게 즉시 경고 메시지 전송
- 자동 장애 복구: 마스터 노드 다운 시 자동으로 슬레이브 노드로 전환
- 설정 관리: 장애 전환 후 클라이언트에 새로운 마스터 주소 제공
Sentinel은 분산 구조로 설계되어 여러 인스턴스가 협력하여 동작하며, 분산 선택 알고리즘을 통해 신뢰성을 확보합니다.
Sentinel 운영 원칙과 제약사항
안정적인 운영을 위해 다음 사항을 준수해야 합니다:
- 최소 3개 이상의 Sentinel 인스턴스 필요
- Sentinel + Redis 마스터-슬레이브 구성은 데이터 무손실을 보장하지 않음
- 프로덕션 환경 적용 전 충분한 테스트 필수
2노드 구성의 한계
Sentinel 클러스터가 2개 노드만으로 구성될 경우 정상 작동이 불가능합니다. 이는 과반수(majority) 판단 기준이 2개 중 2개가 되어 단일 노드 장애 시 의사결정이 불가능하기 때문입니다.
표준 3노드 구성 예시
+----+
| M1 |
| S1 |
+----+
|
+----+ | +----+
| R2 |----+----| R3 |
| S2 | | S3 |
+----+ +----+
이 구성에서는 마스터 노드 장애 시 잔존하는 2개 Sentinel(S2, S3)이 과반수를 형성하여 정상적인 장애 전환을 수행할 수 있습니다.
데이터 손실 문제와 대응 방안
주요 손실 시나리오
- 비동기 복제 지연: 마스터에서 슬레이브로 데이터 전송 중 장애 발생
- 네트워크 분할(브레인 스플릿): 마스터와 슬레이브 간 연결 끊김으로 인한 이중 마스터 상황
손실 최소화 설정
min-slaves-to-write 1 min-slaves-max-lag 10
위 설정을 통해 최소 1개 슬레이브가 존재하고 복제 지연이 10초 이내여야만 쓰기 작업이 허용되며, 브레인 스플릿 상황에서도 최대 10초 분량의 데이터만 손실됩니다.
Sentinel 내부 동작 원리
장애 감지 메커니즘
- SDOWN: 단일 Sentinel의 주관적 판단으로 마스터 다운 감지
- ODOWN: 설정된 quorum 수 이상의 Sentinel이 SDOWN 판단 시 객관적 다운으로 전환
클러스터 자동 발견
Sentinel 간 통신은 Redis의 Pub/Sub 시스템을 활용하며, __sentinel__:hello 채널을 통해 각 노드의 존재와 상태를 공유합니다.
슬레이브 선출 알고리즘
마스터 장애 시 다음 순서로 새로운 마스터를 선출합니다:
- 슬레이브 우선순위(priority) - 값이 낮을수록 우선
- 복제 오프셋(offset) - 더 많은 데이터를 보유한 슬레이브 우선
- 런타임 ID(runid) - 사전순으로 작은 값을 가진 슬레이브 선택
Sentinel 배포 구성
기본 설정 예시
port 26379 bind 192.168.1.132 dir /var/sentinel/26379 sentinel monitor mymaster 192.168.1.132 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 protected-mode no sentinel auth-pass mymaster redis-pass daemonize yes logfile /var/log/sentinel/sentinel.log
상태 확인 명령어
redis-cli -h 192.168.1.132 -p 26379 > SENTINEL master mymaster > SENTINEL slaves mymaster > SENTINEL sentinels mymaster > SENTINEL get-master-addr-by-name mymaster
운영 관리 절차
Sentinel 노드 추가/삭제
- 추가: 자동 발견 기능 활용
- 삭제: 프로세스 종료 후 모든 Sentinel에서
SENTINEL RESET *실행
슬레이브 우선순위 설정
slave-priority 100 # 값이 작을수록 마스터 선출 시 우선순위 높음
장애 복구 테스트 절차
- 현재 마스터 상태 확인
- 마스터 프로세스 강제 종료
- Sentinel 로그에서 장애 감지 및 전환 과정 모니터링
- 새로운 마스터 정상 작동 검증
- 기존 마스터 재시작 후 슬레이브 자동 전환 확인
이러한 절차를 통해 Redis Sentinel 기반의 고가용성 아키텍처를 안정적으로 운영할 수 있습니다.