keepalived高可用集群
高可用:不存在单点故障的集群
单点故障:
LVS是四层负载均衡设备
Nginx反向代理实现七层负载均衡
Nginx的功能名称是反向代理,不具备负载均衡功能,是通过反向代理实现了负载均衡
LVS在传输层实现负载均衡(第四层)修改MAC头部和IP头部实现负载均衡,修改MAC地址进行转发,是进行本地同网段传输,修改IP地址进行转发,可以进行远程传输,达到负载均衡器和服务器异地的效果
LVS相对于Nginx的负载均衡,效率要高的多,处理并发量的能力更强(一般是30w,Nginx一般是1w),但Nginx通过反向代理可以实现的功能更多。
LVS的本质是对数据包中的数据进行了完全转发,只是决定了数据包的去向,并未对数据包中的数据进行修改,也并未对源IP进行修改,转发过程中,MAC地址一直在变动
反向代理:反过来代替用户向后方服务器发起一个请求,这时源IP发生变动,变为反向代理的IP地址,之后再由反向代理发送给用户。用户在此过程中,一直在和反向代理进行交互。
进行反向代理,服务器的访问日志中只有反向代理的IP,若要取消反向代理IP,显示用户IP,就要打开Nginx反向代理配置文件进行字段删除。
Keepalived是基于VRRP协议实现的故障切换。
VRRP协议:虚拟路由冗余协议,最先用于路由器,可支持连续高可用
Keepalived是基于VRRP协议实现的的故障转移,master主动发包,被节点一直接收广播包,被节点产生竞争机制,每个节点都会有一个唯一的随机数字代表它的优先级。数值越小,优先级越高,每个被节点会把自己的优先级和接收到的广播包的优先级进行核对,如果自己的优先级高,则丢包继续发布广播,如果自己优先级低,则不再进行广播而进入等待状态。最后,优先级最高的节点成为新的master,VIP编程新master的IP
Nginx实现了内外网转发,因为Nginx负载均衡器有两块网卡,用于内外网接收数据和发送数据
脑裂脚本:软件服务与keepalived联动脚本,每过五秒检测一下Nginx服务是否开启