Redis学习
集群模式
模式 |
描述 |
缺点 |
单机 |
|
|
哨兵模式Sentinel |
配置相对简单,实现了高可用 |
不支持横向扩展 |
群集模式 |
分布式,分槽,支持横向扩展 |
只能使用DB0,部署复杂 |
总结,在数据量和性能要求不是特别高的时候,哨兵模式可以满足大部分需求
哨兵模式
此种部署模式不适用暴露出来对K8S环境外提供服务,
因为哨兵模式下只有Master节点可以写入,
如果通过NodePort或者Treafik等将Redis暴露出去,当Master节点宕机时,客户端无法知晓新的Master,
客户端需要访问Sentinel端口26379(默认)来获取master服务器的地址, 返回的将是pod的内部地址,外部客户端将无法连接.
如果客户端在K8S集群内部则可通过内部IP连接.
部署
1
| helm install -f values.yaml stable/redis-ha --namespace redis --generate-name
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| image: repository: 172.16.130.72/basis/redis tag: latest pullPolicy: IfNotPresent redis: resources: requests: memory: 200Mi cpu: 100m limits: memory: 700Mi sentinel: resources: requests: memory: 200Mi cpu: 100m limits: memory: 200Mi persistentVolume: enabled: true storageClass: "nfs" accessModes: - ReadWriteOnce size: 10Gi
|
-f values.yaml 指定了一个配置文件,用来替换默认的参数,也可以不指定
–namespace redis 命名空间需自己创建
–generate-name helm会自动生成一个项目名称
1 2 3
| helm -n redis list #部署完后查看状态和kubectl一样需要带 -n NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION redis-ha-1591230205 redis 1 2020-06-04 08:23:33.325156857 +0800 CST deployed redis-ha-4.3.1 5.0.6
|
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 查看部署后的pod [root@k8s1 redis-cluters]# kubectl get all -n redis NAME READY STATUS RESTARTS AGE pod/redis-ha-1591230205-server-0 2/2 Running 0 6h27m pod/redis-ha-1591230205-server-1 2/2 Running 0 6h26m pod/redis-ha-1591230205-server-2 2/2 Running 0 6h26m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/redis-ha-1591230205 ClusterIP None <none> 6379/TCP,26379/TCP 6h27m service/redis-ha-1591230205-announce-0 ClusterIP 10.96.123.33 <none> 6379/TCP,26379/TCP 6h27m service/redis-ha-1591230205-announce-1 ClusterIP 10.96.156.241 <none> 6379/TCP,26379/TCP 6h27m service/redis-ha-1591230205-announce-2 ClusterIP 10.96.122.29 <none> 6379/TCP,26379/TCP 6h27m
NAME READY AGE statefulset.apps/redis-ha-1591230205-server 3/3 6h27m
|