Redis 클러스터
배치 방법
Bitnami 헬 차트를 사용하여 Kubernetes의 redis 네임스페이스에 Redis 클러스터를 단일 명령으로 배치할 수 있습니다.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install -n redis production bitnami/redis-cluster
생성된 Redis 비밀번호 확인
헬 차트 배치는 Redis 클러스터에 대한 임의의 비밀번호를 생성합니다. 다음 명령어를 통해 비밀번호를 확인할 수 있습니다:
export REDIS_PASSWORD=$(kubectl get secret --namespace redis production-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)
values.yaml 사용자 정의
기본 Redis 클러스터 헬 차트 구성이 사용 사례에 최적화되지 않을 수 있으므로 사용자 정의가 필요합니다.
공식 기본 구성:
https://github.com/bitnami/charts/blob/master/bitnami/redis-cluster/values.yaml
values.yaml의 로컬 복사본을 만드세요. values.yaml의 내용을 수정하고 다음 명령을 실행하여 구성 변경 사항을 Redis 클러스터에 적용할 수 있습니다:
helm upgrade -n redis -f values.yaml production
values.yaml에는 사용자 정의할 수 있는 많은 구성 옵션이 있습니다. 다음은 간단한 예시입니다:
cluster:
init: true
## nodes: 복제본을 포함한 노드 총수입니다.
## 이는 3개의 마스터 노드와 3개의 복제본 노드가 있음을 의미합니다
## (replicas 기본값이 1이므로 각 마스터 노드에는 1개의 복제본이 있음).
## 따라서 nodes = numberOfMasterNodes + numberOfMasterNodes * replicas
nodes: 6
replicas: 1
RedisInsight
RedisInsight를 통한 Redis 클러스터 관리
우리는 redis-cli 명령줄 도구를 사용하여 Redis 클러스터와 상호작용하는 것을 선호하며 효율적입니다. 하지만 웹 UI를 사용하면 동일한 작업을 더 직관적이고 효율적으로 수행할 수 있습니다. RedisLab에서 개발한 RedisInsight를 선택합니다. 웹 UI를 Kubernetes에 Deployment로 배치할 수 있습니다. 다음은 RedisLab 공식 문서에서 약간 수정한 버전입니다. 주요 차이점은 재시작 시 구성이 손실되지 않도록 PVC(영구 볼륨 요청)를 추가한 것입니다:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redisinsight-pv-claim
labels:
app: redisinsight
namespace: redis
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisinsight
namespace: redis
labels:
app: redisinsight
spec:
replicas: 1
selector:
matchLabels:
app: redisinsight
template:
metadata:
labels:
app: redisinsight
spec:
containers:
- name: redisinsight
image: redislabs/redisinsight:1.9.0
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 0
volumeMounts:
- name: db
mountPath: /db
ports:
- containerPort: 8001
protocol: TCP
volumes:
- name: db
persistentVolumeClaim:
claimName: redisinsight-pv-claim
위 YAML을 redisinsight.yaml로 저장하고 다음 명령을 실행하여 Kubernetes에 배치합니다:
kubectl apply -f redisinsight.yaml
배치가 완료되면 다음을 실행하여 포트 포워딩을 설정합니다:
kubectl port-forward deployment/redisinsight -n redis 8001
그런 다음 웹 브라우저에서 http://localhost:8001을 열어 RedisInsight 웹 UI에 접근할 수 있습니다. UI에서 "Connect to a Redis Database" 버튼을 클릭하면 다음 팝업 창이 나타납니다:
호스트는 Kubernetes 콘솔에서 사용 가능한 Redis 클러스터 서비스의 IP 값입니다. 포트는 기본 Redis 포트인 6379입니다. 사용자 이름 기본값은 "default"입니다. 이름은 원하는 이름으로 설정할 수 있습니다. 이전 섹션에서 설명한 대로 kubectl 명령줄에서 비밀번호를 검색해야 합니다. "ADD REDIS DATABASE" 버튼을 클릭하면 모든 Redis 클러스터 구성원을 시드 노드로 선택하여 클러스터에 연결하라는 메시지가 표시됩니다. 전체 또는 그 중 하나를 선택할 수 있습니다. 연결 구성이 완료되면 방금 설치한 Redis 클러스터를 보고 관리할 수 있는 완전한 기능의 웹 UI에 접근할 수 있어야 합니다.
위 스크린샷에서 볼 수 있듯이, 방금 구성한 Redis 클러스터에는 3개의 마스터 노드와 3개의 슬레이브 노드가 있습니다. 각 파티션에 있는 키 수와 사용 중인 메모리 양도 표시됩니다.