redis 一主两从三哨兵
- 一、架构说明
- 二、作用
- 三、优点
- 四、Redis哨兵模式的详细工作流程是怎样的?
- 五、哨兵模式如何确保数据一致性?
- 六、搭建安装准备
- 七、编译和安装
- 八、编辑 master redis.conf 配置文件
- 九、从服务器slave1配置
- 十、从服务器slave2配置
- 十一、检测主从配置是否正常,进入master服务器
- 十二、每台服务器创建哨兵节点
- 十三、启动每个哨兵节点检查是否正常
一、架构说明
Redis 是一种开源的高性能键值数据库,通常用于缓存和消息传递。在 Redis 的架构中,主从复制和哨兵系统是实现高可用性
和数据一致性
的重要机制。
在这种架构中,有一个主节点(Master)和两个从节点(Slave),以及三个哨兵(Sentinel)实例。各个角色的功能如下:
- 主节点(Master):负责处理写操作,是数据的主要来源。
- 从节点(Slave):负责从主节点复制数据,可以处理读操作,起到读写分离的作用。
- 哨兵(Sentinel):负责监控主节点和从节点的健康状态,当检测到故障时,会自动进行故障转移。
二、作用
- 数据冗余:两个从节点提供了数据冗余,即使主节点发生故障,仍然有从节点可以提供数据。
- 读写分离:从
节点负责处理读操作
,主节点负责处理写操作
,可以提高系统的读取性能。 - 故障转移:当主节点发生故障时,哨兵系统可以自动地在从节点中选举出一个新的主节点,保持服务的可用性。
- 监控和报警:哨兵系统可以监控Redis 实例的健康状态,并在出现问题时向管理员发送报警通知。
三、优点
高可用性
:通过哨兵系统,Redis 可以实现自动故障转移,确保服务的持续可用。数据一致性
:主从复制确保了数据的同步,从节点可以作为主节点的数据备份。扩展性
:可以通过增加从节点来扩展读取性能。灵活性
:可以根据实际需求调整主从复制的数量和哨兵的数量。
四、Redis哨兵模式的详细工作流程是怎样的?
Redis哨兵(Sentinel)模式是一种高可用性的解决方案,它允许你监控多个Redis实例,并在检测到故障时自动执行故障转移操作。以下是Redis哨兵模式的工作流程:
- 哨兵选举:
- 当哨兵模式启动时,多个哨兵实例会相互通信,并选举出一个领导者(Leader)。
- 领导者哨兵负责执行故障转移操作。
- 监控Redis实例:
- 每个哨兵实例都会独立地监控一个或多个Redis实例(主节点和从节点)。
- 哨兵通过定期发送PING命令到Redis实例来检查其健康状态。
- 故障检测:
- 如果哨兵在指定的时间内没有收到某个Redis实例的PING响应,它会认为该实例出现了故障。
- 一旦检测到故障,哨兵会将故障信息发送给其他哨兵实例。
- 主节点故障转移:
- 当主节点故障时,领导者哨兵会开始故障转移过程。
- 领导者哨兵会从从节点中选择一个作为新的主节点,这个选择通常基于从节点的运行状态和优先级(通过redis.conf配置文件中的slave-priority设置)。
- 配置更新和通知:
- 领导者哨兵会更新新的主节点和从节点的配置信息。
- 它还会向客户端发送命令,通知它们连接到新的主节点。
- 从节点故障恢复:
- 如果原来的主节点恢复了正常,它会被重新配置为从节点,并开始从新的主节点同步数据。
- 手动故障恢复:
- 即使哨兵模式可以自动执行故障转移,管理员也可以手动恢复故障的Redis实例。
- 管理员可以通过命令行工具或Web界面来执行这些操作。
- 持久化状态:
- 哨兵模式会持久化其状态到本地磁盘,包括故障转移的历史记录和当前的主节点信息。
- 这样即使在哨兵模式重启后,也能恢复到正确的状态。
- 日志和监控:
- 哨兵实例会生成日志,记录其活动的详细信息。
- 这些日志可以用于监控和故障排查。
通过这个过程,Redis哨兵模式确保了即使在发生故障的情况下,Redis服务也能快速恢复正常运行,从而保证了系统的可用性和数据的一致性。
五、哨兵模式如何确保数据一致性?
哨兵模式(Sentinel Mode)是阿里巴巴开源的一个流量控制组件,主要用于保障微服务架构下的稳定性和高可用性。其主要功能是提供流量控制、熔断降级、系统负载保护等丰富的服务治理功能。
在确保数据一致性方面,哨兵模式主要通过以下机制实现:
- 流量控制:通过控制进入系统的流量,避免系统过载,从而保持数据一致性不受威胁。例如,当系统检测到某一个资源访问量过大时,可以采用排队等待、限制请求频率等方式,确保系统不会因为流量激增而崩溃。
- 熔断机制:当检测到服务间调用失败时,哨兵模式可以自动触发熔断机制,暂停服务间的调用,避免雪崩效应,并给系统一个恢复的机会。在这个过程中,可以通过缓存等方式维护数据一致性。
- 降级策略:当系统负载过高或出现问题时,可以自动或手动将某些服务或资源降级,例如返回静态数据、直接响应错误等,从而减少系统压力,保证核心业务的一致性。
- 系统负载保护:哨兵模式能够监控系统的实时状态,当系统负载接近或达到阈值时,可以采取措施保护系统,如拒绝部分请求、触发报警等,避免系统因为过载而发生故障。
- 数据同步与缓存机制:在服务之间调用时,通过引入缓存机制,可以减少对下游系统的压力,同时确保数据的一致性。例如,当一个服务更新了数据后,通过缓存同步机制,将最新数据同步到其他服务,保证数据的一致性。
- 异常报警:哨兵模式可以实现实时的异常监控和报警,一旦发现系统异常或响应超时等情况,立即通知管理员进行处理,从而确保问题得到及时解决,维护数据一致性。
通过上述机制,哨兵模式在微服务架构中起到了非常重要的作用,它通过多方面的保护措施,确保了系统在面对高并发、复杂依赖关系时的稳定性和数据一致性。
六、搭建安装准备
1、安装用户以及用户组均为 jxkh,创建用户和用户组通常使用useradd和groupadd命令。以下是如何创建一个名为jxkh的用户和用户组:
命令 :
groupadd jxkh
命令 :
useradd -m -g jxkh jxkh
<