redis docker 集群搭建

本文档详细介绍了如何在Docker环境中配置Redis集群,包括创建专有网络、配置文件、启动容器以及创建和检查集群状态。在过程中提到了可能遇到的问题,如节点非空、连接超时等,并提供了相应的解决方法,如删除数据和配置文件,重启容器。此外,还强调了公网和局域网创建集群时的配置差异。
摘要由CSDN通过智能技术生成

docker redis 集群配置

1、配置 专有 网络 ,目的是保证局域网ip互通

docker network create -d bridge --subnet 172.18.0.0/24 redis-net

2、配置文件 和 data 目录

·设置ip 为公网 及docker暴露的端口,原因是 集群 槽在其它节点则会 重定向 到该节点 ,自动返回客户端该节点ip ,为annouce ip(指定)
·bus 端口 默认 10000+ip ,如果不指定
·bind 0.0.0.0 或者 不指定 --------------------一定要
for i in $(seq 1 6)
do
mkdir -p /redis-cluster/node-${i}/
cd /redis-cluster/node-${i}/
cat >redis.conf <<EOF
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes-${i}.conf
cluster-node-timeout 5000
appendonly yes
cluster-announce-ip 39.103.165.133
cluster-announce-port 63${i}9
cluster-announce-bus-port 163${i}9
EOF
mkdir data
done

3、 配置 redis 集群 别忘记指定网络

for i in $(seq 1 6)
do 
   docker run -it -d -p 63${i}9:6379 -p 163${i}9:16379  \
  --privileged=true -v /redis-cluster/node-${i}/redis.conf:/usr/local/etc/redis/redis.conf \
  --privileged=true -v /redis-cluster/node-${i}/data:/data \
  --restart always --name redis-${i} --net redis-net \
  --sysctl net.core.somaxconn=1024 redis:6.0-bullseye redis-server /usr/local/etc/redis/redis.conf
done

4、创建集群

1、进入其中一个

docker exec -it redis-1 bash

2、

cd /usr/local/bin/

3、创建集群 replicas 1 为每一个主节点配置一个从节点 ,所以 只有3个主节点 06 ,这里可公网也可局域网创建,局域网务必和 2 中配置一样

局域网ip: 成功 【使用docker network inspect redis-net 查看局域网ip】

redis-cli --cluster create 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379 --cluster-replicas 1

如果 一直等待 翻阅下文 错误 部分 如下:

Waiting for the cluster to join


5、 查看节点

redis-cli
cluster nodes 

有全部节点则成功 同时 集群总线端口也被打开 ,curl有返回内容,此前没有,
但是客户端连接端口 curl 如:6379一定会有返回值,如果没有,配置问题

问题:

1、[ERR] Node 172.18.0.4:6379 is not empty. Either the node already

关闭所有容器:
docker stop $( docker ps -q -f ancestor=redis:6.0-bullseye)
使用额外工具2 删除配置文件
重启 (命令如下):
docker start $(docker ps -q -f status=exited)
如果配置文件又生成了,再次使用使用额外工具2 删除配置文件

2、一直在等待,则配置出错 ,或者端口 失败

除了阿里云 安全组 和 防火墙 【这里不关心因为这导致的问题】

我的问题
使用公网ip 创建集群 失败 原因不明 【后来莫名其妙好了】
如下

# 公网:`一直等待 `
redis-cli --cluster create 39.103.165.133:6319 39.103.165.133:6329 39.103.165.133:6339 39.103.165.133:6349 39.103.165.133:6359 39.103.165.133:6369` --cluster-replicas 1

使用局域网 创建成功,特别注意的是如果使用局域网 创建,那么必须添加如下配置,公网则不需要:

//用于指定外玩连接

cluster-announce-ip 39.103.165.133  外部ip
cluster-announce-port 63${i}9       如:6379
cluster-announce-bus-port 163${i}9   如:16379 可以指定,并非一定是+10000

否则使用命令后报错

连接错误:Command execution timeout

额外工具1 清楚data目录里面的数据 以及nodes.conf

for i in $(seq 1 6)
do
rm -rf /redis-cluster/node-${i}/data/nodes-${i}.conf
rm -rf /redis-cluster/node-${i}/data/appendonly.aof 
rm -rf /redis-cluster/node-${i}/data/dump.rdb 
done

额外工具2 删除配置文件

rm -rf /redis-cluster

额外工具3 删除所有redis

docker rm -f $( docker ps -q  -f ancestor=redis:6.0-bullseye)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值