centos7下docker redis5集群搭建

1、创建redis-cluster文件夹

mkdir /www

cd /www

mkdir redis-cluster 

cd redis-cluster

2、文件目录结构

# 项目文件 ├── /www/redis-cluster/redis-cluster.tmpl   
#         ├── /www/redis-cluster/redis.sh              
#         ├── /www/redis-cluster/stop.sh 

3、redis-cluster.tmpl文件:配置如下几个参数,此文件的目的是生成每一个redis实例的redis.conf

#端口
port ${PORT}
#非保护模式
protected-mode no
#启用集群模式
cluster-enabled yes
cluster-config-file nodes.conf
#超时时间
cluster-node-timeout 5000
cluster-announce-ip 10.1.1.198
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
#后台运行
#daemonize yes 
pidfile  /var/run/redis_${PORT}.pid
#集群加密
masterauth a123456 
requirepass a123456 

4、redis.sh :edis集群shell脚本文件

#!/bin/bash
#在/www/redis-cluster下生成conf和data目标,并生成配置信息
for port in `seq 6000 6005`; 
do 
  mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done
#创建6个redis容器
for port in `seq 6000 6005`;
do
	docker run -d -it -p ${port}:${port} -p 1${port}:1${port} -v /www/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /www/redis-cluster/${port}/data:/data --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done
#查找ip
for port in `seq 6000 6005`;
do
	echo  -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port}" ";
done
#换行
echo -e "\n"
#输入信息
read -p "请把输入要启动的docker容器名称,默认redis-6000:" DOCKER_NAME
#判断是否为空
if [ ! $DOCKER_NAME ]; 
	then DOCKER_NAME='redis-6000'; 
fi
#进入容器
docker exec -it redis-6000 /bin/bash

5、stop.sh:卸载redis集群

#!/bin/bash

docker stop redis-6000 redis-6001 redis-6002 redis-6003 redis-6004 redis-6005

docker rm redis-6000 redis-6001 redis-6002 redis-6003 redis-6004 redis-6005

rm -rf 6000 6001 6002 6003 6004 6005

6、设置权限:

chmod 755 redis.sh stop.sh

7、创建自定义network(redis-net)

docker network create redis-net

6、执行redis.sh脚本自动创建redis容器,然后自动进入redis-6000

./redis.sh

6、设置权限:

chmod 755 redis.sh stop.sh

7、创建自定义network(redis-net)

docker network create redis-net

6、执行redis.sh脚本自动创建redis容器,然后自动进入redis-6000

./redis.sh

7、执行集群,然后输入:yes,启动集群(-a a123456 是密码)。

#执行集群

redis-cli --cluster create 172.19.0.2:6000 172.19.0.3:6001 172.19.0.4:6002 172.19.0.5:6003 172.19.0.6:6004 172.19.0.7:6005 -a a123456 --cluster-replicas 1

8、进入redis

redis-cli -c -p 6000 -a a123456

9、问题处理

如果遇到: Waiting for the cluster to join 一直等待,可能问题是:

打开防火墙端口:

firewall-cmd --zone=public --add-port=6000-6005/tcp --permanentfirewall-cmd --zone=public --add-port=16000-16005/tcp --permanentfirewall-cmd --reload

如果还不行,需要去服务器提供商(阿里云,腾讯云等等)的控制面板那边手动打开相应的端口。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值