Loading... ### lvs简介 名词解释: **LVS:**Linux Virtual Server(虚拟服务器) **RS:**Real Server(真实服务器) **VIP:**Virtual IP(客户端访问IP) **DIP:**Director Server IP **RP:**Real Server IP LVS主要用于调度来自客户端的请求,将客户端的请求均衡的分配到后面的真实服务器,它的创始人是[章文嵩](https://baike.baidu.com/item/%E7%AB%A0%E6%96%87%E5%B5%A9 "章文嵩")。 <div class="tip inlineBlock warning"> 注意是均衡的分配,而不是平均分配!当然也可以平均分配 </div> LVS工作在内核空间的`INPUT`链上,用户空间用于管理LVS的`ipvsadm`工具,支持的协议`TCP, UDP, AH, EST, AH_EST, SCTP`等 查看内核是否支持LVS > \# grep -i -A 10 "IPVS" /boot/config-XXXXX 如果有以下内容,表示内核支持LVS # IPVS scheduler # CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_FO=m CONFIG_IP_VS_OVF=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m ### LVS类型 **1. lvs-nat** 多目标的DNAT模型:通常修改报文的目标地址(同时可能修改目标端口)根据算法挑选出的某RS的RIP实现转发;`由于实现在INPUT链上,所以不需要套接字`,这样LVS可以处理的请求就不止六万多的请求了,何况基于套接字还达不到六万。 (1) RS和DIP应该使用私网地址,且RS的网关要指向DIP (2) 请求和响应报文都要经过调度器 (3) 支持端口映射 (4) Real Server可以使用任意OS (5) RS的RIP和Director的DIP必须在同一个IP网段 **2. lvs-dr** Director Routing:通过修改请求报文的目标MAC地址进行转发,特点是:<font color="red">请求报文经过调度器,但是响应报文不会经过调度器</font> (1) VIP和RIP可以在同一网段,也可以不在同一个网段 (2) 响应报文不经过调度器 (3) 不支持端口映射 (4) Director Server和Real Server都必须有VIP (5) DIP和RIP可以不在在一个网段,前提是DIP和RIP能够通信(router) **3. lvs-tun** 隧道:不修改请求报文的ip首部,而是在原有的ip首部`cip<-->vip`再次封装一个ip首部`dip<-->rip` (1) VIP,RIP,DIP全部都是公网地址 (2) 不支持端口映射 (3) Real Server的OS必须支持隧道功能 (4) Real Servre的网关不能指向DIP (5) 请求报文必须接受Director调度,但是响应报文绝对不允许经过Director **4. lvs-fullnat** 通过同时修改报文的目标地址和源地址进行转发 (1) VIP是公网地址,RIP和DIP是私网 (2) 请求报文和响应报文都经过Director (3) 支持端口映射 (4) Real Server可以使用任意OS ### 调度算法 **静态算法:**只考虑算法,不考虑RS负载 rr:轮询调度 wrr:加权的轮询 sh:源地址hash dh:目标地址hash **动态算法:**即考虑算法又考虑RS负载 LC:Least Connection(最少连接) Overhead=Active*256+Inactive (负载=活动连接数量*256+非活动连接数),负载小的将被选中 WLC:加权的最少连接 Overhead=(Active*256+Inactive)/weight (活动连接数*256+非活动连接数)/权重 SED:Shortest Expection Delay(最短期望延迟) Overhead=(Active+1)*256/weight (活动连接+1)*256/权重 NQ:Never Queue(永不排队),是SED的改进 LBLC:Locality-Based LC(基于本地的最少连接) LBLCR:Locality-Based Least-Connection with Replication (带复制的LBLC算法) ### ipvsadm的基础命令 **集群管理** > ipvsadm -A|E|D -t|f|u service-address [-s scheduler] #增,改,删 -A: 添加集群 -t:指定VIP以及端口 -s:指定算法 -E:修改集群 -D:删除集群 **RS管理** > ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower] -a:添加RS -t:指明集群VIP以及端口 -f:指定报文标记 -r:指定RS服务器 -g:gateway,dr模型 -m:nat模型 -i:ipip,隧道模型 ipvsadm -d -t|u|f service-address -r server-address #删除 **查看和清空** 查看: > ipvsadm -L -n -c ... -n :基于数字格式显示(不反解名称) -c:显示连接详情 --stats:显示统计 --rate:显示速率 --sort:排序 --exact:显示精确值 清空: > ipvsadm -C -C:清空全部 -Z [-z|u|f service-address]:置零计数器 重载和保存: > ipvsadm -R|S ipvsadm -S -n > /etc/sysconfig/ipvsadm #保存 ipvsadm -R < /etc/sysconfig/ipvsadm #重载 ### 示例 1. 安装 ~]# yum install ipvsadm -y 2. 添加集群 ~]# ipvsadm -A -t 192.168.123.123:80(VIP:PORT) -s rr #添加集群,地址为VIP和端口,算法为rr 3. 添加RS ~]# ipvsadm -a -t 192.168.123.123:80(VIP:PORT) -r 192.168.123.12 -m #添加RS,为nat模型 4. 删除RS ~]# ipvsadm -d -t 192.168.123.123:80 -r 192.168.123.12 5. 删除集群 ~]# ipvsadm -D -t 192.168.123.123 最后修改:2019 年 10 月 07 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏