본문 바로가기
개발

Redis의 고가용성 전략(Sentinel, Clustering)

by 뿔난 도비 2025. 1. 19.
반응형

최근에 Redis가 고가용성을 어떻게 보장하는가?에 대한 면접 질문을 받게 되어서 조금 공부를 해보았습니다.

 

Redis의 고가용성 전략(Sentinel, Clustering)

 

Redis의 고가용성

 

1. Sentinel

2. Clustering

추천글

위의 목차를 클릭하면 해당 글로 자동 이동 합니다.

 

Sentinel

  • 먼저, Redis의 경우 데이터베이스 이중화와 동일하게 Replication(master-slave) 구조를 지원한다.
  • 사용자가 데이터를 조회하게 되면 마스터 노드 혹은 슬레이브 노드에서 데이터를 읽어온다.
  • 반면, 사용자가 데이터를 쓰게 되면 이것은 무조건 마스터 노드에만 적용된다.
  • 마스터 노드의 데이터가 변경되면 슬레이브들은 이 데이터를 동기화한다.
  • 마스터 노드 다운 시, 메모리에 저장된 것들이 사라지는데, 레플리카 노드의 존재로 인해 데이터의 유실을 막는다.
  • 장애 상황이 짧으면 마스터 노드를 바로 살리면 되지만, 길어지면 마스터 노드를 살리지 못하는 그 기간 동안의 데이터가 유실된다.
  • 이때, 레플리카 노드를 마스터로 승격하여 정상적으로 작동하게 만들 수 있다.
  • 그런데 이를 수작업으로 하게 되면 복잡하기 때문에 Sentinel이 등장한다.
  • 최소 3개 이상의 Sentinel이 마스터 노드와 슬레이브 노드를 모니터링한다.
  • 장애가 발생했을 때, 과반 수 이상의 Sentinel이 동의하면 슬레이브 노드가 마스터 노드로 승격하게 된다.
    • 이때, 3개 이상의 Sentinel을 쓰는 이유는 Sentinel 역시 다운될 수 있기 때문이라고 한다.
  • 애플리케이션은 마스터 노드나 슬레이브 노드에 직접적으로 연결하지 않는다.
  • 애플리케이션은 Sentinel과 연결되어 있으며, Sentinel을 통해 마스터 노드로 접근이 가능하다. 일종의 프록시라고 볼 수 있다.
  • 아래는 Sentinel 구조를 나타낸 그림이다.

Clustering

  • 간단하게 말하면 데이터베이스의 샤딩과 동일하다.
  • 하나의 데이터베이스를 쪼개서 여러 데이터베이스에 분할 저장하는 형태이다.
  • 샤딩을 통해 복수의 Redis에 데이터를 분할한다.
  • 각 샤드는 다시 마스터와 슬레이브로 구성된다.
  • 모든 마스터 노드와 슬레이브 노드들은 연결되어 있으며, 서로를 모니터링 한다.
  • 부하를 분산시킬 수 있기 때문에 사용자 입장에서는 속도가 빨라진다.
  • 센티널의 경우 확장성이 없으나 클러스터링은 확장성이 좋다.
  • 앞서 얘기한 바와 같이 클러스터링은 엑세스 속도가 빠르다.
  • 반면에 센티널의 경우 배포 및 관리가 용이하다.
  • 아래는 클러스터링의 구조를 나타낸 그림이다.

그림에서 마스터 노드 사이의 에지와 슬레이브 노드 사이의 에지가 그려지지 않은 오류가 있다. 이들 간에도 모니터링이 존재한다고 보면 된다.

 

데이터베이스 이중화의 개념을 Redis에 적용시킬 수 있었다면, 면접에서도 충분히 할 수 있는 얘기였을 것 같다. 추후에는 센티널 구조를 내가 가지고 있는 웹 앱에 직접 구현해보면 좋을 것 같다.

 

추천글

https://lifeplan-b.tistory.com/13

 

레디스(Redis) 고가용성(HA-High Availability)

Redis의 고가용성(HA) Redis는 고가용성(HA)를 위해 Replication(Master-Slave) 구조를 지원하며, 추가적으로 Sentinel or Cluster 구성 방법을 제공한다. In-Memory DB 장애시 위험성 Redis 마스터노드가 다운이 되면,

lifeplan-b.tistory.com

 

반응형