本文共 2100 字,大约阅读时间需要 7 分钟。
LVS(Linux Virtual Server),即Linux虚拟服务器,是一个虚拟的服务器集群系统。该技术由中国国内最早的自由软件项目之一的成员章文嵩博士于1998年5月成立。LVS支持三种IP负载均衡技术:VS/NAT、VS/TUN和VS/DR,其中DR(Direct Routing)和TUN(Tunnel)方式更为常用。
LVS的调度单元是“连接”,支持十种调度算法,包括轮叫(rrr)、加权轮叫(wrr)、最小连接(lc)、加权最小连接(wlc)等。这些算法可以根据具体应用需求进行选择。
三种负载均衡技术的优缺点如下:
技术 | 特性 | 适用场景 |
---|---|---|
VS/NAT | 基于NAT协议,修改请求报文的源和目标地址 | 适用于服务器分布在不同子网的情况 |
VS/TUN | 基于IP隧道协议,封装请求报文 | 适用于需要跨区域或网络的场景 |
VS/DR | 不修改报文,仅改写MAC地址 | 适用于服务器位于同一物理网络的场景 |
在一般网络服务(如HTTP、邮件等)中,推荐使用加权最小连接调度(wlc)或加权轮叫调度(wrr)算法。基于局部性最少链接的调度算法(lblc、lblcr)主要适用于Web缓存集群,而目标地址散列调度和源地址散列调度适用于防火墙场景。最短预期延时调度(sed)和不排队调度(nq)则适用于处理时间较长的网络服务。
-g
:启用DR模式-i
:启用TUN模式-m
:启用NAT模式ipvsadm -L -n --stats
该命令可显示LVS的状态信息,包括本地地址、端口、连接数、输入输出包量及字节数。
ipvsadm
超时参数:ipvsadm --set tcp tcpfin udp
默认超时值为:TCP(900秒)、TCPFIN(120秒)、UDP(300秒)。
net.ipv4.tcp_tw_recyle=1net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_max_syn_backlog=8192net.ipv4.tcp_keepalive_time=1800net.ipv4.tcp_fin_timeout=30net.core.rmem_max=16777216net.core.wmem_max=16777216net.ipv4.tcp_rmem=4096 87380 16777216net.ipv4.tcp_wmem=4096 65536 16777216net.core.netdev_max_backlog=3000
ipvsadm
调整TCP和UDP的超时,确保连接及时剥离。在2.6.x内核中,需要关闭arp查询响应请求:
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce
在实际应用中,推荐结合业务需求选择调度算法:
随着网络环境的复杂化,LVS在云计算、容器化和边缘计算中的应用前景广阔。如何在高并发场景下优化LVS性能,如何支持新型网络协议(如QUIC),将是未来研究的重点方向。
转载地址:http://uxufk.baihongyu.com/