Windows部署Redis哨兵一主二从三哨兵

1.修改配置文件

一主两从
复制三份 redis.windows.conf,分别如下配置

redis-6379.windows.conf

bind 127.0.0.1
port 6379

redis-6380.windows.conf

bind 127.0.1
port 6380
slaveof 127.0.0.1 6379

redis-6381.windows.conf

bind 127.0.1
port 6381
slaveof 127.0.0.1 6379

2.启动 Rdis

redis-server.exe redis6379.windows.conf
redis-server.exe redis6380.windows.conf
redis-server.exe redis6381.windows.conf

验证是否成功,看到从节点状态 online 说明主从环境搭建成功了

redis-cli.exe -h 127.0.0.1 -p 6379
备注:也可以脚本启动(快速方便)
添加以下文本 后缀名.bat
@ECHO OFF
redis-server redis6379.windows.conf
pause

127.0.0.1:6379> info replication

Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=98,lag=0
master_replid:677245c1292f2244597f22a12c85730f236fa707
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98

3.配置三个哨兵

创建三个配置文件(精简)

sentinel26379.windows.conf

bind 127.0.0.1
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2

sentinel26380.windows.conf

bind 127.0.0.1
port 26380
sentinel monitor mymaster 127.0.0.1 6379 2

sentinel26381.windows.conf

bind 127.0.0.1
port 26381
sentinel monitor mymaster 127.0.0.1 6379 2

启动哨兵

redis-server sentinel26379.conf --sentinel
redis-server sentinel26380.conf --sentinel
redis-server sentinel26381.conf --sentinel
备注:也可以脚本启动(快速方便)
添加以下文本 后缀名.bat
@echo off
redis-server.exe sentinel26379.conf --sentinel
@pause
验证是否成功,看到最后 status=ok 说明成功了

127.0.0.1:26379> info sentinel

Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

Redis可视化工具,方便操作查看结果:查看主从关系:
在这里插入图片描述
Redis可视化工具,方便操作查看结果:查看哨兵启动情况:

在这里插入图片描述

故障排查
提示1:
哨兵信息发现slaves的数量变多,查找配置信息ip地址要一致(redis.conf和sentinel.conf),其他局域网时要用本机IP地址.切记不能用127.0.0.1
提示2:
哨兵信息发现sentinels数量与开启的哨兵数量不符(小于实际),把哨兵配置文件中sentinel myid 行注释掉,让其自动生成,重启再查看

附件:哨兵配置文件完整,根据场景挑选配置
主配置

# 配置 sentinel 端口号
port 26379

# 以守护进程启动
daemonize yes

# 绑定只在本地使用
bind 127.0.0.1

# 日志文件名称
logfile "sentinel_26379.log"

# 日志文件存放地址
dir "./"

# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 63791 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6379 2

# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000

# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1

# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。 
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000

从配置

# 配置 sentinel 端口号
port 26380

# 以守护进程启动
daemonize yes

# 绑定只在本地使用
bind 127.0.0.1

# 日志文件名称
logfile "sentinel_26380.log"

# 日志文件存放地址
dir "./"

# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 63791 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6379 2

# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000

# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1

# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。 
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000

从配置

# 配置 sentinel 端口号
port 26381

# 以守护进程启动
daemonize yes

# 绑定只在本地使用
bind 127.0.0.1

# 日志文件名称
logfile "sentinel_26381.log"

# 日志文件存放地址
dir "./"

# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 63791 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6379 2

# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000

# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1

# 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。 
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000

遇到的问题

代码客户端连接redis,报错 All sentinels down, cannot determine where is mymaster master is running… 或者 Could not get a resource from the pool
参考这篇博客:Spring bootJedisPoolConfig 连接池,认真读过 【深入学习redis(4):哨兵】 ,所以这个问题已经不再是问题了通过客户端原理的介绍,可以加深对哨兵功能的理解:(1)配置提供者:客户端可以通过哨兵节点+masterName获取主节点信息,在这里哨兵起到的作用就是配置提供者。需要注意的是,哨兵只是配置提供者,而不是代理。二者的区别在于:如果是配置提供者,客户端在通过哨兵获得主节点信息后,会直接建立到主节点的连接,后续的请求(如set/get)会直接发向主节点;如果是代理,客户端的每一次请求都会发向哨兵,哨兵再通过主节点处理请求。举一个例子可以很好的理解哨兵的作用是配置提供者,而不是代理。在前面部署的哨兵系统中,将哨兵节点的配置文件进行如下修改:

sentinel monitor mymaster 192.168.92.128 6379 2
改为
sentinel monitor mymaster 127.0.0.1 6379 2

然后,将前述客户端代码在局域网的另外一台机器上运行,会发现客户端无法连接主节点;这是因为哨兵作为配置提供者,客户端通过它查询到主节点的地址为127.0.0.1:6379,客户端会向127.0.0.1:6379建立redis连接,自然无法连接。如果哨兵是代理,这个问题就不会出现了注意一点:哨兵程序监控端口和 redis 服务端口都要开放给客户端,否则就访问不通。我本地开发环境就是这种情况,可以访问通监控端口,但是无法访问redis服务端口。这也再次说明了哨兵只是配置提供者,而不是代理。

收录:

1.搭建redis哨兵集群时,哨兵无法感知到其他哨兵
2.springboot+shiro-redis 使用Redis sentinel(哨兵)主从实现
3.redis三个定时监控任务和主观下线、客观下线
4.Redis及其Sentinel配置项详细说明
5.SpringBoot2.0整合Redis高可用之Sentinel哨兵
6.Redis的哨兵模式
7.Redis集群主从复制(一主两从)搭建配置教程【Windows环境】
8.SpringBoot 2.3.3 + Redis + Sentinel 测试

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
为了在K8S中部署Redis一主从,可以按照以下步骤进行操作: 1. 首先,需要创建一个Redis的配置文件。在文章中已经提供了详细的配置文件内容,可以参考文章中的示例进行配置。 2. 接下来,需要创建一个持久化存储卷,使用Ceph作为后端存储。根据文章中的步骤,在K8S集群中创建一个Ceph存储卷,并将其与Redis容器进行关联。 3. 然后,创建一个Redis主节点的部署文件。在该文件中,配置Redis容器使用的镜像、端口号以及相关的环境变量。 4. 创建Redis从节点的部署文件。与主节点的部署文件类似,但需要注意将从节点的配置中指定主节点的地址和端口号。 5. 最后,使用K8S的命令行工具或UI界面来创建Redis主节点和从节点的部署。确认所有的Pod都已经启动并运行正常。 通过以上步骤,就可以在K8S中成功部署一个Redis一主从的集群。请注意,具体的配置和操作可以根据文章中提供的详细步骤进行调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [k8s部署redis所需要的配置文件](https://download.csdn.net/download/chscomfaner/12331302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [基于k8s部署redis一主哨兵集群](https://blog.csdn.net/makabaka1234/article/details/125681517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟吶李唦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值