Dev 달팽이 @_''

[Redis] Redis Cluster 본문

기타

[Redis] Redis Cluster

다본죽 2023. 7. 27. 10:52

[Redis] Redis Cluster

 

들어가기 전에..

최근 Redis에 대해 정리를 하다보니 Redis Cluster에 대한 정리까지 하면 기본적인 이론은 마무리할 수 있을 거 같아 하는김에 Redis Cluster까지 정리하기로 했다..

 

Redis Cluster

Cluster란 여러 대의 서버를 하나로 묶어 1개의 시스템처럼 동작하게 만드는 것이다. 그래서 여러 대의 서버에 데이터를 분산하여 저장하기 때문에 1대의 서버 부하를 여러 대로 분산시키므로 더 빠른 속도로 사용자에게 서비스를 제공할 수 있다.

또한, 특정 서버가 장애가 발생하면 다른 서버로 연결하여 서비스 중단과 데이터의 손실 없이 계속해서 사용자에게 서비스를 제공할 수 있다.

 

Redis Sharding(샤딩)

Redis는 Single Thread이기 때문에 데이터의 양이 많아지면 심각한 장애가 발생할 수 있다.

이러한 문제를 해결하기 위해 1개의 테이블의 데이터를 물리적으로 여러 파티션으로 나누어 저장하여 조회,저장,삭제 등 성능을 크게 향상 시키는 방법을 수평적 파티셔닝(Horizontal Partitioning) 또는 샤딩(Sharding)이라고 한다.

 

Redis Cluster의 구성 방법

1. Master로만 구성된 Cluster

위 그림과 같이 3개의 Master로 구성하면 데이터가 저장될 때 마다 M1,M2,M3으로 순차적으로 변경되어 저장된다.

 

2. Master와 Slave로 구성되어 있는 Cluster

Master로만 구성된 클러스터는 Master 중 1대의 Node만이라도 장애가 발생하면 서비스 중단과 데이터 손실이 일어날 수 있다.

따라서, Master와 Slave를 같이 구축해야 된다.

 

Master와 Slave 서버로 구성되어 있는 클러스로 구성하면 Master Node에 있는 데이터를 복제하여 가지고 있으므로 Master Node가 장애가 발생하더라도 Slave Node가 Master Node로 승격하여 중단없이 사용자에게 서비스를 제공할 수 있다.

 

정리

  • Redis Cluster는 Master를 여러 개 두어 분상 저장이 가능(Sharding), Scale Out이 가능하다.
    • Redis Cluster는 고성능과 확장성을 제공
  • 하나의 Master에 여러 Slave를 둘 수 있다.
  • Master 1,2,3이 있다면 데이터는 그 중 하나에 저장되며, Client가 데이터 읽기를 요청 시 저장된 곳이 아닌 다른 Master에 요청했다면 저장된 Master의 정보를 알려주며, Client는 전달받은 Master 정보에 다시 요청해서 데이터를 받아와야 한다.