在现实服务器环境中通过业务服务的集群化,避免了单点服务器出故障的问题,确保了业务服务的高可用性和连续性。通常,大型网站中的服务端会形成集群,同时利用负载均衡技术实现均衡。这有助于将大量的请求分散到单个服务器中,并加快网站响应。解决单点故障当然也可以采用热备份方案。本文通过利用LVS来实现负载均衡,同时利用Keepalived来保证它的高可用性,并基于LVS的DR模式来构建Nginx集群。
Keepalived是Linux下一个轻量级的高可用解决方案。Keepalived最初是为LVS设计的,专门用于监视集群系统中各服务节点的状态,根据TCP/IP参考模型的第三、第四、第五层交换机制检测各服务节点的状态,如果某服务器节点发生异常或工作故障,Keepalived就会检测出故障
之后,Keepalived加入了VRP的功能,VRP的目的是解决静态路由发生的单点故障问题,通过VRP可以实现网络的不间断稳定运行,实现高可用性,因此Keepalvied具有服务器状态检测和故障隔离功能,另一方面也具有HAcluster功能
上图为Keepalived的功能结构,大致分为用户空间和核心空间。
核心空间:主要包括IPVS和NETLINK(提供高级路由和其他相关的网络功能)。
用户空间:
WatchDog:负载监视checkers和VRRP过程的情况。
VRPStack:负载平衡器之间的失败切换FailOver,如果只使用一个负载平衡器,VRRP是不必要的。
Checkers:负责实际服务器的健康检查是keepalived最主要的功能。换句话说,可能没有VRRPStack,但体检healthchecking是必要的。
IPVSwrapper:用户将设定的规则发送到核心ipvs代码。
NetlinkReflector:设置vrrp的vip地址等。
VRP协议和工作原理。
VRP可以将两多台物理路由器设备虚拟为虚拟路由,该虚拟路由器通过虚拟IP(一台或多台)对外提供服务,在虚拟路由器内部共同工作超过10台物理路由器,同时只有一台物理路由器对外提供服务,该物理路由器成为主路由器(Master),一般来说,Master是通过选择算法产生的,具有对外服务的虚拟IP,提供各种网络功能,如ARP请求、ICMP数据传输等,其他物理由器不仅仅是对外部的虚拟路由,而且对外部的APPPPIPI,对外部的虚拟路由
每个虚拟路由器都有一个独特的标志号,称为虚拟现实界面,一个虚拟现实界面和一组知识产权地址构成一个虚拟路由器。在虚拟现实界面协议中,所有的报告都是通过知识产权广播(一对多,一个Master以多个Backup)的方式发送的,而在虚拟现实界面中,只有在Master角色的路由器一直发送虚拟现实界面数据包,而在BACKUP角色的路由器只接受Master角色发送的报告信息,用于监控Masterter角色的运行状态。一般不会占据虚拟现虚拟现数据产权数据包,而且在BACKUPP数据包的首选中,因此不会被高级别选择,这种情况不仅可以获得更高的信息,而且最佳信息也不会被用。