수천 대의 마이크로서비스가 동시에 접근하는 대규모 분산 환경에서는 Redis 단일 노드의 장애가 전체 서비스의 중단으로 이어지지 않도록 하는 자동화된 장애 조치(Failover) 메커니즘이 필수적이다.
Redis의 고가용성(HA)을 달성하기 위한 방법을 알아보자.
Redis는 **마스터-슬레이브(Master-Slave) 구조의 비동기 복제(Asynchronous Replication)**를 기본으로 채택하고 있다.
Redis의 복제는 마스터가 명령어를 처리한 후, 이를 슬레이브에 비동기적으로 전파하는 방식이다.
이러한 데이터 유실 가능성을 최소화하기 위해 min-replicas-to-write 옵션을 사용하여 최소 N개의 슬레이브가 정상적으로 연결되어 있을 때만 쓰기를 허용하도록 설정할 수 있다.
하지만 이는 가용성과 일관성 사이의 트레이드오프를 수반하며, 네트워크 분할 상황에서 전체 쓰기 거부로 이어질 수 있다.
Redis Sentinel은 단순한 모니터링 도구가 아닌, Redis 인스턴스의 상태를 감시하고 장애 발생 시 사람의 개입 없이 자동으로 시스템을 복구하는 오케스트레이션 시스템이다.
Sentinel은 그 자체로 분산 시스템으로 설계되어 있으며, 단일 Sentinel의 오작동이 전체 시스템의 가용성을 해치지 않도록 설계되었다.