Backend/Redis

Redis 구성 방법

findmypiece 2021. 4. 27. 00:12
728x90

Redis 는 Single instance, Sentinel, Cluster 방식 중 하나를 선택적으로 구성할 수 있다. Single instance 는 단일구성을 의미하는 것으로 굳이 정리가 필요없을 것 같고 Sentinel, Cluster 방식에 대해 정리해 보고자 한다. 

 

Sentinel

센터널 방식은 우리가 흔히 접할 수 있는 Master/Slave 구조이다. Write는 Master로만 진행하고 Read는 Slave로만 진행한다. 그리고 Master에 Write된 Data는 Slave로 Replication 된다. 일반적으로 Master 1대와 Slave 2~3대 정도로 운영하는 것 같다.

 

이런 구조에서는 Master 가 죽어버리면 Write를 할 수 없게 되기 때문에 Slave 중 하나가 임시로 Master 노드로 전환되어야 한다. 관리자가 수동으로 해줘도 되겠지만 이를 자동으로 관리하기 위해 각 노드에 센티널 인스턴스를 추가로 구성하게 된다.

 

센티널 인스턴스는 주기적으로  Master 노드의 상태를 체크하고 비정상이라고 판단하면 Slave노드 중 하나를 Master 노드로 전환한다. 그러다가 기존 Master 노드가 복구되면 해당 노드는 Slave 모드로 실행된다. 

 

Cluster

클러스터 방식은 간단하게 말해 여러개의 Master 노드 구성된 구조이다. 즉, Read/Write 를 모두 허용하는 Master를 여러대두고 데이터 저체를 분산해서 저장/관리 하는 방식이다. 샤딩 기법이 사용되기 때문에 각 노드를 샤드라고 명명하기도 한다.

 

센터널 구조는 HA는 보장되지만  하나의 Master 노드에 모든 데이터가 저장되어야 하기 때문에 물리장비의 스펙에 영향을 받을 수 밖에 없고 Replication 되는 Slave 노드도 상황은 마찬가지이다. 즉, 데이터가 많아질 경우 Scale Up 밖에 도리가 없다.

 

반면 클러스터는 데이터 자체를 샤딩해서 저장하기 때문에 상황에 따라 Scale Up, Scale Out 모두 적용할 수 있고 트래픽 분산효과도 덤으로 가지고 갈 수 있다.

 

다만 각 Master 에서 서로 다른 데이터를 관리하는만큼 HA도 각각 구성되어야 한다. 일반적으로 Master 별로 1~2대의 Slave를 두어 Replication 되도록 하고 Master 가 죽으면 연결된 Slave 노드가 Master 노드로 전환된다. 이는 Sentinel 과 비슷한 것 같지만 착각하지 말아야 할 것은 Cluster와 Sentinel은 동시에 사용하는 것이 아니라 완전히 다른 별도의 솔루션이라는 점이다.

 

https://www.letmecompile.com/redis-cluster-sentinel-overview/
http://23.253.120.235/sentinel-or-cluster/
great-song2.tistory.com/8
https://y0c.github.io/2018/10/21/redis-cluster/
https://www.javaer101.com/en/article/7375629.html
https://itschr.is/redis-cluster-vs-redis-replication/
https://brunch.co.kr/@springboot/151
728x90