Loading

Docker部署Redis集群

容器化部署Redis集群

一、基础环境

1、docker环境检测(所有服务器都需要安装)

docker version 

如果没有docker环境,安装一个(所有服务器都需要安装)

yum install -y docker 

2、机器准备

集群IP 集群端口 节点作用
192.168.188.41 6379、16379 master
192.168.188.41 6380、16380 slave
192.168.191.4 6379、16379 master
192.168.191.4 6380、16380 slave
192.168.190.35 6379、16379 master
192.168.190.35 6380、16380 slave

二、部署

1、查看redis镜像版本

docker search redis

image.png
2、下载最新redis镜像

docker pull redis

查看下载好的redis镜像版本

docker images|grep redis

image.png
3、创建一个文件夹存放,redis.conf的模板

mkdir redis-cluster-d
cd redis-cluster-d

创建redis-cluster.tmpl模板,添加如下配置

#port(端口号)
port ${PORT}
#masterauth(设置集群节点间访问密码,跟下面一致)
masterauth 123456
#requirepass(设置redis访问密码)
requirepass 123456
#cluster-enabled yes(启动集群模式)
cluster-enabled yes
#cluster-config-file nodes.conf(集群节点信息文件)
cluster-config-file nodes.conf
#cluster-node-timeout 5000(redis节点宕机被发现的时间)
cluster-node-timeout 5000
#cluster-announce-ip(集群节点的汇报ip,防止nat,预先填写为网关ip后续需要手动修改配置文件)
cluster-announce-ip 172.19.0.1
#cluster-announce-port(集群节点的汇报port,防止nat)
cluster-announce-port ${PORT}
#cluster-announce-bus-port(集群节点的汇报bus-port,防止nat)
cluster-announce-bus-port 1${PORT}
#appendonly yes(开启aof)	
appendonly yes

4、在 redis-cluster下生成conf和data目标,并生成配置信息
编写脚本执行

vim create.sh

配置如下内容

for port in `seq 6379 6380`; do 
    mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done

5、创建容器
关闭所有服务起的防火墙

systemctl disable firewalld.service
#永久关闭

每台机器上面执行如下脚本

for port in `seq 6379 6380`; do

     docker run -d --net=host -v /home/redis-cluster-d/${port}/conf/redis.conf:/etc/redis/redis.conf -v /home/redis-cluster-d/${port}/data:/data --restart always --name=redis-${port}  redis redis-server /etc/redis/redis.conf;

done

6、建立集群连接
在任意一台master上,进入redis-6379容器内部执行如下命令

redis-cli -a 123456 --cluster create 192.168.188.41:6379 192.168.188.41:6380 192.168.191.4:6379 192.168.191.4:6380 192.168.190.35:6379 192.168.190.35:6380 --cluster-replicas 1

如果报错

需要在脚本中添加--privileged=true参数,赋予docker执行权限

for port in `seq 6379 6380`; do      docker run -d --net=host -v /home/redis-cluster-d/${port}/conf/redis.conf:/etc/redis/redis.conf -v /home/redis-cluster-d/${port}/data:/data --restart always  --privileged=true --name=redis-${port}  redis redis-server /etc/redis/redis.conf; done

成功解决 nice。

7、测试集群

redis-cli -c -a 123456  -h 192.168.188.41  -p 6379

发现集群有问题

redis-cli -a 123456 --cluster fix 192.168.188.41:6379

image.png
成功解决,nice!
image.png

posted @ 2021-04-06 09:13  坚果Leo  阅读(620)  评论(0)    收藏  举报