lima 1.20 搭建 redis:8.0.3 主从哨兵踩坑记
准备工作
limactl create --name=dokcer-redis template://docker
limactl shell docker-redis
docker pull redis:8.0.3
docker run --name redis-master -p 16379:6379 -d redis:8.0.3(弃用)
docker exec -it redis-master /bin/bash
cat /proc/version。# ubuntu
docker run --name redis-slave -p 16380:6379 -d redis:8.0.3 (弃用)
docker exec -it redis-slave /bin/bash
E: Unable to locate package vim
apt-get update
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
apt-get update
apt-get install -y vim
上面那样启动 没有挂载配置文件 那么docker 内部会没有内置redis.cof 所以修改:前后不能有空格 拼接不能回车 或者用 \ 分隔 默认挂载目录 如果是文件 需先行创建
docker run --name redis-master --network redis-net -p 16379:6379 -v /Users/xiao1024/docker-redis-data/conf/redis-master.conf:/usr/local/etc/redis/redis.conf -v /Users/xiao1024/docker-redis-data/master-data:/data -d redis:8.0.3 redis-server /usr/local/etc/redis/redis.conf
docker run --name redis-slave --network redis-net -p 16380:6379 -v /Users/xiao1024/docker-redis-data/conf/redis-slave.conf:/usr/local/etc/redis/redis.conf -v /Users/xiao1024/docker-redis-data/slave-data:/data -d redis:8.0.3 redis-server /usr/local/etc/redis/redis.conf
docker run --name redis-slave1 --network redis-net -p 16381:6379 -v /Users/xiao1024/docker-redis-data/conf/redis-slave.conf:/usr/local/etc/redis/redis.conf -v /Users/xiao1024/docker-redis-data/slave-data:/data -d redis:8.0.3 redis-server /usr/local/etc/redis/redis.conf
docker run --name redis-slave2 --network redis-net -p 16382:6379 -v /Users/xiao1024/docker-redis-data/conf/redis-slave.conf:/usr/local/etc/redis/redis.conf -v /Users/xiao1024/docker-redis-data/slave-data:/data -d redis:8.0.3 redis-server /usr/local/etc/redis/redis.conf
三台机器。docker exec -it xxxx /bin/bash 进去配置
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c04d0230e584 redis:8.0.3 “docker-entrypoint.s…” 25 seconds ago Up 24 seconds 0.0.0.0:16381->6379/tcp, [::]:16381->6379/tcp redis-slave1
ef97cbf6df2f redis:8.0.3 “docker-entrypoint.s…” 6 minutes ago Up 6 minutes 0.0.0.0:16380->6379/tcp, [::]:16380->6379/tcp redis-slave
9b617162ac5d redis:8.0.3 “docker-entrypoint.s…” 6 minutes ago Up 6 minutes 0.0.0.0:16379->6379/tcp, [::]:16379->6379/tcp redis-master
配置主从 主库 默认配置 从库配置如下
# 配置主节点的ip和端口 172.17.0.2 docker inspect redis-master 获得 docker 唯一ip
slaveof 172.17.0.2 6379 #rediscover2.6 开始 从库默认知道
# redis.conf
# 注意需要配置 在配置文件 注释掉 bing 127.0.0.1 -::1
# 主服 requirepass 1234 从服务配置 masterauth 1234 才可以配置成功
如下显示就是配置成功
127.0.0.1:6379> auth 1234
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.17.0.3,port=6379,state=online,offset=266,lag=1
slave1:ip=172.17.0.4,port=6379,state=online,offset=266,lag=0
.
.
.
哨兵模式
docker stop redis-sentinel && docker rm redis-sentinel
docker exec -it redis-slave redis-cli
docker exec -it redis-master redis-cli
docker exec -it redis-sentinel redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
docker run -d --name redis-sentinel \
--network redis-net \
-p 26379:26379 \
-v /Users/xiao1024/docker-redis-data/conf/redis-sentinel.conf:/usr/local/etc/redis/sentinel.conf \
-v /Users/xiao1024/docker-redis-data/sentinel-data:/data \
--link redis-master \
redis:8.0.3 \
redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run -d --name redis-sentinel-1 \
--network redis-net \
-p 26380:26379 \
-v /Users/xiao1024/docker-redis-data/conf/redis-sentinel.conf:/usr/local/etc/redis/sentinel.conf \
-v /Users/xiao1024/docker-redis-data/sentinel-data:/data \
--link redis-master \
redis:8.0.3 \
redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run -d --name redis-sentinel-2 \
--network redis-net \
-p 26381:26379 \
-v /Users/xiao1024/docker-redis-data/conf/redis-sentinel.conf:/usr/local/etc/redis/sentinel.conf \
-v /Users/xiao1024/docker-redis-data/sentinel-data:/data \
--link redis-master \
redis:8.0.3 \
redis-sentinel /usr/local/etc/redis/sentinel.conf
AI 解答 暂时放弃0731
从你提供的最新主节点日志来看,主从节点的连接不稳定问题依然存在—— 尽管全量同步(Full resync)能成功完成,但同步后连接立即中断(Connection with replica … lost),且从节点会反复发起同步请求,形成 “连接 - 同步 - 断开 - 再连接” 的循环。这种状态会导致从节点无法维持正常的数据同步,也会被哨兵判定为 “不可靠”,最终影响故障转移。
参考文章 blog.csdn.net/qq_45193304/article/...
blog.csdn.net/weixin_51635918/arti...
主库可以一个配置 从库可以一个配置 哨兵一个配置
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu