LVS相关知识点

LVS相关知识点 1、什么是集群集群是指将多台独立的物理服务器通过高性能网络连接起来在统一的调度和管理系统下形成一个整体对外呈现为单台服务器的技术架构。2、集群分类3、lvs的作用把大量用户请求分发到后端多台真实服务器实现集群对外统一服务、扩容、高可用四层高性能负载均衡工作在 OSI 七层模型的传输层TCP/UDP直接在内核态完成数据包转发吞吐量极高。集群统一入口向客户端屏蔽后端真实的服务器细节对外仅暴露一个虚拟 IPVIP横向扩展Scale-out可以非常方便地在后端增加或减少真实服务器RS的数量以应对业务流量涨落。4、lvs的4种模式及原理1) LVS-NAT 模式网络地址转换:修改请求报文的目标IP,多目标IP的DNAT原理请求包到达 DS调度器时修改目标 IP 为 RS 的 IPRS 响应时将响应包发给 DS由 DS 修改源 IP 为 VIP 后再返回给客户端。流量走向请求进 DS响应出 DS接收和返回客户端数据包时都要经过所以DS 容易阻塞。①客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口 9000port,VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口, RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口 9000port,VS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口9000--80 ,VS服务器把修改过报文的响应数据包回传给客户端②客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通 过PREROUTING后被ipvs结果并作nat转发。因为ipvs的作用点是在PREROUTING和INPUT链之间所以如果在prerouting中设定规则会干扰ipvs的工 作于是在做lvs时要把iptables的火墙策略全清理掉2) LVS-DR 模式直接路由模式 - 最常用①原理DS 与 RS 在同一物理局域网内。DS 不修改 IP 报文只将数据帧的目标 MAC 地址改写为选中的 RS 的 MAC 地址。RS 收到后直接处理并将响应包直接返回给客户端不经过 DS。②关键要求RS 需要在 loopback 网卡上绑定 VIP并配置 ARP 抑制忽略对 VIP 的 ARP 请求。3) LVS-TUN 模式IP 隧道模式①原理在原有的 IP 报文外层再封装一层新的 IP 头部源 IP 为 DIP目标 IP 为 RIP。RS 收到后解封隧道包直接将响应发给客户端。适用于跨机房/跨公网部署 RS 的场景。4 LVS-FULLNAT 模式全地址转换模式CIP -- DIP VIP -- RIP①原理DS 同时修改请求包的源 IP DIP和目标 IPRIP。RS 收到后响应给 DIPDS 再做一次完整 NAT 恢复原包发回客户端。VIP是公网地址RIP和DIP是私网地址且通常不在同一IP网络因此RIP的网关一般不会指向DIP ,RS收到的请求报文源地址是DIP因此只需响应给DIP但Director还要将其发往Client ,请求和响应报文都经由Director ,支持端口映射5、lvs的13种算法静态调度算法4 种1RR (Round Robin - 轮询)按顺序依次将请求分发给后端 RS不考虑服务器性能。2WRR (Weighted Round Robin - 加权轮询)根据 RS 设置的权重值进行轮询权重高分发的请求多。3SH (Source Hashing - 源地址哈希)根据请求的源 IP 计算 Hash相同 IP 的请求始终发给同一台 RS可实现简易会话保持。4DH (Destination Hashing - 目标地址哈希)根据请求的目标 IP 计算 Hash常用于正向代理集群/缓存服务器集群。动态调度算法9 种1LC (Least Connections - 最小连接数)优先分配给当前活动连接数最少的 RS。计算公式Overhead负载值activeconns活动链接数* 256 inactiveconns非活 动链接数2WLC (Weighted Least Connections - 加权最小连接数)默认算法结合权重和连接数。计算公式Overhead(activeconns * 256 inactiveconns) / weight3SED (Shortest Expected Delay - 最短期望延迟)在 WLC 基础上优化不考虑非活动连接。计算公式Overhead(activeconns 1 inactiveconns) * 256 / weight4NQ (Never Queue - 永不排队)无需排队。如果有空闲连接数为 0的 RS 直接分配没有空闲时采用 SED 算法。5LBLC (Locality-Based Least Connections - 基于局部性的最小连接)针对目标 IP 的动态 Hash优先分发给最近使用的 RS若该 RS 超载则分发给最小连接的 RS常用于 Cache 集群。6LBLCR (LBLC with Replication - 带复制功能的 LBLC)在 LBLC 基础上维护一个目标 IP 到一组 RS 的映射支持缓存热点数据的复制共享。7MH (Maglev Hashing - 麦格列夫哈希)Google 提出的 Maglev 一致性哈希算法在 RS 节点变更时能最大限度减少连接迁移。8FO (Fast Overflow - 快速溢出)根据 RS 的优先级Weight排序只要高优先级的 RS 未满载就一直分配给它溢出时才分给下一个。9OV (Overflow-Based - 基于溢出的调度)根据 RS 的权重和当前负载只有当高权重 RS 超出设定的阀值时才开始将请求分发给后一级 RS。6、lvs的多端口轮询问题解决方案防火墙标记FWM - Firewall Mark①利用iptables对发往特定多个端口的流量打上相同的 MARK 标记例如 Mark 10。②LVS 调度时不再基于具体的端口VIP:80 / VIP:443而是基于防火墙标记进行绑定VIP:10# 步骤 1: 使用 iptables 给 80 和 443 端口的数据包打上标记 10 [rootvsnode boot]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10 # 步骤 2: 在 ipvsadm 中基于防火墙标记创建虚拟服务 [rootvsnode boot]# ipvsadm -A -f 10 -s rr [rootvsnode boot]# ipvsadm -a -f 10 -r 192.168.0.10 -g [rootvsnode boot]# ipvsadm -a -f 10 -r 192.168.0.20 -g测试客户端[rootclient ~]# curl 192.168.0.200;curl -k https://192.168.0.200 RS2 - 192.168.0.20 RS1 - 192.168.0.107、lvs的会话粘滞解决方案会话粘滞是指确保同一个客户端在一段时间内的所有请求都能被路由到同一台后端服务RS避免登录失效。LVS 持久连接模板Persistence Mechanism -p在 LVS 中开启 -p 参数。当客户端建立首次连接时LVS 在内存中建立映射表在指定的超时时间内该 CIP 的后续所有请求都将被强制发送至同一台 RS。①设定ipvs调度策略[rootvsnode ~]# ipvsadm -A -f 10 -s rr -p 1 [rootvsnode ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 6666 rr persistent 1 - 192.168.0.10:0 Route 1 0 0 - 192.168.0.20:0②测试[rootclient ~]# curl 192.168.0.200 RS1 - 192.168.0.10 [rootclient ~]# curl 192.168.0.200 RS1 - 192.168.0.10