Redis 哨兵
哨兵用于监控整个集群的状态,如果有节点宕机,执行故障转移,将出现问题的服务器一处当前集群,出现哨兵是因为一旦主节点宕机整个集群崩溃,需要通过人工干预的方式实现切换主服务器的操作,很不智能,哨兵可以保住程序员自动在节点上输出slaveof no one ,避免长时间没有故障转移的问题,在redis2.8版本之后开始使用,用于保证数据接地那的高可用性
概念 | 逻辑结构 | 物理结构 |
---|---|---|
主节点 | Redis主服务器 | 一个独立的redis进程 |
从节点 | redis从服务器 | 一个独立的redis进程 |
数据节点 | redis主从服务的集合 | 主从节点进程集合 |
哨兵节点 | 监控redis数据节点 | 一个独立的哨兵节点 |
哨兵节点集合 | 多个redis哨兵的集合 | 若干个哨兵节点集合 |
-
哨兵部署数量最少有三个且以奇数形式建立
-
一主两从实现高可用哨兵
-
1) 主节点发生故障从节点复制失败
2) 如果从节点无法正常启动需要选出,一个从节点进行执行slaveofs no one 成为新的主节点进行对外提供服务器
3) 原来的从接地那成为主节点之后的更新信息
4) 另外一个从节点变成晋升为当前主节点的丛节点这个过程全为哨兵自动执行,不需要人工干预
-
配置哨兵
- 首先将源码包中的 sentinel.conf 复制或者直接编辑
bind 0.0.0.0
# 更改监控地址
sentinel monitor mymaster 127.0.0.1 6379 2
# 设置哨兵监控的节点信息(只填写主节点信息), mymaster 表示监控节点的名字, ip 端口 2表示哨兵中只要有两个哨兵判定该节点宕机执行故障转移(数量设置为,半数哨兵为宜)
# sentinel auth-pass <master-name> <password>
# 用于设置哨兵所使用redis的密码
sentinel down-after-milliseconds mymaster 30000
# 哨兵监控的节点30000毫秒内没有对反映自动执行故障移动
sentinel parallel-syncs mymaster 1
# 执行故障转移时全量复制的人数
sentinel failover-timeout mymaster 180000
# 故障转移的超时时间 单位 : 毫秒
sentinel deny-scripts-reconfig yes
设置故障转移的优先级(从服务器中 redis.conf配置文件)
slave-priority 100 # 数值越小优先级越高
哨兵设置多个的优势
1) 多个哨兵可以有效的防止误判发生
2) 多个哨兵的部署可以保证整个集群的健壮
哨兵开启方式
1) redis-sentinel 哨兵配置文件
2) redis-server --sentinel 哨兵配置文件
哨兵极高保证了数据的安全性,
- 主服务器宕机后,哨兵自动将从服务器转移至住主服务器,且会修改master服务器配置文件使其 主变为从,因此故障转移之后,主服务器在此回归则不再是 master服务器,而是从服务器
登录哨兵服务器
redis-