LB集群:
(Load Balancing)即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能,其 实现方式分为硬件方式和软件方式。
硬件实现方式:
常用的有 F5公司的BIG-IP系列、A10公司的AX系列、Citrix公司的 NetScaler系列等
软件实现方式:
LVS工作于传输层、nginx工作于应用层、haproxy工作于传输层和应用层
本文主要讲解LVS。
一、什么是LVS ?
1. LVS:(Linux Virtual Server)Linux虚拟服务,工作于前端调度器内核的netfilter模块上,根据请求报文的目标IP和目标PORT将其调度转发至后端的某主机,其转发是依赖于四层协议的特征进行转发的,因此需要在内核的TCP/IP协议栈进行过滤筛选,这样的过滤转发规则由系统管理员进行定义。
2. LVS两段式组成:
ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的主机(RS)。
ipvs:工作与内核上的netfilter的INPUT钩子之上的程序,可根据用户定义的集群实现请求转发。
工作原理图解如下:
LVS集群专用术语:
CIP:发送请求的客户端IP地址。
VIP:lvs调度器的IP地址,也是向客户端提供服务的IP地址。
DIP:lvs调度器与后端real server之间通信使用的IP地址。
RIP:提供真正服务的real server的IP地址。
vs:虚拟服务器,调度器,
rs: 后端提供真实服务的服务器
3.LVS集群的类型:
1)lvs-nat:
多目标的DNAT,通过将请求报文中的目标地址和目标端口修改为挑选出的某RS的RIP和PORT实现转发
2)lvs-dr:
通过为请求报文的重新封闭一个MAC首部进行转发,源MAC是DIP所在接口的MAC,目标MAC是挑选出某RS的RIP所在接口的MAC地址;IP首部不会发生变化(CIP<-->VIP)
3)lvs-tun:
不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是原IP首部之外再封装一个IP首部(源IP为DIP,目标IP为挑选出的RS的RIP)
4)lvs-fullnat:
通过同时修改请求报文的源IP地址(CIP-->DIP)和目标IP地址(VIP-->RIP)进行转发
4.LVS集群的调度算法(Scheduler):
根据其调度时是否考虑后端主机的当前负载,可分为静态方法和动态方法两类
静态算法:仅根据算法自身进行调度
动态算法:根据算法及后端主机当前的负载状态进行调度