共计 2845 个字符,预计需要花费 8 分钟才能阅读完成。
三种 LVS 负载均衡模式
调度器的实现技术中,IP 负载均衡技术是效率最高的,IP 虚拟服务器软件 (IPVS) 是在 Linux 内核中实现的。
LVS 负载均衡模式 —1.NAT 模式
NAT 用法本来是因为网络 IP 地址不足而把内部保留 IP 地址通过映射转换成公网地址的一种上网方式(原地址 NAT)。如果把 NAT 的过程稍微变化, 就可以成为负载均衡的一种方式。原理其实就是把从客户端发来的 IP 包的 IP 头目的地址在 DR 上换成其中一台 REALSERVER 的 IP 地址并发至此 REALSERVER, 而 REALSERVER 则在处理完成后把数据经过 DR 主机发回给客户端,DR 在这个时候再把数据包的原 IP 地址改为 DR 接口上的 IP 地址即可。期间, 无论是进来的流量, 还是出去的流量, 都必须经过 DR。
LVS 负载均衡模式 —2.IP 隧道模式
隧道模式则类似于 VPN 的方式, 使用网络分层的原理, 在从客户端发来的数据包的基础上, 封装一个新的 IP 头标记 (不完整的 IP 头, 只有目的 IP 部) 发给 REALSERVER,REALSERVER 收到后, 先把 DR 发过来的数据包的头给解开, 还原其数据包原样, 处理后, 直接返回给客户端, 而不需要再经过 DR。需要注意的是, 由于 REALSERVER 需要对 DR 发过来的数据包进行还原, 也就是说必须支持 IPTUNNEL 协议。所以, 在 REALSERVER 的内核中, 必须编译支持 IPTUNNEL 这个选项。IPTUNNEL 也在 Net working options 里面。
LVS 负载均衡模式 —3. 直接路由模式
直接路由模式比较特别, 很难说和什么方面相似, 前 2 种模式基本上都是工作在网络层上(三层), 而直接路由模式则应该是工作在数据链路层上(二层)。其原理为,DR 和 REALSERVER 都使用同一个 IP 对外服务。但只有 DR 对 ARP 请求进行响应, 所有 REALSERVER 对本身这个 IP 的 ARP 请求保持静默。也就是说, 网关会把对这个服务 IP 的请求全部定向给 DR, 而 DR 收到数据包后根据调度算法, 找出对应的 REALSERVER, 把目的 MAC 地址改为 REALSERVER 的 MAC 并发给这台 REALSERVER。这时 REALSERVER 收到这个数据包, 则等于直接从客户端收到这个数据包无异, 处理后直接返回给客户端。由于 DR 要对二层包头进行改换, 所以 DR 和 REALSERVER 之间必须在一个广播域, 也可以简单的理解为在同一台交换机上。
LVS 负载均衡的八种调度算法
LVS 已实现了以下八种调度算法:
LVS 负载均衡算法 —1. 轮叫调度(Round-RobinScheduling)
调度器通过 ” 轮叫 ” 调度算法将外部请求按顺序轮流分配到集群中的真实服务器上, 它均等地对待每一台服务器, 而不管服务器上实际的连接数和系统负载。
LVS 负载均衡算法 —2. 加权轮叫调度(WeightedRound-RobinScheduling)
调度器通过 ” 加权轮叫 ” 调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况, 并动态地调整其权值。
LVS 负载均衡算法 —3. 最小连接调度(Least-ConnectionScheduling)
调度器通过 ” 最少连接 ” 调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能, 采用 ” 最小连接 ” 调度算法可以较好地均衡负载。
LVS 负载均衡算法 —4. 加权最小连接调度(WeightedLeast-ConnectionScheduling)
在集群系统中的服务器性能差异较大的情况下, 调度器采用 ” 加权最少链接 ” 调度算法优化负载均衡性能, 具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况, 并动态地调整其权值
LVS 负载均衡算法 —5. 基于局部性的最少链接(Locality-BasedLeastConnectionsScheduling)
基于局部性的最少链接 ” 调度算法是针对目标 IP 地址的负载均衡, 目前主要用于 Cache 集群系统。该算法根据请求的目标 IP 地址找出该目标 IP 地址最近使用的服务器, 若该服务器是可用的且没有超载, 将请求发送到该服务器; 若服务器不存在, 或者该服务器超载且有服务器处于一半的工作负载, 则用 ” 最少链接 ” 的原则选出一个可用的服务器, 将请求发送到该服务器。
LVS 负载均衡算法 —6. 带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplicationScheduling)
带复制的基于局部性最少链接 ” 调度算法也是针对目标 IP 地址的负载均衡, 目前主要用于 Cache 集群系统。它与 LBLC 算法的不同之处是它要维护从一个目标 IP 地址到一组服务器的映射, 而 LBLC 算法维护从一个目标 IP 地址到一台服务器的映射。该算法根据请求的目标 IP 地址找出该目标 IP 地址对应的服务器组, 按 ” 最小连接 ” 原则从服务器组中选出一台服务器, 若服务器没有超载, 将请求发送到该服务器, 若服务器超载; 则按 ” 最小连接 ” 原则从这个集群中选出一台服务器, 将该服务器加入到服务器组中, 将请求发送到该服务器。同时, 当该服务器组有一段时间没有被修改, 将最忙的服务器从服务器组中删除, 以降低复制的程度
LVS 负载均衡算法 —7. 目标地址散列调度(DestinationHashingScheduling)
目标地址散列 ” 调度算法根据请求的目标 IP 地址, 作为散列键 (HashKey) 从静态分配的散列表找出对应的服务器, 若该服务器是可用的且未超载, 将请求发送到该服务器, 否则返回空
LVS 负载均衡算法 —8. 源地址散列调度(SourceHashingScheduling)
源地址散列 ” 调度算法根据请求的源 IP 地址, 作为散列键 (HashKey) 从静态分配的散列表找出对应的服务器, 若该服务器是可用的且未超载, 将请求发送到该服务器, 否则返回空。
LVS+Keepalived 实现四层负载及高可用 http://www.linuxidc.com/Linux/2015-02/112695.htm
LVS+Keepalived 高可用负载均衡集群架构实验 http://www.linuxidc.com/Linux/2015-01/112560.htm
Heartbeat+LVS 构建高可用负载均衡集群 http://www.linuxidc.com/Linux/2014-09/106964.htm
搭建 LVS 负载均衡测试环境 http://www.linuxidc.com/Linux/2014-09/106636.htm
一个针对 LVS 的压力测试报告 http://www.linuxidc.com/Linux/2015-03/114422.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-03/115299.htm