쿠버네티스 환경에서 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 파드 다이어그램

┌────────────────┐ ┌────────────────┐ ┌───────────────┐ │🟢Redis-0(231) │ │🟢Redis-1(233) │ │🟢Redis-2(235) │ │ Master-1 │ │ Master-2 │ │ Master-3 │ └──────┬─────────┘ └──────┬─────────┘ └──────┬────────┘ │ │ │ │ ┌──────────────────│────────────────────┘ │ │ └────────────────────┐ └──────────────────┐ │ │ │ │ ▼ ▼ ▼ ┌────────────────┐ ┌────────────────┐ ┌───────────────┐ │🟡Redis-3(237) │ │🟡Redis-4(239) │ │🟡Redis-5(241) │ │ Replica-1 │ │ Replica-2 │ │ Replica-3 │ └────────────────┘ └────────────────┘ └───────────────┘

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 테스트 ③ >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.