Redis集群中的主从切换是指在Redis集群中将原先的从节点变更为主节点,即将后端存储的中心节点从晚辈变更为先导,这是实现Redis集群伸缩、实现高可用性、实现故障转移的核心功能,以保证服务的稳定性和可靠性。
主从切换的步骤可以总结为:
1. 让集群内原有的主节点向需要变更的从节点发出切换命令,将从节点变更为主节点;
2. 将集群节点的端口、连接信息告知新的主节点;
3. 调用Redis的 SLAVEOF命令,将所有从节点的master指向新的主节点;
4. 将集群节点的IP更新,保证所有节点可以拨号完成;
5. 重新调度KEY,完成主从切换。
主从切换虽然完成了服务可用性的提升,但也会增加了系统复杂度,需做好并发控制,特别在抢占主节点时。为此,redis 引入一种机制:Redis Sentinel,可以通过 Sentinel来轮询Redis的状态,如果发现主节点可以异常,会自动触发实现节点的切换,使整个Redis集群更加灵活并发的运行。
比如,通过下列代码来实现主从节点的切换:
# Sentinel触发
/tmp/redis-sentinel sentinel.conf
#主机切换
./redis-cli -p 6379 slaveof 192.168.1.6 6380 #6379为主机端口,192.168.1.6 6380为从机地址及端口
通过Sentinel实现的主从切换,无需手动执行切换,而且能够及时发现恢复故障的节点,更加可靠,主机的切换更加的灵活,更能满足服务的高可用性。
—————————
实现主从切换是灵活运行Redis集群的一个核心技术,可以将服务容量扩展,通过Redis-sentinel可以更加自动化来实现切换,进而提高服务的可用性,使服务更加可靠可信任。