Redis集群部署——sentinel模式

文章详细介绍了如何在Docker环境下配置和启动Sentinel实例,包括修改sentinel.conf配置文件,设置监听节点、验证密码等。同时,文章阐述了哨兵日志中的关键信息,如sdown、odown状态转换,哨兵选举和故障转移过程,如select-slave、send-slaveof-noone、promoted-slave等阶段,展示了哨兵在Redis集群故障恢复中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器化运行sentinel实例

1、获取sentinel.conf配置文件

从官网下载对应的tar包,解压找到对应的sentinel.conf配置文件,修改其中的配置文件

注意:

# 设置监听节点,最后的数字2是quorum,表示客观下线时需要多少哨兵服务同意
sentinel monitor master <redis-master-ip> 6379 2
# 设置验证密码 避免不必要的错误信息
sentinel auth-pass master 123456
# 设置master服务失联10s后主观下线
sentinel down-after-milliseconds master 10000
# 设置同步数据超时时间为60s
sentinel failover-timeout master 60000

2、启动哨兵实例

docker run --name sentinel1 \
  -v /opt/sentinel.conf:/etc/sentinel.conf
  redis redis-sentinel /etc/sentinel.conf

常见的哨兵日志

1. +sdown master mymaster 192.168.50.121 6379

当前哨兵认为master已经主观宕机,也就是sdown。
2.  +odown master mymaster 192.168.50.121 6379 #quorum 2/2

由于哨兵集群内有超过两个哨兵都认为master sdown了,因此转化成客观宕机,也就是odown。
3.  +new-epoch 1

递增集群状态版本号,这个版本号将被接下来选举出的新的master采用。

从这个可以看出,集群版本号是哨兵创建和维护的。
4. +vote-for-leader 2d271223c7df8d
### Redis 集群的工作模式及其特点 Redis 提供了多种集群工作模式来满足不同的应用场景需求。以下是几种常见的 Redis 集群模式及其各自的特点: #### 1. **服务器端分片(Server-side Sharding)** 服务器端分片是 Redis 官方推荐的集群分片技术,主要通过 Redis Cluster 实现[^1]。 - 数据分布:Redis Cluster 使用哈希槽的概念将所有的键映射到 16384 个 slot 中,每个 Redis 节点负责一部分 slot 的存储。 - 请求处理:客户端可以直接连接任意节点发起请求,如果目标数据不在当前节点上,该节点会自动引导客户端跳转至正确的节点获取数据。 - 特点: - 支持动态扩展和收缩节点数量。 - 自动化故障检测与恢复功能。 - 所有节点间通过 Gossip 协议定期交换状态信息以保持一致性。 #### 2. **主从复制模式下的集群架构** 在这种模式下,通常采用多组主从结构组成整个集群体系[^2]。 - 架构设计:每两个服务器配置为主从关系构成一个小单元,再由若干这样的小单元共同构建起大规模的分布式环境。 - 写入平衡:利用主从同步机制,在一定程度上缓解单点压力问题从而达到负载均衡的效果。 - 故障转移:当某个 master 出现异常时能够快速切换到对应的 slave 上继续提供服务保障系统的高可用性。 #### 3. **代理分片方案 (Proxy-based sharding)** 此方法借助外部工具完成对内部 redis 实例池子访问路径的选择判断过程[^4]。 - 工作原理:引入一层额外的服务层——即所谓的“代理”,它接受来自前端应用程序的各种查询指令之后依据预定义好的规则决定应该转发给哪一台具体的redis server执行实际的操作最后把结果反馈回去即可。 - 技术选型建议:目前市面上已经存在不少成熟的解决方案可供选择比如Twemproxy 和 Codis 等都是不错的选择项之一;它们不仅简化了开发难度同时还提高了运维效率降低了成本开支等方面都有显著优势表现出来值得考虑采纳实施部署使用当中去实践检验效果如何进一步优化改进现有流程提高整体性能指标水平等等一系列措施手段相结合综合考量分析得出结论最终实现预期目标达成共识推动项目向前发展迈进一大步! #### 4. **Sentinel 哨兵监控系统** 虽然严格意义上来说不属于一种独立存在的 “模式”,但是由于其在整个生态链里扮演着极其重要的角色地位所以单独拿出来讨论一下也是很有必要的[^5]: - 功能概述:主要用于实时监测各个成员的状态变化情况(包括但不限于master/slave的角色转换事件通知等),并通过设置合理的阈值参数触发相应的应急响应策略动作,确保即使是在极端恶劣条件下也能维持正常运转不中断对外界用户提供持续稳定可靠的服务体验感受. --- ```python import rediscluster # 创建 Redis Cluster 连接示例 startup_nodes = [{"host": "127.0.0.1", "port": "7000"}] rc = rediscluster.RedisCluster(startup_nodes=startup_nodes, decode_responses=True) # 设置键值对 rc.set("foo", "bar") # 获取键值对 value = rc.get("foo") print(value) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值