쿠버네티스 redis-clsuter

greenTea·2023년 9월 7일
0

쿠버네티스 redis-clsuter

🤔도커redis-cluster를 설정하는 방법은 알아보았는데 쿠버네티스를 사용할 경우에는 어떻게 redis-cluster를 설정하는지 궁금하였고 구글링을 통해 해당 방법을 찾았습니다. 방법은 아래와 같습니다.(환경은 gke에서 하였습니다.)

1. 쿠버네티스 yaml파일 작성

RancherUi - Deploying Redis Cluster on Top of Kubernetes에 yaml을 작성한 코드가 있습니다.
Deploy Redis 파트에서 해당 파일을 가져와서 kubectl create -f [파일 이름] 실행 하시면 statefulsetconfigmap이 생성됩니다.

그 아래에 서비스 파일도 있으니 실행하시면 됩니다.🤗

2. cluster 설정

🤓pod 6개가 모두 Running 중인 상태이면 아래의 명령어를 사용해서 clutser를 설정해주시면 됩니다.

kubectl exec -it redis-cluster-0 -- redis-cli --cluster create [pod ip:port] ... --cluster-replicas 1

위 사이트에서 명령어를 그대로 복사하셔서 사용하셔도 되지만 저의 경우에는 작동을 안하기에 직접 pod의 ip를 복사해서 사용하였습니다.

3. cluster 확인

🫡kubectl exec -it redis-cluster-0 -- redis-cli role를 통해 해당 pod의 role을 확인 할 수 있습니다.

cluster가 잘 작동하는지 확인해 보고 싶으시다면

kubectl exec -it redis-cluster-0 -- /bin/sh로 해당 파드에 접속한 후
redis-cli -c -h localhost -p 6379로 접속해줍니다.

info명령어를 통해 정보를 확인 할 수 있으며 cluster nodes를 통해 노드간의 관계를 확인 할 수 도 있습니다.

🫠만약 여유가 되신다면 2개의 창을 띄워주시고 한 쪽에서 set key value를 해주시고 나서 다른 쪽에서 get key를 진행해주셔도 좋습니다.

(이 때 각 명령어는 다른 파드에서 진행하여야 제대로 확인 할 수 있습니다. 제대로 동작할 경우 Redirect라는 명령어가 나타날 수도 있습니다.- 다른 slot에 있을 경우 발생)

4. fail-over 확인

😊현재 저는 redis-cluster-0redis-cluster-3master-slave 관계로 설정되어 있습니다. 만약 제대로 동작한다면 redis-clsuter-0 pod에 문제가 생길 경우 redis-cluster-3가 자동으로 master로 승급하게 될 것입니다.
이를 확인 하기 위해 kubectl delete pod redis-cluster-0를 실행해줍니다.

이 후 kubectl exec -it redis-cluster-0 -- redis-cli role
kubectl exec -it redis-cluster-3 -- redis-cli role를 통해 role에 변화가 있는지 확인해 줍니다.

참고
  1. pod 종료 후에도 redis-cluster의 role 변화 없음
  2. 위의 경우 redis-cluster-0가 계속 master로 보일 수 있습니다. 이는 위 설정에서 15초 동안 동작을 안할 경우에 감지를 하도록 되어 있기에 그런 것인데 만약 제대로 확인하고 싶으시다면 `cluster-node-timeout 15000`에서 15000 값을 많이 낮춰서 실행해보시면 됩니다.

  3. 다시 시작 할 경우 [ERR] Node ip:6379 is not empty.
    Either the node already knows other nodes
    (check with CLUSTER NODES) or contains some key in database 0.
    가 발생
  4. 처음에는 이런 에러가 발생하지 않지만 만약 redis yaml을 삭제하고 다시 한다면 기존에 있던 값들이 그대로 남아있어서 생기는 문제입니다. 위 파일에서 pvc를 설정해서 값을 보존하고 있기에 클러스터 설정값들이 그대로 들어있어서 생기는 문제이므로 pvc를 다시 삭제하고 파일을 실행해주시면 됩니다.
출처

RancherUi - Deploying Redis Cluster on Top of Kubernetes

profile
greenTea입니다.

0개의 댓글