最新docker环境下搭建redis 5集群

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集群

发布了75 篇原创文章 · 获赞 80 · 访问量 5677

猜你喜欢

转载自blog.csdn.net/qq_37356556/article/details/104228998