k8s_redis_cluster_2
쿠버네티스 환경에서 Redis-Cluster 구축 실전 가이드 ②
구축(파드 생성)
1. YAML 파일 순차 적용(생성)
1) Config 생성
2) Service 생성
3) Statefulset 생성
여기까지 단독(standalone) 레디스 6개가 실행된 상태이다. 아직 레디스 클러스터가 구성된 것은 아니다.
2. Redis-Cluster 구성
1) Redis-Cluster 구성 스크립트 작성, 실행
'cluster_create.sh'를 실행하면 Master 3개, Replica 3개로 Redis-Cluster가 구성(생성)된다.
🧑💻 주요 내용 설명
- VM의 경우 IP:Port를 적는데, 쿠버네티스는 다음과 같이 적는다.
redis-cluster-0.${SERVICE_NAME}.${NAMESPACE}.svc.cluster.local:${PORT}
redis-cluster-0~5까지 모두 적는다. - --cluster-replicas 1 # Master 1 -> Replica 1 로 설정한다.
- --cluster-yes # 이 옵션을 사용하면 아래와 같은 물음에 자동으로 'yes'로 대답한다.
Can I set the above configuration? (type 'yes' to accept): yes
이 옵션 없이 실행하면 'yes'를 입력해야 한다.
레디스 클러스터 구성(생성) 과정
📍 3개 Master에 슬롯이 고르게 할당되었다.
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
📍 Replica -> Master 관계 설정
Adding replica redis-cluster-4 to redis-cluster-0
Adding replica redis-cluster-5 to redis-cluster-1
Adding replica redis-cluster-3 to redis-cluster-2
📍 OK 성공! 모든 슬롯이 할당되었다.
[OK] All 16384 slots covered.
내용 전체 보기
2) cluster info 조회
3) cluster nodes 조회
편의상 노드 순서대로 표시했다. 실제로는 무작위로 나온다.
nodes.conf 파일 내용과 같다.
3. 🖧 Redis-Cluster 파드 다이어그램
4. 💽 데이터 입력
Failover(장애 조치) 테스트를 하려고 Redis-0 파드를 다운(삭제)하면 2초 이내에 redis-0 파드를 다시 살린다. cluster-node-timeout 3초이므로 Redis-0 다운을 감지하지 못한다. 그래서 데이터를 1천만개 정도 입력해서 5초 이상 걸리게 한다.
1) 데이터 입력 확인
① 각 노드 키 확인: dbsize
② AOF 파일 사이즈 확인
③ 메모리 확인
➡ 이제 파드도 생성했고, 데이터도 입력했으니 Failover(장애 조치) 테스트하러 갑시다.
| << K8s Redis-Cluster 준비 ① | K8s Redis-Cluster 테스트 ③ >> |
|---|
