🤔
도커
로 redis-cluster를 설정하는 방법은 알아보았는데쿠버네티스
를 사용할 경우에는 어떻게 redis-cluster를 설정하는지 궁금하였고 구글링을 통해 해당 방법을 찾았습니다. 방법은 아래와 같습니다.(환경은 gke에서 하였습니다.)
RancherUi - Deploying Redis Cluster on Top of Kubernetes에 yaml을 작성한 코드가 있습니다.
Deploy Redis 파트에서 해당 파일을 가져와서kubectl create -f [파일 이름]
실행 하시면statefulset
과configmap
이 생성됩니다.그 아래에 서비스 파일도 있으니 실행하시면 됩니다.🤗
🤓
pod
6개가 모두 Running 중인 상태이면 아래의 명령어를 사용해서 clutser를 설정해주시면 됩니다.
kubectl exec -it redis-cluster-0 -- redis-cli --cluster create [pod ip:port] ... --cluster-replicas 1
위 사이트에서 명령어를 그대로 복사하셔서 사용하셔도 되지만 저의 경우에는 작동을 안하기에 직접 pod의 ip를 복사해서 사용하였습니다.
🫡
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에 있을 경우 발생)
😊현재 저는 redis-cluster-0 와 redis-cluster-3가 master-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에 변화가 있는지 확인해 줍니다.