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

2、下载最新redis镜像
docker pull redis

查看下载好的redis镜像版本
docker images|grep redis

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

成功解决,nice!

作者:坚果Leo
喜欢的,点个赞哦。

浙公网安备 33010602011771号