Redis Sentinel 아키텍처의 기본 개념과 운영 관리

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)이 과반수를 형성하여 정상적인 장애 전환을 수행할 수 있습니다.

데이터 손실 문제와 대응 방안

주요 손실 시나리오

  1. 비동기 복제 지연: 마스터에서 슬레이브로 데이터 전송 중 장애 발생
  2. 네트워크 분할(브레인 스플릿): 마스터와 슬레이브 간 연결 끊김으로 인한 이중 마스터 상황

손실 최소화 설정

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 채널을 통해 각 노드의 존재와 상태를 공유합니다.

슬레이브 선출 알고리즘

마스터 장애 시 다음 순서로 새로운 마스터를 선출합니다:

  1. 슬레이브 우선순위(priority) - 값이 낮을수록 우선
  2. 복제 오프셋(offset) - 더 많은 데이터를 보유한 슬레이브 우선
  3. 런타임 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  # 값이 작을수록 마스터 선출 시 우선순위 높음

장애 복구 테스트 절차

  1. 현재 마스터 상태 확인
  2. 마스터 프로세스 강제 종료
  3. Sentinel 로그에서 장애 감지 및 전환 과정 모니터링
  4. 새로운 마스터 정상 작동 검증
  5. 기존 마스터 재시작 후 슬레이브 자동 전환 확인

이러한 절차를 통해 Redis Sentinel 기반의 고가용성 아키텍처를 안정적으로 운영할 수 있습니다.

태그: Redis Sentinel high-availability database-clustering fault-tolerance

6월 27일 23:39에 게시됨