2026-05-08 12:33:08
Docker环境中Redis集群搭建(Linux Shell版)的步骤如下:
集群原理
Redis集群通过提高单位时间内执行的任务数来提升效率。
集群中的所有节点彼此关联,节点内部通过二进制协议优化传输速度和带宽。
当一个节点挂掉后,集群超过半数的节点检查失效时该节点才会被认为挂掉。
节点的数量一般都是奇数,最小的集群主节点的个数最少为3,从节点的个数也为3,这样一个集群最少需要6个节点。
Redis集群中内置了16384个哈希槽,redis会根据节点数量大致的均衡的将哈希槽映射到不同的节点。
集群规划
实验的宿主机的IP为192.168.24.1。
在Docker中创建网络,网关是172.18.0.1。
规划6个节点,端口分别为7000到7005。
集群部署
Linux Shell脚本方式
A、创建Redis配置文件模板
在home目录下创建redis-cluster文件夹。
编写文件redis-cluster.tmpl,内容如下:
port ${PORT}protected-mode nocluster-enabled yescluster-config-file redis.confcluster-node-timeout 5000cluster-announce-ip 192.168.21.134cluster-announce-port ${PORT}cluster-announce-bus-port 1${PORT}appendonly yesB、创建自定义网络
执行命令:docker network create --driver bridge --subnet 172.18.0.0/16 redis-net
C、生成配置信息和目录
编写Linux Shell脚本createFilePath.sh,内容如下:
for port in `seq 7000 7005`do mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;done授权并执行脚本:
chmod +x ./createFilePath.sh./createFilePath.shD、创建Redis容器
编写创建6个Redis容器的脚本createRedisContainer.sh,内容如下:
for port in `seq 7000 7005`do docker run -dit -p ${port}:${port} -p 1${port}:1${port} --privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf --privileged=true -v /home/redis-cluster/${port}/data:/data --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis:5.0.5 redis-server /usr/local/etc/redis/redis.confdone授权并执行脚本:
chmod +x ./createRedisContainer.sh./createRedisContainer.shE、修改配置文件
查看网络分配的IP:docker network inspect redis-net
根据分配的网络IP修改宿主机的配置文件:vim /home/redis-cluster/700*/conf/redis.conf
F、启动集群
进入任意一个节点:docker exec -it redis-7000 bash
启动集群:
redis-cli --cluster create 172.18.0.2:7000 172.18.0.3:7001 172.18.0.4:7002 172.18.0.5:7003 172.18.0.6:7004 172.18.0.7:7005 --cluster-replicas 1集群检测
进入容器内部,执行以下命令查看集群状态:
redis-cli -c -p 7000info replicationcluster nodes