개요
RHA라는 약어를 자주 접함에 따라 RHA가 무엇인지 탐색
Redis Single Instance / Sentinel / Cluster 세가지 형태가 있는 것은 아는데, RHA라고 하니 Sentinel을 지칭하는 것인지 추측한 부분도 확인
요약
Redis HA는 Redis 다운 등의 실패를 감당할 수 있는지의 범용적인 의미
HA가 실행될 때 데이터 보존 여부는 Master와 Slave 간의 Replication을 구성하여 데이터 동기화를 했는지 여부로 결정
HA 수행으로 Redis 복구하는 과정에서 클라이언트의 Redis 엔드포인트 재수정 배포가 필요한데, 이런 자동화를 수행해주는 것이 Sentinel
Replication
Master / Slave 서버 실행
HA 구성을 위해 서버 2개를 6001, 6002로 실행
** 6001을 Master로 이용
** 6002를 Replication 목적의 Slave로 이용
# Shell 1
redis-server --port 6001
# Shell 2
redis-server --port 6002
Bash
복사
Slave에서 Master의 복제 설정
6002가 Slave였으므로, redis-cli로 접속하여 replicaof로 복제 설정
redis-cli -h 127.0.0.1 -p 6002
# Replication 설정
> replicaof 127.0.0.1 6001
# Replcation 설정 해제
> replicaof no one
Bash
복사
# Replication 정보 확인
> info replication
Bash
복사
Master에서 데이터 주입
복제 설정을 한 상태로 Master에서 데이터 주입
# multi set
> mset a jseo b seongtki c hannkim d san
# multi get
> mget a b c d
Bash
복사
Slave에서 데이터 복제 확인
Slave에서도 복제된 데이터를 확인할 수 있는지 확인
# multi get
> mget a b c d
Bash
복사
HA
Master 노드가 완전히 죽은 경우, Slave를 Master로 승격하는 과정이 필요
이를 위해선
1.
기존의 Slave 노드에서의 복제 설정을 해제
→ replicaof no one을 지정하여 기존 Master에서의 복제를 받지 않도록 설정
2.
Application 상에서의 Redis 엔드포인트를 Master에서 Slave로 변경 필요
→ Slave 엔드포인트로 변경하여 재배포 수행
위 과정을 수작업으로 수행하기엔 시간이 꽤 소요되고, 수행 도중에 데이터 유실 가능성이 존재
따라서 이와 같은 문제를 해결하기 위해 자동으로 Fail Over를 돕는 것이 Sentinel
Sentinel은 다수의 노드로 구성되어 Quorum으로 Fail Over 여부를 결정짓는데, 이 글에서 다루지 않음
경우에 따라 Sentinel을 사용하지 않는 방식의 HA도 있을 수 있음
예를 들어 엔드포인트를 수정하여 재배포 하는 대신에, Master에서 사용하는 도메인 네임을 Slave에 덧씌우는 식의 교체로 HA를 수행할 수도 있을 것임