docker部署redis集群

143 阅读1分钟

1.查询最新redis镜像

docker search redis

 

 

2.下载redis镜像

docker pull redis

 

3.创建一个文件夹,以及创建redis-cluster.tmpl模板文件

mkdir redis-cluster-d
cd redis-cluster-d
vi redis-cluster.tmpl
按i进入编辑模式,将以下内容复制粘贴进去
port ${PORT}

masterauth 123456

requirepass 123456

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

# 以下填的是本地ip地址
cluster-announce-ip 172.19.0.1

cluster-announce-port ${PORT}

cluster-announce-bus-port 1${PORT}

appendonly yes

最后先按esc退出编辑模式,再按shift+:  输入wq  按回车保存并退出

上述参数描述:

(1)port(端口号)

(2)masterauth(设置集群节点间访问密码,跟下面一致)

(3)requirepass(设置redis访问密码)

(4)cluster-enabled yes(启动集群模式)

(5)cluster-config-file nodes.conf(集群节点信息文件)

(6)cluster-node-timeout 5000(redis节点宕机被发现的时间)

(7)cluster-announce-ip(集群节点的汇报ip,防止nat,预先填写为网关ip后续需要手动修改配置文件)

(8)cluster-announce-port(集群节点的汇报port,防止nat)

(9)cluster-announce-bus-port(集群节点的汇报bus-port,防止nat)

(10) appendonly yes(开启aof)

4.在redis-cluster下生成conf和data目标,并生成配置信息

执行以下命令,按模板生产文件以及文件夹(注意一定要一行一行的复制,不能直接全部复制,会出错)
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

文件结构

5.创建6个redis容器

以下命令可以直接全部复制执行(注意替换实际的文件路径,比如以下例子的文件路径是 /root/redis-cluster-d,这个看你的redis-cluster-d的文件夹在哪个目录下新建的,不知道全路径的可以进入redis-cluster-d目录执行pwd命令可以查看)
for port in `seq 7001 7006`; do
     docker run -d --net=host -v /root/redis-cluster-d/${port}/conf/redis.conf:/etc/redis/redis.conf -v /root/redis-cluster-d/${port}/data:/data --restart always --name=redis-${port}  redis redis-server /etc/redis/redis.conf;
done

6.进入任意一个已运行的redis容器

docker exec -it redis-7001 bash

执行集群命令(注意,以下的192.168.96.171需要根据您当前的ip地址进行替换即可)

redis-cli -a 123456 --cluster create 192.168.96.171:7001 192.168.96.171:7002 192.168.96.171:7003 192.168.96.171:7004 192.168.96.171:7005 192.168.96.171:7006 --cluster-replicas 1

出现以下图片,输入yes 点回车,就完成redis集群的部署了,集群密码是123456,前三个节点为主节点

 

 

搭建如有问题,欢迎留言交流!