LVS 是 Linux 虚拟服务器的简称,通过它提供的负载均衡技术和 Linux 操作系统能构建高性能、高可用的服务器集群。一般 LVS 位于集群系统前端,由一台或多台负载调度器(Director Server)组成,负责将请求分发给应用服务器(Real Server)。它工作在 4 层(TCP/IP 传输层),基于 IP 负载均衡技术的 IPVS 模块实现。IPVS 有三种负载均衡机制:
1. VS/NAT(Virtual Server via Network Address Translation)
通过网络地址翻译技术实现虚拟服务器。当用户请求到达调度器时,调度器将请求报文的目标地址(虚拟 IP 地址)和目标端口改写为选定的 Real Server 的地址和相应端口,再将报文请求发送给 Real Server。服务器端返回数据时,Real Server 需要经过负载调度器将报文源地址和源端口改成虚拟 IP 地址和相应端口,再发给用户。这种方式下,随着用户请求增多,调度器处理能力可能成为瓶颈,因为用户请求和响应报文都要经过 Director Server 地址重写。
2. VS/TUN(Virtual Server via IP Tunneling)
即 IP 隧道技术实现虚拟服务器。它的连接调度和管理与 VS/NAT 类似,但报文转发方法不同。在 VS/TUN 方式中,调度器用 IP 隧道技术将用户请求转发到 Real Server,Real Server 直接响应用户请求,不再经过前端调度器。而且 Real Server 的地域位置不受限,可与 Director Server 在同一网段,也可在独立网络。这样,调度器只处理用户报文请求,大大提高了集群系统吞吐量。
3. VS/DR(Virtual Server via Direct Routing)
用直接路由技术实现虚拟服务器。其连接调度和管理与前两者一样,但报文转发方法不同。VS/DR 通过改写请求报文的 MAC 地址将请求发给 Real Server,Real Server 直接响应客户。这种方式性能最佳,但要求 Director Server 与 Real Server 有一块网卡连在同一物理网段。
从批量配置和报警来看:
- Nagios 对于批量监控主机,需要在 server 端用脚本新增 host,并拷贝 service 文件,修改所有主机的 services 文件来加入新增服务。
- Zabbix 在 server 端配置自动注册规则后,新增 client 端无需对 server 端操作,只需在模板中手动新增监控项即可。