一、负载均衡集群的特点和作用
- 作用:
- 处理高并发带来的系统性能问题,最终大家都会使用负载均衡机制。它是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群来处理网站的请求。
- 特点:
- 集群化的服务器都需要运行同一个系统
- 多台服务器共同承担了压力
- 一台服务器出现故障,还有其他服务器顶替
二、常用名词解释
- ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等
- IPVS:工作于内核上的netfilter INPUT HOOK之上的程序,可根据用户定义的集群实现请求转发;
- VS:Virtual Server ,虚拟服务
- Director、Balancer:负载均衡器、分发器
- RS:Real Server 后端请求处理服务器
- CIP:Client IP,客户端IP
- VIP:Director Virtual IP,负载均衡器虚拟IP
- DIP :Director IP,负载均衡器IP
- RIP:Real Server IP,后端请求处理服务器IP
三、LVS的三种工作模式
- DR模式
- 工作流程
- 客户端的请求会发往Director,此时,客户端请求报文的源IP为CIP,目标IP为Director的VIP。
- 当Director接受到客户端的请求报文后,Director会在请求报文外封装一个MAC首部,其源MAC为Director接口的MAC地址,目标MAC为选定RS的MAC地址;
- 当RS收到Director转发过来的请求报文后,检查发现请求报文的目标Ip为本地环回接口上配置的VIP,因此会接受报文进行响应处理。另外由于对ARP响应规则做了修改,因此RS不会把响应报文响应给director ,而是响应给GW;(参考ARP协议)
- 客户端接收响应报文,完成通信。
- 特点
- 负载调度器与真实服务器处于同一层级要求在同一广播域中
- 负载调度器必须是 Linux 操作系统,真实服务器也必须是 Linux 操作系统
- 客户端访问端口与真实服务器访问端口必须一致
- 入站数据报文 C 》 D 》 rs,出站数据报文 RS 》 C
- NAT模式
- 工作流程
- 客户端的请求发往Director 的VIP。
- Director发到客户端请求报文后,将报文中的目标Ip修改为集群中的选定的RIP,目标端口80也修改成8080,然后将请求报文发往RS。
- 当RS收到请求报文后,在检查报文的目标IP为自己的RIP后,会接受报文并进行处理响应。响应的源Ip为RIP,目标IP为CIP,端口不变。
- Director收到RS的响应报文,修改响应报文的源IP为VIP,端口为80,然后转发给客户端。
- 客户端接受响应报文,其源IP为VIP,端口为80,整个过程对于客户端来说是透明无感知的。
- 特性
- 负载调度器必须位于真实服务器与客户端之间
- 真实服务器可以不是 Linux 操作系统,负载调度器必须是 Linux 操作系统,负载调度器必须是
- 真实服务器可以和负载调度器端口不一致,甚至不同真实服务器之间端口也可以不一致
- 入站与出站数据报文都经过负载调度器,压力较大
- TUN模式
- 转发方式工作,不修改请求报文的IP首部,而在源IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),且使用场景较少。暂不展开描述。
四、三种模式的对比
五、算法
- 静态调度算法
- RR 轮询:将每次用户的请求分配给后端的服务器,从第一台服务器开始到第N台结束,然后循环
- WRR 加权轮询:按照权重的比例实现在多台主机之间进行调度
- SH(source hash)源地址散列:将同一个IP的用户请求,发送给同一个服务器
- DH(destination hash)目标地址散列:将同一个目标地址的用户请求发送给同一个真实服务器(提高缓存的命中率)
- 动态调度算法
- LC(lest-connection)最少连接:将新的连接请求,分配给连接数最少的服务器 活动连接 × 256 + 非活动连接
- WLC加权最少连接:特殊的最少连接算法,权重越大承担的请求数越多 (活动连接 × 256 + 非活动连接 ) / 权重
- SED最短期望延迟:特殊的WLC算法 (活动连接 + 1) * 256 / 权重
- 其他调度算法
- NQ永不排队:特殊的 SED 算法,无需等待,如果有真实服务器的连接数等于0那就直接分配不需要运算
- LBLC特殊的DH算法:即能提高缓存命中率,又要考虑服务器性能
- LBLCR LBLC+缓存:尽可能提高负载均衡和缓存命中率的折中方案(针对热点事件)