이전에 레디스 레플리케이션에 관한 실습 내용을 남겼다. 실습을 하고 기록을 남기면서도 느꼈지만, 확장을 위한 과정이기 때문에 반드시 알아야 하는 내용이었다.
그렇게 레플리케이션 내용을 마무리하고 나니, 연달아 중요한 내용이 나왔다. 레디스 클러스터라는 기능이다.
레디스 클러스터는 일종의 샤딩으로, 노드별 슬롯 분배 뿐만 아니라, 내부 채널인 클러스터 포트(기본 포트 + 10,000)를 통해 클러스터 노드간의 메시지 교환, 슬롯 이동 등을 지원한다.
클러스터 내 각 샤드는 일반 레디스 노드와 마찬가지로 1개 이상의 마스터와 0개 이상의 레플리카를 가지고 있으며, 클러스터 노드 또한 마스터-레플리카 구조로 구성된다.
실습을 위한 레디스 클러스터 관련 내용은 이 정도만 알고 있어도 큰 어려움이 없을 것이다. 이제 실습을 진행해보자.
📌 본 실습은 Windows 환경에서 WSL 을 통해 경량 가상 머신을 이용한 Linux 환경에서 진행

cluster 로 이동redis.conf 를 복사하여 redis-cluster.conf 생성
cluster-enabled yes 를 통해 클러스터 모드 사용 허용
requirepass {passwd} 로 비밀번호 설정
enable-debug-command yes 를 통해 디버그 허용
bind 0.0.0.0 을 통해 외부 컨테이너(서비스) 접근 허용
docker-compose.yml 생성 및 작성redis_network 로 지정

docker-compose ps 명령어로 docker-compose로 실행중인 서비스 확인

redis-cli --cluster create [{ip(container_name)/port}..] --cluster-replica 1 -a {passwd} 명령어 사용

-a {passwd} 로 비밀번호 입력을 했음에도 불구하고, 인증 실퍠 발생
redis-cluster.conf 파일에 masterauth {passwd} 지시자를 지정하여 레플리케이션 인증 문제 해결


cluster-node-1 마스터 노드로 클라이언트 접속info replication 으로 레플리케이션 정보 확인
cluster-node-6 레플리카 노드로 클라이언트 접속info replication 으로 레플리케이션 정보 확인
cluster nodes 로 클러스터 노드 정보 확인

docker-compose down 후 docer-compose up --scale node=8 로 노드를 8개로 확장
node-7 과 node-8 은 슬롯 미할당 상태임을 확인
cluster-node-7 컨테이너 접속 후 cluster nodes 로 노드 정보 확인connected 옆에 할당된 슬롯 번호들이 있어야 함
--cluster add-node {addedNode} {orgNode} 명령어로 기존 클러스터에 레디스 노드 추가
<search> Got no slots in CLUSTER SLOTS -> 아직 클러스터에 속하지 않았다는 의미CLUSTER SLOTS 명령 시 빈 배열 반환

--cluster-slave 지시자를 추가하여 8번 노드가 7번 노드의 레플리카임을 지시

info replication 으로 레플리케이션 정보 확인 가능
cluster info 로 클러스터 정보 확인cluster_known_nodes:8 을 보아, 노드는 8개로 확장됨이 확인cluster_size:3 을 보면, 현재 클러스터의 샤드는 4개로 확장되지 않고 여전히 기존의 3개임을 확인 가능
cluster nodes 로 클러스터 내 노드 정보 확인
reshard {desIP/desPort} 를 통해 샤드 슬롯 재분배 진행cluster nodes 에서 확인한 7번 노드의 ID 입력
cluster nodes 를 통해 클러스터 내 노드 정보 확인0-1364 5461-6826 10923-12287Reference :
- 실전 레디스 : 기초, 실전, 고급 단계별로 배우는 레디스 핵심 가이드
- ChatGPT ( https://chatgpt.com/ )