一、哨兵
哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接新的master。
哨兵的作用:
- 监控:不断检查master和slave是否正常工作:master存活检测、master与slave运行 情况检测
- 通知:当被监控的服务器出现问题时,向其他服务器发送通知
- 自动故障转移:断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址。
注意:哨兵也是一台redis服务器,只是不提供数据服务,通常哨兵配置数量为单数
配置哨兵:
- 配置一拖二的主从结构
- 配置三个哨兵(配置不同,端口不同)
- 启动哨兵
redis-sentinel sentinel-端口号.conf
二、集群
集群架构:集群就是使用网络将若干台计算机连通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。
集群作用:
- 分散单台服务器的访问压力,实现负载均衡
- 分散单台服务器的存储压力,实现可扩展性
- 降低单台服务器宕机带来的业务灾难
Cluster配置
- 添加节点
cluster-enabled yes|no
- cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file<filename>
- 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout<milliseconds>
- master连接的slave最小数量
cluster-migration-barrier<count>
Cluster节点操作命令
- 查看集群节点信息
cluster nodes
- 进入一个从节点redis,切换其主节点
cluster replicate <master-id>
- 发现一个新节点,新增主节点
cluster meet ip:port
- 忽略一个没有solt的节点
cluster forget <id>
- 手动故障转移
cluster failover
redis-trib命令
- 添加节点
redis-trib.rb add-node
- 删除节点
redis-trib.rbdel-node
- 重新分片
redis-trib.rb reshard