【无标题】lvs知识总结

发布时间:2026/7/31 14:18:42
【无标题】lvs知识总结 1.什么是集群集群是将多台独立服务器通过网络组合成一组逻辑整体对外统一提供服务解决单台服务器性能上限、单点故障问题核心目标高性能、高可用、高伸缩。2.集群分类1. 按功能目标划分负载均衡集群 LB Cluster多台服务器分摊用户请求提升并发承载能力代表LVS、Nginx、HAProxy。高可用集群 HA Cluster解决单点故障节点故障自动切换保障服务不中断代表Keepalived、Heartbeat。高性能计算集群 HPC Cluster拆分超大计算任务分发至多节点并行运算多用于科学计算、大数据。2. 按 OSI 工作层级划分四层集群传输层LVS基于 IP 端口转发性能极高七层集群应用层Nginx/HAProxy可解析 HTTP 协议支持 URL、Cookie 分发。3.lvs的作用LVS:Linux Virtual Server负载调度器内核集成章文嵩阿里的四层SLB(Server LoadBalance)是基于LVSkeepalived实现LVS官网:http://www.linuxvirtualserver.org核心作用流量分发接收客户端请求通过调度算法转发至后端 RS分摊并发压力统一入口对外暴露单一 VIP屏蔽后端多台服务器细节高吞吐内核态处理数据包转发性能远超七层代理支持十万级并发故障隔离自动检测后端 RS 健康状态下线故障节点避免无效转发跨机房调度TUN 模式支持跨公网、跨机房部署后端服务器。4.lvs的4种模式及原理1. NAT 模式网络地址转换原理调度器双网卡客户端请求到达 Director 后修改目标 IP 为 RS 内网 IPRS 回包时源 IP 统一改为 VIP所有进出流量都经过 LVS。特点配置简单、支持端口映射瓶颈在 LVS适合中小规模集群。2. DR 模式直接路由生产最常用原理仅修改二层 MAC 地址转发IP 全程不变RS 直接将响应包返回客户端回包不经过 LVS。特点性能最优、吞吐量高要求所有节点同网段RS 需绑定 VIP 在 lo 回环网卡。3. TUN 模式IP 隧道原理Director 给请求数据包新增一层 IP 隧道封装通过公网转发至跨机房 RSRS 解封装后直接回包客户端。特点支持跨机房、跨网段部署需要 RS 内核开启 IP 隧道模块。4. Full-NAT 模式完整 NAT原理同时修改请求包源 IP 目标 IP客户端 IP 转换为 LVS 内网 IPRS 网关无需指向 Director回包时反向转换。特点解决 NAT 模式 RS 网关限制后端可跨网段开销高于 DR云环境常用。5.lvs的13种算法静态调度4 种RR 轮询请求依次循环分发不区分服务器负载WRR 加权轮询给服务器分配权重权重越高分配请求越多SH 源地址哈希同一客户端 IP 永远调度至同一 RS天然实现会话粘滞DH 目标地址哈希同一目标 IP 请求固定分发至同一 RS多用于正向代理缓存。动态调度9 种LC 最小连接选择当前活跃连接数最少的 RSWLC 加权最小连接默认按权重与连接数比值调度权重高、连接少的服务器优先LBLC 基于本地最小连接缓存场景优先分发访问过目标资源的 RSLBLCR 带复制的本地最小连接LBLC 优化多节点共享缓存数据SED 最短预期延迟公式(连接数1)*1000/权重数值最小优先NQ 永不排队空闲 RS 优先分配无空闲时使用 SED 算法FO 加权公平队列按权重分配队列长度OVF 溢出调度限制单节点最大连接阈值MH 多目标哈希支持源 IP 目标 IP 端口组合哈希多端口场景专用。6.lvs的多端口轮询问题解决方案在Director上打防火墙标记iptables -t mangle -A PREROUTING -d 192.168.1.100 -p tcp --dport 80 -j MARK --set-mark 6666iptables -t mangle -A PREROUTING -d 192.168.1.100 -p tcp --dport 443 -j MARK --set-mark 6666ipvsadm -A -f 6666 -s rr添加RS1同时服务80和443 ipvsadm -a -f 6666 -r 192.168.1.10 -g ​ # 添加RS2同时服务80和443 ipvsadm -a -f 6666 -r 192.168.1.11 -g7.lvs的会话粘滞解决方案[rootdirector ~]# dnf install -y ipvsadm[rootdirector ~]# ip addr add 192.168.0.200/32 dev eth1 label eth1:0[rootrs1 ~]# ip addr add 192.168.0.200/32 dev lo label lo:0[rootrs1 ~]# sysctl -w net.ipv4.conf.lo.arp_ignore1net.ipv4.conf.lo.arp_ignore 1[rootrs1 ~]# sysctl -w net.ipv4.conf.lo.arp_announce2net.ipv4.conf.lo.arp_announce 2[rootrs1 ~]# sysctl -w net.ipv4.conf.all.arp_ignore1net.ipv4.conf.all.arp_ignore 1[rootrs1 ~]# sysctl -w net.ipv4.conf.all.arp_announce2net.ipv4.conf.all.arp_announce 2RS2上同理[rootrs1 ~]# dnf install -y httpd[rootrs1 ~]# echo RS1 (192.168.0.10) /var/www/html/index.html[rootrs1 ~]# systemctl start httpdclient[rootclient ~]# for i in {1..10}; do curl 192.168.0.200; doneRS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)RS2 (192.168.0.20)