centos7部署redis-cluster
前言: 因公司测试服务器切换,在网上找了各种搭建方法, 好不容易安装好一个redis集群, go项目和node项目成功连接,但java项目直接 Too many Cluster redirections? 发现JedisCluster连接集群时,集群的内部通信出了问题 JedisCluster使用的集群内部通信时使用的是程序中配置的IP,无奈只能重新搭建,经过 翻阅网上的各种资料和各种折腾,终于成功搭建并解决 Too many Cluster redirections问题。总结如下 :
安装docker
安装需要的安装包
yum install -y yum-utils
配置镜像仓库
// 国内阿里云镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装最新版本的Docker引擎和容器
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
下载redis镜像
docker pull redis
查看下载的镜像 docker images
创建redis容器
在 /home 下新建 redis-cluster 文件夹,然后创建 redis-cluster.tmpl 文件,文件内容如下:
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 101.132.*.* // 服务器ip
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
# appendonly yes
masterauth 密码
requirepass 密码
查看配置
cat /home/redis-cluster/redis-cluster.tmpl
在/home/redis-cluster下生成conf和data目标,并生成配置信息
for port in `seq 7000 7005`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
创建6个容器
因为我们这里用的host网络 就不需要和容器内端口映射
for port in `seq 7000 7005`; do \
docker run -d -ti \
-v /home/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/${port}/data:/data \
--restart always --name redis-${port} --network host \
redis redis-server /usr/local/etc/redis/redis.conf; \
done
docker ps 查看容器
设置集群
进入容器
docker exec -it redis-7000 bash
执行设置集群命令
/*注意: 101.132.70.6 是我服务器的ip 需要替换为自己的ip
如果是阿里云需要设置安全组开放你需要的端口,如果是其他需要关闭防火墙*/
/usr/local/bin/redis-cli --cluster create \
101.132.70.6:7000 \
101.132.70.6:7001 \
101.132.70.6:7002 \
101.132.70.6:7003 \
101.132.70.6:7004 \
101.132.70.6:7005 \
--cluster-replicas 1 -a 你的密码
输入yes
搭建成功