LVS是一个Linux平台下的软件工具。通过LVS,你可以快捷方便的组建一个带有第四层负载均衡功能的集群系统。并且,借助第三方的工具包,还可以实现对LVS集群进行可用性支持的功能扩展。
LVS的抽象体系结构分为三个层次:
1)、第一层是负载均衡器,这是集群的唯一入口。
2)、第二层是提供实际服务的服务器群。
3)、第三层是存储服务系统,为整个集群内部运行提供稳定、一致的文件存取服务。
LVS调度算法:
静态调度:
1)、rr(Round Robin):轮询调度,轮叫调度
2)、wrr:weight,加权(以权重之间的比例实现在各主机之间进行调度)
3)、sh:source hashing,源地址散列。主要实现会话绑定,能够将此前建立的session信息保留了
4)、Dh:Destination hashing:目标地址散列。把同一个IP地址的请求,发送给同一个server。
动态调度:
1)、lc(Least-Connection):最少连接
2)、wlc(Weighted Least-Connection Scheduling):加权最少连接
3)、sed(Shortest Expected Delay):最短期望延迟
4)、nq(never queue):永不排队(改进的sed)
5)、LBLC(Locality-Based Least Connection):基于局部性的最少连接
6)、LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接
LVS传统的三种工作模式:
1)VS/NAT模式(Network address translation)
工作原理:通过负载均衡器或交换机转换IP地址,所有数据必须经过交换机。
优点:数据包必须经过IP转换,客户端和服务器后端都不知道对方IP,增强了抗攻击。
不足:转换IP时,需要配置复杂的路由策略。
2)VS/TUN模式(tunneling)隧道模式:
工作原理:在数据包的头部封装一个新的IP头标记(仅目的IP)发给RS,RS处理后,直接返回给客户端
优点:减少了负载均衡器的大量数据流动
不足:RS配置复杂,(ipip模块等)。RS绑定了vip ,风险大。数据包大小会有限制,可能会造成无法封装头部标记,或造成数据丢失。
3)DR模式(Direct routing)
工作原理:目的MAC地址改为RS的MAC(因为IP一致),负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。
优点:由于DS和RS在同一个网络中,所以是通过二层数据链路层来传输。因此可以使用大多数操作系统做为物理服务器。
不足:1)LVS-RS 必须处于同一VLAN。
2)RS 上绑定了vip ,风险大。
LVS-DR模式需要注意的是:
保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS。
解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。
第四种工作模式:LVS-FULLNAT转发模式 (需要重新编译内核)
LVS 不足:
1)、不会进行健康检查,服务器出问题,客户端依然可以访问到错误界面。
2)、单点,没有冗余。
解决方案:
LVS 管理软件——keepaplived (解决LVS健康检测与LVS冗余问题)
实例:LVS DR工作模式搭建
封装rhel7.6 虚拟机:(生产环境中使用7的较多)
DR模式搭建:
LVS 管理软件——keepaplived (解决LVS健康检测与LVS冗余)
LVS冗余:当原master机挂了,keepalived 会将backup机切换为新master继续工作
keepalived对后端的健康监测: