Kubernetes Redis 高可用方案

Redis 高可用方案常用的有兩種:Redis Sentinel 和 Redis Cluster ,本篇筆記介紹這兩種方案如何在 Kubernetes 中部署。在 Kubernetes 里部署服務(wù)通常有三種方式:自己手寫 Kubernetes 資源描述文件(Manifests YAML)、Helm Chart 和 Operator 。手寫資源描述文件需要對配置非常熟悉才能寫的好,對于初學(xué)者一般采用 Helm 或者 Operator 方式安裝,這里采用 Operator ,之所以選擇 Operator ,是因?yàn)楸局詈啺惭b的原則,使用 Operator 方式安裝可以少安裝一個組件 Helm 。

Redis Sentinel

https://github.com/spotahome/redis-operator

安裝 Operator 以及相關(guān)權(quán)限:

kubectl create -f https://raw.githubusercontent.com/spotahome/redis-operator/master/example/operator/all-redis-operator-resources.yaml
kubectl create -f https://raw.githubusercontent.com/spotahome/redis-operator/master/example/redisfailover/basic.yaml
apiVersion: databases.spotahome.com/v1
kind: RedisFailover
metadata:
  name: redisfailover
spec:
  sentinel:
    replicas: 3
    resources:
      requests:
        cpu: 100m
      limits:
        memory: 100Mi
  redis:
    replicas: 3
    resources:
      requests:
        cpu: 100m
        memory: 100Mi
      limits:
        cpu: 400m
        memory: 500Mi

Redis Cluster

https://github.com/ucloud/redis-cluster-operator

測試

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: redis-master
  labels:
    app: redis
spec:
  selector:
    matchLabels:
      app: redis
      role: master
      tier: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      containers:
      - name: master
        image: redis:5.0-alpine  # or just image: redis
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
NAME                                      READY   STATUS    RESTARTS   AGE
drc-example-distributedrediscluster-0-0   1/1     Running   0          40m
drc-example-distributedrediscluster-0-1   1/1     Running   0          39m
drc-example-distributedrediscluster-1-0   1/1     Running   0          40m
drc-example-distributedrediscluster-1-1   1/1     Running   0          39m
drc-example-distributedrediscluster-2-0   1/1     Running   0          40m
drc-example-distributedrediscluster-2-1   1/1     Running   0          39m
redis-cluster-operator-fd6fb58c4-m977x    1/1     Running   0          75m
redis-master-5d7f574d67-qjpxr             1/1     Running   0          27m
kubectl exec -it redis-master-5d7f574d67-qjpxr sh
redis-cli -h example-distributedrediscluster

注意:-c 這個參數(shù)是需要加上的,否則會報錯,因?yàn)榘凑辗峙渌惴ㄐ枰?redis-cli 能夠?qū)?Cluster 自動尋址。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容