前言
Redis Cluster集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。
Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。
本文将在Kubernetes环境中使用PV/PVC,基于StatefulSet控制器创建并运行Redis Cluster。
创建PV
NFS服务器
先在NFS服务器192.168.100.155创建目录并共享:
# 创建6个共享目录,属主属组选nfsnobody。
mkdir -p /data/k8sdata/myserver/redis{
0..5}
chown nfsnobody.nfsnobody /data/k8sdata/myserver/redis{
0..5}
# 提供共享服务,可共享的IP段为物理机IP,rw可读写,all_squash远程用户连到nfs服务器都压榨成nfsnobody用户。
cat << EOF >> /etc/exports
/data/k8sdata/myserver/redis0 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/redis1 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/redis2 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/redis3 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/redis4 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/redis5 192.168.100.0/24(rw,all_squash)
EOF
# 重新加载,查看挂载情况
exportfs -r
exportfs -v
# nfs涉及端口较多,测试环境可关闭防火墙
systemctl disable --now firewalld
生成PV
redis集群需创建3主3从6个pod,对应需创建6个pv:
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-cluster-pv0
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.100.155
path: /data/k8sdata/myserver/redis0
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-cluster-pv1
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.100.155
path: /data/k8sdata/myserver/redis1
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-cluster-pv2
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.100.155
path: /data/k8sdata/myserver/redis2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-cluster-pv3
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.100.155
path: /data/k8sdata/myserver/redis3
---
apiVersion: v1
kind