파티셔닝을 통해서 데이터를 분산으로 저장하다 보면 예상하지 못한 문제로 인해서 서버에 장애가 생길 수 있다.
서버에 장애가 생기게 되면 데이터 유실이 발생할 수 있고 제공하는 서비스에도 심각한 영향을 미칠 수 있다.
이를 방지하기 위해서는 분산 서버마다 복제된 서버를 함께 운영해야 한다.(고가용성을 위함)
이와 같이 Redis 환경에서 데이터 분산처리를 위한 파티셔닝 시스템과 안정성 확보를 위한 복제
시스템을 함께 사용하는 것을 Redis Cluster 라고 부른다.
Cluster를 사용하여 데이터를 분산시키는 목적을 가지는데 하나의 서버에서 분산처리를 한다면,
해당 서버에 장애가 발생했을 때 분산처리 자체가 불가능해진다. 이를 해결하고자 최소 3대의 Master 서버를 통하여
데이터를 분산하여 저장하는 것을 권장한다.
Cluster 는 기본적으로 Master-Slave 복제 시스템을 사용한다.
사용자의 데이터를 실시간으로 처리할 수 있는 마스터 1대에 대해 슬레이브는 마스터의 데이터가 실시간으로 복제된다.
슬레이브는 오직 마스터에 의해서만 쓰기 작업이 수행되고 사용자는 읽기 작업만 수행할 수 있다.
마스터에 장애가 발생하는 경우에 슬레이브는 마스터로 자동 전환되지는 않으며
사용자는 슬레이브에 복제된 데이터를 이용하여
마스터를 복구할 수 있다. 마스터가 장애가 발생하는 경우에도 슬레이브는 지속적인 읽기 작업을 수행할 수 있다.
Master-Slave 구성이 중요한데 한 서버에 Master 해당 마스터에 대한 Slave를 같이 두는 것을 권장하지 않는다.
데이터가 분산되어 저장되는 방식을 취하고 있는데 만약 분산서버A 에 문제가 발생했다고 가정해보자.
그럼 master 와 slave 가 동시에 장애가 발생하여 데이터 유실의 가능성이 높아진다.
이렇게 되면 해당 서버에 존재하는 데이터를 아예 복구할 수 없는 가능성도 발생할 수 있다.
하지만, 각기 다른 서버에 master-slave 가 구성되어 있다면 하나의 서버에 장애가 발생하더라도 데이터의
유실 위험이 확연히 감소하게 된다.
Master-Slave System에서 마스터가 장애가 발생하여 중단되더라도 슬레이브가 자동으로 마스터로 전환되지 않으므로
쓰기 작업을 수행할 수 없었다. 즉 일시적인 서비스 중단이 발생할 수 있다.
이러한 문제점을 해결하기 위해 슬레이브를 마스터로 전환시켜 지속적인 읽기 쓰기를 가능하도록 하기 위해서
센티널 서버를 추가로 구축할 수 있다.
센티널 서버는 평시에는 마스터와 슬레이브를 지속적으로 모니터링 한 뒤에 마스터에 장애가 발생한 경우에
슬레이브 서버를 즉시 마스터로 전환하여 쓰기 작업이 중단되지 않도록 해준다.
'Redis' 카테고리의 다른 글
[Redis] key 삭제 api 구현 (0) | 2023.06.12 |
---|---|
[Redis] Key 삭제 (0) | 2023.05.24 |
[Redis] SCAN (2) | 2023.03.28 |
[Redis] Redis 설치 (0) | 2022.10.12 |
[Redis] Redis 란? (0) | 2022.08.10 |