Redis哨兵模式安装搭建

1、介绍

哨兵 (sentinel) ,用于对主从结构中的每一台服务器进行监控,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。前面的主从是最基础的提升Redis服务器稳定性的一种实现方式,但我们可以看到master节点仍然是一台,若主节点宕机,所有从服务器都不会有新的数据进来,如何让主节点也实现高可用,当主节点宕机的时候自动从从节点中选举一台节点提升为主节点就是哨兵实现的功能。

  • 监控:监控主从节点运行情况。
  • 通知:当监控节点出现故障,哨兵之间进行通讯。
  • 自动故障转移:当监控到主节点宕机后,断开与宕机主节点连接的所有从节点,然后再从节点中选取一个作为主节点,将其他的从节点连接到这个最新的主节点。最后通知客户端最新的服务器地址。

哨兵也是一台redis服务器,只是不对外提供任何服务,redis的bin目录下的redis-sentinel其实就是redis-server的软连接。

哨兵节点最少三台且必须为单数。这个与其它分布式框架如zookeeper类似,如果是双数,在选举的时候就会出现平票的情况,所以必须是三台及以上的单数。

2、原理

哨兵之间会有通讯,哨兵和主从节点之间也有监控,基于这些信息同步和状态监控实现Redis的故障转移:

  • 哨兵和哨兵之间以哨兵和Redis主从节点之间每隔一秒发送ping监控它们的健康状态;
  • 哨兵向Redis主从节点每隔10秒发送一次info保存节点信息;
  • 哨兵向Redis主节点每隔2秒发送一次hello,直到哨兵报出sdown,代表主节点失联,然后通知其余哨兵尝试连接该主节点;

Redis主节点下线的情况分为主观下线和客观下线;

主观下线(sdown):单独一个哨兵发现master故障了。

客观下线(odown):半数哨兵都认为master节点故障就会触发故障转移。

4、哨兵Leader选举

  1. 哨兵A发现Redis主节点失联;
  2. 哨兵A报出sdown,并通知其它哨兵,发送指令sentinel-master-down-by-address-port给其余哨兵节点;
  3. 其余哨兵接收到哨兵A的指令后尝试连接Redis主节点,发现主节点确实失联;
  4. 哨兵返回信息给哨兵A,当超过半数的哨兵认为主节点下线后,状态会变成odown;
  5. 最先发现主节点下线的哨兵A会成为哨兵领导者负责这次的主从节点的切换工作;

5、故障转移

当哨兵发现主节点下线之后经过上面的哨兵选举机制,选举出本次故障转移工作的哨兵节点完成本次主从节点切换的工作:

  1. 哨兵Leader根据一定规则从各个从节点中选择出一个节点升级为主节点;
  2. 其余从接待你修改对应的主节点为新的主节点;

哨兵Leader选择新的主节点遵循下面几个规则:

健康度:从节点响应时间快:

完整性:从节点消费主节点的offset偏移量尽可能的高;

稳定性:若仍有多个从节点,则根据从节点创建时间选择最有资历的节点升级为主节点;

3、搭建

3.1节点规划

操作系统

IP地址

角色

Redhat

Redis 10.68.111.43:6379

Sentinel 10.68.156.43:26379

从节点

Redhat

Redis 10.68.111.44:6379

Sentinel 10.68.156.44:26379

从节点

Redhat

Redis 10.68.111.45:6379

Sentinel 10.68.156.45:26379

主节点

3.2下载并解压REDIS安装包

tar -zxvf redis-6.2.7.tar.gz /home/soft/redis-6.2.7

3.3编译安装REDIS

cd /home/soft/redis-6.2.7 
mkdir build 
make & make install

3.4修改redis和sentinel的配置文件

主节点redis.conf相关配置:

bind 0.0.0.0
requirepass "soFR@2020#07_"
masterauth "soFR@2020#07_"
daemonize yes
logfile "/app/soft/redis-6.2.7/logs/redis.log"
appendonly yes
appendfsync everysec
protected-mode no
port 6379

主节点sentinel.conf相关配置:

protected-mode no
daemonize yes
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.68.111.45 6379 2
sentinel down-after-milliseconds mymaster 1000
sentinel auth-pass mymaster soFR@2020#07_
port 26379

从节点redis.conf相关配置:

bind 0.0.0.0
slaveof 10.68.156.45 6379
requirepass "soFR@2020#07_"
masterauth "soFR@2020#07_"
appendonly yes
appendfsync everysec
daemonize yes
logfile "/app/soft/redis-6.2.7/logs/redis.log"
protected-mode no

从节点sentinel.conf相关配置:

protected-mode no
daemonize yes
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.68.111.45 6379 2
sentinel down-after-milliseconds mymaster 1000
sentinel auth-pass mymaster soFR@2020#07_
port 26379

3.5启动redis和sentinel

./redis-server ../../redis.conf 
./redis-sentinel ../../sentinel.conf

### 一、Redis哨兵模式概述 Redis哨兵模式是一种实现高可用性的解决方案,它通过一组哨兵进程来监控主从节点的状态,在发生故障时自动完成主节点的选举和切换[^1]。为了确保系统的可靠性,建议至少部署三个以上的哨兵实例。 --- ### 二、配置与部署 Redis 哨兵模式 #### 1. 修改 Redis 配置文件 在所有参与哨兵模式Redis 节点上,需修改其 `redis.conf` 文件以支持哨兵功能。以下是必要的配置项: ```conf daemonize yes # 设置为后台运行 port 6379 # 主节点端口,默认为6379 bind 0.0.0.0 # 绑定到所有网络接口 requirepass Mypsd2023_ # 如果设置了密码,则需要在此处指定 masterauth Mypsd2023_ # 若存在主节点认证密码,也需要设置此参数[^3] slaveof <master-ip> <master-port> # 对于从节点,指定对应的主节点地址和端口号 ``` 对于哨兵专用的配置部分,创建一个新的配置文件 `sentinel.conf` 或者扩展原有的 `redis.conf` 文件,加入以下内容: ```conf sentinel monitor mymaster <master-ip> <master-port> 2 # 定义要监视的主节点及其最少票数要求 sentinel down-after-milliseconds mymaster 30000 # 判断主节点下线的时间阈值(毫秒) sentinel failover-timeout mymaster 180000 # 故障转移超时时长 sentinel parallel-syncs mymaster 1 # 新选主后的同步并发数量 ``` 以上配置中,“mymaster” 是自定义名称,可以替换为自己理解的名字;最后的一个数字表示确认多数派所需的最小哨兵数目[^4]。 #### 2. 启动哨兵服务 启动哨兵的方式取决于操作系统环境。如果单独使用 sentinel 配置文件,可以通过命令行执行如下操作: ```bash redis-sentinel /path/to/sentinel.conf ``` 如果是集成在同一份 redis.conf 中,则无需额外指令,只需正常启动 Redis 即可加载哨兵模块。 #### 3. 查看哨兵状态 连接至任意一个已启用哨兵的角色节点,输入以下命令验证当前集群健康状况以及各成员角色分配情况: ```bash SENTINEL masters SENTINEL slaves <master-name> ``` 上述 `<master-name>` 应该填写之前设定好的逻辑组名 “mymaster”。 #### 4. 模拟故障并观察切换过程 故意停止正在工作的主服务器或者断开它的网络链接,等待一段时间之后再检查新选出的 leader 是否接管成功,并且其他 follower 已经重新指向新的 master。 --- ### 三、注意事项 - **安全性**:生产环境中务必开启密码保护机制(masterauth 和 requirepass),防止未授权访问。 - **性能调优**:合理调整 timeout 参数避免频繁误判假死现象。 - **资源规划**:考虑到实际业务需求量级提前做好硬件容量评估工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值