1.拉取Redis镜像
docker pull redis
docker images 查看镜像
2.创建模板文件
mkdir /opt/module/redis
编写redis-cluster.tmpl 文件
port ${PORT}
#requirepass WZTH@dev123
#masterauth WZTH@dev123
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 47.92.145.192
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
3.创建配置文件
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
4.创建redis网络
docker network create redis-net
5.启动redis
for port in `seq 7000 7005`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
-v /opt/module/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /opt/module/redis/${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
6.查看ip地址
for port in `seq 7000 7005`; do \
echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
done
或
docker inspect redis-7000 redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 | grep IPAddress
7.进入任意一个节点
docker exec -it redis-7000 bash
8.创建集群
/usr/local/bin/redis-cli --cluster create \
xxx.xxx.xxx.xxx:7000 \
xxx.xxx.xxx.xxx:7001 \
xxx.xxx.xxx.xxx:7002 \
xxx.xxx.xxx.xxx:7003 \
xxx.xxx.xxx.xxx:7004 \
xxx.xxx.xxx.xxx:7005 \
--cluster-replicas 1
或者使用docker容器ip
/usr/local/bin/redis-cli --cluster create \
172.18.0.2:7000 \
172.18.0.3:7001 \
172.18.0.4:7002 \
172.18.0.5:7003 \
172.18.0.6:7004 \
172.18.0.7:7005 \
--cluster-replicas 1
然后一直输入yes即可成功
如果出现错误
解决办法
1)、将需要新增的节点下aof、rdb等本地备份文件删除;
2)、同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;
3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli–h x –p对数据库进行清除:
xxx.xxx.xxx.xxx:7001> flushdb #清空当前数据库
9.测试
使用redis客户端新增缓存,然后查看其他节点是否一致,语法
set keyName value