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 协议》,转载必须注明作者和本文链接
唯有坚持,滴水穿石----will
zhaocrazy
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
编程AI 出海 @ 数字游民
文章
86
粉丝
29
喜欢
69
收藏
152
排名:502
访问:1.7 万
私信
所有博文
社区赞助商