文章目录
1.准备(创建此目录来存放redis容器的映射文件,后续用到)
mkdir /opt/redis-cluster
2.创建redis集群所需的network
docker network create redis-cluster-net
查看创建的内网的网关
docker network inspect redis-cluster-net | grep "Gateway" | grep --color=auto -P '(\d{1,3}.){3}\d{1,3}' -o
3.在redis-cluster下创建配置文件模板redis-cluster.tmpl(此为redis.conf的模板)
复制此模板时,先去掉#及其后内容
port ${PORT} #redis节点容器端口
cluster-enabled yes # 开启集群
cluster-config-file nodes.conf #此文件动态记录集群中各个节点的信息
cluster-node-timeout 5000 # 设置超时时间
cluster-announce-ip 172.22.0.1 #集群节点的汇报ip, 预先填写刚才创建的network的网关(后续会修改)
cluster-announce-port ${PORT} #集群节点的汇报port,防止nat
cluster-announce-bus-port 1${PORT} #集群节点的汇报bus-port,防止nat
appendonly yes #开启aof --redis持久化的一种方式
redis持久化简介:redis持久化简介
创建此模板为了启动容器时使用(使用配置文件启动redis)
redis启动方式可以参考理解:redis的三种启动方式
4.在redis-cluster下创建6个redis节点的配置文件、data存储目录7001-7006
for port in `seq 7001 7006`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
查看完成后目录结构:
tree
5.分别进入6个节点的conf中修改redis.conf中红框内容
示例:
cd /7001/conf
vim redis.conf
修改好的实例如下:
剩余5个修改好后展示:
6.启动redis容器
for port in `seq 7001 7006`; do \
docker run -it -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
--privileged=true -v /opt/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v /opt/redis-cluster/${port}/data:/data --restart always --net redis-cluster-net \
--sysctl net.core.somaxconn=1024 -d redis redis-server /usr/local/etc/redis/redis.conf; \
done
参数解释:
-d 守护进程模式
–restart always 保持容器启动
–name redis-710* 容器起名
–net redis-net 容器使用虚拟网卡
-p 指定宿主机器与容器端口映射 701*:701*
-P 指定宿主机与容器redis总线端口映射 1701*:1701*
–privileged=true -v /home/redis-cluster/701*/conf/redis.conf:/usr/local/etc/redis/redis.conf
付权将宿主701节点文件挂载到容器/usr/local/etc/redis/redis.conf 文件中
–privileged=true -v /home/redis-cluster/${port}/data:/data
付权将宿主701/data目录挂载到容器/data目录中
–sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
容器根据挂载的配置文件启动 redis服务端
7.查看启动结果
8.查看容器分配的IP(即为刚才修改的redis.conf的ip)
docker network inspect redis-cluster-net
9.启动集群
(1).任意进入一个容器内部
docker exec -it redis-7001 /bin/bash
(2).启动集群
redis-cli --cluster create \
172.22.0.2:7001 \
172.22.0.3:7002 \
172.22.0.4:7003 \
172.22.0.5:7004 \
172.22.0.6:7005 \
172.22.0.7:7006 \
--cluster-replicas 1
期间需输入:yes确认
(3)完整的输出信息
10.测试链接
redis-cli -c -h 172.22.0.2 -p 7001 --raw
提示:-c表示集群模式,指定ip地址和端口号 --raw解码unicode
完结撒花。。。。。
参考自:
Mars’Aresc创作的docker 部署 redis-cluster集群
臥舟聽雨创作的Docker基于redis 5搭建高可用Redis-Cluster集群