首页 LVS手册(正式版)

LVS手册(正式版)

举报
开通vip

LVS手册(正式版)LVS手册修改历史时间说明修改人2006-11-29创建文档*****2006-12-6修改文档**********2007-1-11增加受攻击的应对措施*********系统有限公司版权所有 不得复制目录第一章IPVS负载均衡技术  31.1 LVS集群的通用结构  31.2 IP负载均衡技术  51.2.1通过NAT实现虚拟服务器(VS/NAT)  51.2.2通过直接路由实现虚拟服务器(VS/DR)  61.2.3通过IP隧道实现虚拟服务器(VS/TUN)  91.2.4三种I...

LVS手册(正式版)
LVS手册修改历史时间说明修改人2006-11-29创建文档*****2006-12-6修改文档**********2007-1-11增加受攻击的应对措施*********系统有限公司版权所有 不得复制目录第一章IPVS负载均衡技术  31.1 LVS集群的通用结构  31.2 IP负载均衡技术  51.2.1通过NAT实现虚拟服务器(VS/NAT)  51.2.2通过直接路由实现虚拟服务器(VS/DR)  61.2.3通过IP隧道实现虚拟服务器(VS/TUN)  91.2.4三种IP负载均衡技术比较  11第二章IPVSHeartBeatMon建立LVS系统  132.1 系统搭建流程  132.1.1 LoadBalancer的搭建流程  132.1.2 RealServer的搭建流程  132.2 内核升级  132.2.1 LDServer的内核编译参数  132.2.2 RealServer的内核编译参数  162.2.3 内核升级步骤  172.3 安装ipvsadm及配置IPVS  172.3.1 安装ipvsadm(install_ipvs.sh)  172.3.2 配置IPVS(config_ipvs.sh)  182.4 安装mon及配置mon  182.4.1 安装mon(install_mon.sh)  182.4.2 配置mon(config_mon.sh)  182.5 安装HeartBeat及配置HeartBeat  192.5.1 安装HeartBeat(install_HB.sh)  192.5.2 配置HeartBeat(config_HB.sh)  192.6 系统配置信息  202.7 自动化安装包使用说明(LVSPakeage.tar.gz)  202.8 RealServer的配置  21第三章VS/TUN模式压力测试报告  223.1 VS/TUN模式压力测试结论  223.2 千M网卡,模式VS/TUN(外网VIP,HTTP服务)  223.2.1 压力测试条件  223.2.2 LDSERVER的情况  233.2.3 REALSERVER172.16.80.49的情况  233.2.4 REALSERVER172.16.81.138的情况  243.2.5 REALSERVER172.16.13.52的情况  243.2.6.REALSERVER172.16.80.50的情况  253.2.6.REALSERVER结论  253.3 百M网卡,模式VS/TUN(内网VIP,UDP服务)  263.3.1 压力测试条件  263.3.2 LDSERVER的情况  263.3.3 REALSERVER172.19.58.150的情况  273.3.4 REALSERVER172.19.58.151的情况  273.3.5 REALSERVER172.19.58.152的情况  283.3.6 REALSERVER172.19.58.153的情况  283.3.7 REALSERVER172.19.58.154的情况  293.3.8 结论  29第四章高级话题  304.1充分利用服务器资源发挥LVS性能  304.1.1 双CPU超线程的至强服务器  304.1.2 双CPU双核心的至强服务器  304.2连接的相关性  314.3本地节点  334.4Mon监测程序  334.5系统可用性 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析   334.5RS上运行Squid  344.6系统绑定端口分析  344.7LD的网络拓扑及受攻击时的应对措施  354.7.1LD的网络拓扑  354.7.2LD受攻击时的应对措施  36附录1IPVSADM使用指南  381 名词解释  382 ipvsadm的用法和格式如下  383 命令选项  384 Q&A  41第一章IPVS负载均衡技术1.1 LVS集群的通用结构LVS集群采用IP负载均衡技术,属于IP层的交换(L4),具有很好的吞吐率。调度器分析客户端到服务器的IP报头信息,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器,LVS集群系统的通用结构如图1.1所示,主要包含四大部分:图1.1 LVS集群的通用结构负载调度器(loadbalancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址上的。当客户请求到达时,调度器只根据负载情况从服务器池中选出一个服务器,将该请求转发到选出的服务器,并记录这个调度;当这个请求的其他报文到达,也会被转发到前面选出的服务器。因为所有的操作都是在操作系统核心空间中将完成的,它的调度开销很小,所以具有很高的吞吐率。服务器池(serverpool),是一组真正执行客户请求的服务器,执行的任务有WEB、MAIL、FTP和DNS等。服务器池的结点数目是可变的,当整个系统收到的负载超过目前所有结点的处理能力时,可以在服务器池中增加服务器来满足不断增长的请求负载。对大多数网络服务来说,结点与结点间不存在很强的相关性,所以整个系统的性能可以随着服务器池的结点数目增加而线性增长。后端存储(backendstorage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。GraphicMonitor是为系统管理员提供整个集群系统的监视器,它可以监视系统中每个结点的状况。1.2 IP负载均衡技术在已有的IP负载均衡技术中有三种,一是通过网络地址转换实现虚拟服务器的VS/NAT技术(VirtualServerviaNetworkAddressTranslation),二是通过直接路由的VS/DR技术(VirtualServerviaDirectRouting),三是通过IP隧道实现虚拟服务器的VS/TUN技术(VirtualServerviaIPTunneling)。1.2.1通过NAT实现虚拟服务器(VS/NAT)VS/NAT的体系结构如图1.2所示,在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。图1.2 VS/NAT的体系结构以如下的VS/NAT配置为例,来了解报文的流程:ProtocolVirtualIPAddressPortRealIPAddressPortWeightTCP58.251.62.14180172.16.81.143801172.16.81.144802TCP58.251.62.14121172.16.81.145211数据流程的时序图为:图2.3 VS/NAT数据流程时序图1. 客户端浏览器输入58.251.62.141向58.251.62.141发出http请求.2.LoadBalancer的外网(eth0)收到该次请求.SOURCE210.22.23.64:4143DEST58.251.62.141:http3.  IPVS调度器根据各个RealServer的负载情况,动态地选择一台RealServer(例如172.16.81.144),将请求报文的目标地址改写发送给172.16.81.144SOURCE210.22.23.64:4143DEST172.16.81.144:http4.RealServer收到请求报文并处理形成响应报文,由于RealServer上的网关地址为LoadBalancer,响应报文从RealServer发往LoadBalancer。SOURCE58.251.62.141:httpDEST210.22.23.64:41435.LoadBalancer收到172.16.81.144的响应报文后,将响应报文的原地址修改为虚拟IP地址,并发送给客户端。SOURCE172.16.81.144:httpDEST210.22.23.64:41436. 客户认为得到正常的服务,而不知道是哪一台服务器处理的.1.2.2通过直接路由实现虚拟服务器(VS/DR)在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器中只负责调度请求而响应直接返回给客户,将极大地提高整个集群系统的吞吐量。VS/DR的体系结构如图1.4所示:调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB相连。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。图1.4 VS/DR的体系结构以如下的VS/NAT配置为例,来了解报文的流程:ProtocolVirtualIPAddressPortRealIPAddressPortWeightTCP58.251.62.141172.16.81.498058.251.62.138(172.16.81.138)80158.251.63.49(172.16.80.49)258.251.13.52(172.16.13.52)1数据流程的时序图为:图1.5 VS/DR数据流程时序图1. 客户端浏览器输入58.251.62.141向58.251.62.141发出http请求.2.LoadBalancer的外网(eth0)收到该次请求.SOURCE210.22.23.64.4157DEST172.16.80.49:http3.  IPVS调度器根据各个RealServer的负载情况,动态地选择一台RealServer,将请求报文转发给RealServer(例如172.16.80.49)SOURCE210.22.23.64.4157DEST172.16.80.49:http4. RealServer的内网(eth1)收到LoadBalancer发过来的IP报文并对IP报文解包,得到客户的请求包,发现包的目标地址被配置在本地的lo设备上,所以就处理这个请求。5. RealServer根据路由表将响应报文通过外网(eth0)直接返回给客户,请求报文的目标地址为VIP,响应报文的源地址也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户.SOURCE58.251.62.141:httpDEST210.22.23.64.41576.客户认为得到正常的服务,而不知道是哪一台服务器处理的。在VS/DR响应报文根据服务器的路由表直接返回给客户,而不经过负载调度器,所以负载调度器只处于从客户到服务器的半连接中,我们给出半连接的TCP有限状态机。如图1.6为VS/DR的TCP状态迁移,圈表示状态,箭头表示状态间的转换,箭头上的标识表示在当前状态上收到该标识的输入,迁移到下一个状态。VS/DR的TCP状态迁移是按照半连接的TCP有限状态机进行的。图1.6 VS/DR的TCP状态迁移1.2.3通过IP隧道实现虚拟服务器(VS/TUN)跟VS/DR 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 相同,VS/TUN多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。IP隧道(IPtunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。我们利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可能静态地建立一一对应的隧道,而是动态地选择一台服务器,将请求报文封装和转发给选出的服务器。这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。VS/TUN的体系结构如图3.3所示,各个服务器将VIP地址配置在自己的IP隧道设备上。VS/TUN的体系结构如图1.7所示图1.7 VS/TUN的体系结构以如下的VS/NAT配置为例,来了解报文的流程:ProtocolVirtualIPAddressPortRealIPAddressPortWeightTCP58.251.62.141172.16.81.498058.251.62.138(172.16.81.138)80158.251.63.49(172.16.80.49)258.251.13.52(172.16.13.52)1数据流程的时序图为:1. 客户端浏览器输入58.251.62.141向58.251.62.141发出http请求.2.LoadBalancer的外网(eth0)收到该次请求.SOURCE210.22.23.64.4157DEST58.251.62.141:http3.  IPVS调度器根据各个RealServer的负载情况,动态地选择一台RealServer,将请求报文封装在另一个IP报文中.4. LoadBalancer的内网(eth1)将封装后的IP报文发给选出的RealServerSOURCE172.16.81.141DEST172.16.80.49SOURCE210.22.23.64.4157DEST58.251.62.141:http(ipip-proto-4)5. RealServer的内网(eth1)收到LoadBalancer发过来的IP报文并对IP报文解包,得到客户的请求包,发现包的目标地址被配置在本地的IP隧道设备上,所以就处理这个请求。6. RealServer根据路由表将响应报文通过外网(eth0)直接返回给客户,请求报文的目标地址为VIP,响应报文的源地址也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户.SOURCE58.251.62.141:httpDEST210.22.23.64.41577.客户认为得到正常的服务,而不知道是哪一台服务器处理的。VS/DR负载调度器也只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移。1.2.4三种IP负载均衡技术比较三种IP负载均衡技术的优缺点归纳在下表中:VS/NATVS/DRVS/TUNServeranyNon-arpdeviceTunnelingservernetworkprivateLANLAN/WANservernumberlow(10~20)High(100)High(100)servergatewayloadbalancerOwnrouterownrouterVS/NAT的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限,当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。VS/DR优点是负载调度器可以处理大量的请求,因为调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户,这可以极大地提高LVS集群系统的伸缩性。缺点是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上。VS/TUN的优点是负载调度器可以处理大量的请求,它甚至可以调度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈,因为负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。缺点是VS/TUN技术有IP隧道的开销并且对服务器有要求,即所有的服务器必须支持“IPTunneling”或者“IPEncapsulation”协议。第二章IPVSHeartBeatMon建立LVS系统2.1 系统搭建流程由IPVS负载均衡技术可知,VS/TUN体系结构分为LoadBalancer和RealServer两大部分:2.1.1 LoadBalancer的搭建流程1内核升级以支持IPVS和IPTunneling2安装IPVS的管理工具ipvsadm并进行IPVS配置3安装RealServer的监控软件mon并进行mon设置4安装实现HA系统的软件HeartBeat并进行HeartBeat设置5系统启动脚本的配置.6假如您对安全步骤及安装过程不感兴趣,请直接跳到2.7节,按照说明文字,下载LVSPackage.tar.gz可以直接安装.2.1.2 RealServer的搭建流程1内核升级以支持IPTunneling2系统配置a对于使用了状态机及对应的iptables规则的主机,需要更新iptables的规则,取消其中所有依赖于状态机的配置,这有可能意味着现有的iptables规则的重写。b对于未使用状态机机器对应的iptables规则的主机,则无需做iptables规则的修改。c当整体切换完成后,需要关闭RealServer上对外服务的端口,以确保安全。2.2 内核升级Ipvs内核由其用途来说,主要分为2种:LD的和RS的。下面以内核版本2.6.16.21为例,分别说明2种内核的内核配置参数。2.2.1 LDServer的内核编译参数LDServer所需内核中需要进行的改动较多,主要为networkoption;lvs;及iptables,状态机。a  networkingoptions:进入networkpacketfiltering配置Core配置IP:b  配置LVS2.2.2 RealServer的内核编译参数RS的内核只需在现有内核的基础上开启netoptions中的iptunnlig选项即可,如下图:同时需要关闭状态机,公司内核中默认没有状态机的,因此,也可以不进行该配制。2.2.3 内核升级步骤a  根据LD/RS,将对应的内核放置在系统的/boot目录下。b  修改/etc/lilo.conf文件c  执行lilo命令,进行变更d  reboot需要注意的是,如果是跨内核版本升级,如2.4升到2.6,需要考虑主机的网线顺序的更换问题。2.3 安装ipvsadm及配置IPVS2.3.1 安装ipvsadm(install_ipvs.sh)a 下载对应内核版本的ipvsadmb 进入ipvsadm目录,并make以及makeinstallc 输入命令ipvsadm,若有如下提示则安装正确。IPVirtualServerversion1.2.1(size=65536)ProtLocalAddress:PortSchedulerFlags->RemoteAddress:Port ForwardWeightActiveConnInActConn2.3.2 配置IPVS(config_ipvs.sh)a 配置系统参数(eth0为绑定VIP的网卡设备)echo"0">/proc/sys/net/ipv4/ip_forwardecho"1">/proc/sys/net/ipv4/conf/all/send_redirects  echo"1">/proc/sys/net/ipv4/conf/default/send_redirectsecho"1">/proc/sys/net/ipv4/conf/eth0/send_redirectsb 配置IPVS的服务类型、VIP地址以及对应的RS信息,例如:/sbin/ipvsadm-A–t172.16.81.141:80-swlc/sbin/ipvsadm-a-t172.16.81.141:80-r172.19.81.139-i-w1/sbin/ipvsadm-a-t172.16.81.141:80-r172.19.80.50-i-w1…(ipvsadm的使用请参见附录1)2.4 安装mon及配置mon2.4.1 安装mon(install_mon.sh)a 软件的准备1mon-0.99.1.tar.gz2Mon-0.11.tar.gz3Time-HiRes-01.20.tar.gz4Period-1.20.tar.gz5Convert-BER-1.31.tar.gzb 安装perl模块,就是2.3.4.5,三个perl模块和一个Mon编译进系统cd<模块>perlMakeFile.plmakemakeinstallc 直接tarxvzfmon-0.99.1.tar.gz,mon就安装完毕。2.4.2 配置mon(config_mon.sh)a 将lvs的alert脚本lvs.alert复制到mon-0.99.1/alert.d,(lvs.alert请见LVSPackage.tar.gz)b 将mon的配置文件mon.cf复制到mon-0.99.1(mon.cf请见LVSPackage.tar.gz)2.5 安装HeartBeat及配置HeartBeat2.5.1 安装HeartBeat(install_HB.sh)a 软件准备1libnet-1.1.2.1.tar.gz2heartbeat-2.0.7.tar.gzb 安装libnettar-xzvflibnet-1.1.2.1.tar.gzcd/root/libnet./configuremakemakeinstallc 安装HeartBeattar-xzvfheartbeat-2.0.7.tar.gzrmheartbeat-2.0.7.tar.gzcdheartbeat-2.0.7groupadd-g65haclientuseradd-g65-u17hacluster./ConfigureMeconfiguremakemakeinstall2.5.2 配置HeartBeat(config_HB.sh)a 复制配置文件(下述配置文件请见LVSPackage.tar.gz)cpdoc/ha.cfdoc/haresourcesdoc/authkeys/etc/ha.d/cpdoc/ha.cf/etc/ha.d/ha.cfcpdoc/haresources/etc/ha.d/haresourcescpdoc/TencentLvs/etc/ha.d/resource.d/chmod600authkeysb 修改配置文件在/etc/ha.d/ha.cf中加入Active和StandbyLD的节点信息以及heartbeat心跳线的制作,例如echo"node$A_hostname">>/etc/ha.d/ha.cfecho"node$S_hostname">>/etc/ha.d/ha.cfecho“ucasteth1$S_hostip”>>/etc/ha.d/ha.cf在/etc/ha.d/haresources中加入需要拉动的资源信息,例如echo"S_hostnameIPaddr::172.16.81.141/24/eth1TencentLvs">>etc/ha.d/haresources2.6 系统配置信息将如下三句加入到/etc/rc.d/rc.local中/usr/lib/heartbeat/heartbeatSleep(40)/usr/lib/heartbeat/hb_takeover2.7 自动化安装包使用说明(LVSPakeage.tar.gz)1.  cpvmlinuz-2.6.16.21-p4-LVS-LD/boot/vmlinuz-2.6.16.21vi/etc/lilo.conf,增加如下语句image=/boot/vmlinuz-2.6.16.21root=/dev/sda1label=Linux2616read-only将default修改为default=Linux2616reboot2../install_ipvs.sh3../install_mon.sh4../install_HB.sh5.修改/usr/local/lvs/lvs.conf配置文件6../config_ipvs.sh,利用ipvsadm查看结果7../config_mon.sh8../configHB.shunameucastipphostphostip(ucastip为本机心跳IP,phostip为对方的心跳IP)9../startHB.shucastip(ucastip为自己的心跳IP)10.相应的iptables设置2.8 RealServer的配置a配置系统参数echo"0">/proc/sys/net/ipv4/ip_forwardb配置tunl0/sbin/ifconfigtunl0${VIP}broadcast${VIP}netmask0xffffffffup/sbin/routeadd-host${VIP}devtunl0c解决arp问题echo1>/proc/sys/net/ipv4/conf/tunl0/arp_ignoreecho2>/proc/sys/net/ipv4/conf/tunl0/arp_announceecho1>/proc/sys/net/ipv4/conf/all/arp_ignoreecho2>/proc/sys/net/ipv4/conf/all/arp_announced解决源地址验证问题echo0>/proc/sys/net/ipv4/conf/tunl0/rp_filterecho0>/proc/sys/net/ipv4/conf/all/rp_filter第三章VS/TUN模式压力测试报告3.1 VS/TUN模式压力测试结论1 对LoadBanlancer来说,在VS/TUN模式,千兆网卡的条件下,请求包的长度<1K的条件下,有如下结论:a LDSERVER可以支持到每秒200K个包b 在同等的情况下VS/DR模式比VS/TUN模式每秒处理的包量要多30%c 千兆网带宽不是瓶径d 由于对网卡的处理需要一个单独的CPU进行处理,系统的瓶径是处理网卡所消耗的CPU资源。e 对LoadBanlancer,由于IP封装,出流量稍微大于入流量2 当Banlancer使用百兆网卡时,网络资源也会是Banlancer的瓶径。3 在请求包比较大的时,比如大量上传请求的情况下,带宽也将成为瓶径。4 对REALSERVER来说,压力的情况等同于普通的SERVER的情况。3.2 千M网卡,模式VS/TUN(外网VIP,HTTP服务)图3.1千M网卡的压力测试结构3.2.1 压力测试条件请求包长度:360byte 响应包长度:1Kbyte压力测试机器配置:PE1850,4G,1*146G-4G,1*146GLDServer配置:PESC1425,8G,1*80GSATA-8G,1*80GRS配置:PESC1425,8G,1*80GSATA-8G,1*80G3.2.2 LDSERVER的情况图3.2 LDSERVER流量情况       图3.3 LDSERVER包量情况图5.4LDSERVER每个CPU的情况。结论:从CPU的情况可以看出,CPU1和CPU3有工作在上面,如图5.4所示,CPU使用基本上已经到90%以上,系统基本上已经达到极限,此时:1.流量达到270M以上2.包量达到200K以上3.网卡对应的CPU使用率90%以上3.2.3 REALSERVER172.16.80.49的情况图3.5172.16.80.49流量曲线        图3.6172.16.80.49包量曲线图3.7172.16.80.49CPU使用情况3.2.4 REALSERVER172.16.81.138的情况图3.8172.16.81.138流量曲线       图3.9172.16.81.138包量曲线图3.10 172.16.81.138CPU使用情况3.2.5 REALSERVER172.16.13.52的情况图3.11172.16.13.52流量曲线      图3.12 172.16.13.52包量曲线图3.13172.16.13.52CPU使用情况3.2.6.REALSERVER172.16.80.50的情况图3.14172.16.80.50流量曲线      图3.15 172.16.80.50包量曲线图3.16 172.16.80.50CPU使用情况3.2.6.REALSERVER结论从RealServer的CPU使用情况可以看出,CPU使用基本上已经到90%以上,系统基本上已经达到极限,此时:4.流量在140M左右5.包量50K以上,四个RS的出包量之和等于LD的出包量6.网卡对应的CPU使用率90%以上3.3 百M网卡,模式VS/TUN(内网VIP,UDP服务)图3.17 UDP压力测试结构3.3.1 压力测试条件请求包长度:12byte 响应包长度:12byte压力测试机器配置:PE1850,4G,1*146G-4G,1*146GLDServer配置:PE1850,4G,1*146G-4G,1*146GRS配置:PE1850,4G,1*146G-4G,1*146G3.3.2 LDSERVER的情况图3.18 LDSERVER流量情况    图3.19 LDSERVER包量情况图3.20 LDSERVERCPU情况图3.21 LDSERVER各个CPU情况3.3.3 REALSERVER172.19.58.150的情况图3.22 172.19.58.150的流量图    图3.23 172.19.58.150的包量图图3.24 172.19.58.150的CPU使用情况图3.3.4 REALSERVER172.19.58.151的情况图3.25172.19.58.151的流量图     图3.26 172.19.58.151的包量图图3.27 172.19.58.151的CPU使用情况图3.3.5 REALSERVER172.19.58.152的情况图3.28172.19.58.152的流量图    图3.29172.19.58.152的包量图图3.30172.19.58.152的CPU使用情况图3.3.6 REALSERVER172.19.58.153的情况图3.31 172.19.58.153的流量图    图3.32 172.19.58.153的包量图图3.33172.19.58.153的CPU使用情况图3.3.7 REALSERVER172.19.58.154的情况图3.34REALSERVER的流量图       图3.35 REALSERVER的包量图图3.36 REALSERVER的CPU使用情况图3.3.8 结论在百M网卡,模式VS/TUN(内网,UDP)下,可以再次印证到,CPU是LDSERVER的瓶径,172.19.58.145作为LDSERVER所能支持的最大包量是97K,TCP方式和UDP方式的最大包量差不多是相等的。第四章高级话题4.1充分利用服务器资源发挥LVS性能由测试报告可以看出,LoadBalancer的CPU资源的占用为整个LVS系统的瓶颈所在,因此,如何充分使用服务器的CPU资源使得LVS性能得到最大化,就是一个重要的问题,现就双CPU超线程的至强服务器和双CPU双核心的至强服务器做一个讨论。4.1.1 双CPU超线程的至强服务器在linux下,对于双CPU超线程的服务器来说,只要内核中开启了CPU的HT(超线程)功能,则可通过cat/proc/cpuinfo识别到4块CPU,分别为CPU0;CPU1;CPU2;CPU3。其中,CPU0和CPU1为同一个真实CPU的本身和它的超线程出的CPU。CPU2和CPU3同理。在linux下。我们可以手动的静态配置网卡的irq路由,来达到使专门的一块CPU完全处理某对应网卡中断的目的。这样可以使得eth0网卡和eth1网卡的计算量完全分配到2块真实CPU上,充分发挥出双CPU的性能。具体处理方法如下:1,cat/proc/cpuinfo |grepprocessor|wc–l查看CPU处理器个数2,ETH0_NU=`cat/proc/interrupts|grepeth0|awk-F':''{print$1}'`查看处理eth0网卡的irq中断号。3,echo8>/proc/irq/$ETH0_NU/smp_affinity指定CPU3来处理eth0网卡的中断请求。4,ETH1_NU=`cat/proc/interrupts|grepeth1|awk-F':''{print$1}'`查看处理eth1网卡的irq中断号。5,echo2>/proc/irq/$ETH1_NU/smp_affinity指定CPU1来处理eth1网卡的中断请求。4.1.2 双CPU双核心的至强服务器在linux下,对于双CPU双核心的服务器来说,若内核中没有开启HT选项,则默认可以识别到4块CPU。分别为CPU0;CPU1;CPU2;CPU3。其中CPU0和CPU1为同一CPU的2个核。基于双核至强CPU的架构,对于同一物理CPU的2个核心是共享4M二级Cache的,因此,将一块网卡的中断对应到同一个物理CPU的2个核心上,可以在保证二级Cache命中率的前提下,充分发挥双核心CPU的性能,进一步提高LDServer的处理能力。具体处理方法如下:1.cat/proc/cpuinfo |grepprocessor|wc–l查看CPU处理器个数2.ETH0_NU=`cat/proc/interrupts|grepeth0|awk-F':''{print$1}'`查看处理eth0网卡的irq中断号。3.echoc>/proc/irq/$ETH0_NU/smp_affinity指定CPU2和CPU3来处理eth0网卡的中断请求。4.ETH1_NU=`cat/proc/interrupts|grepeth1|awk-F':''{print$1}'`查看处理eth1网卡的irq中断号。5.echo3>/proc/irq/$ETH1_NU/smp_affinity指定CPU0和CPU1来处理eth1网卡的中断请求。4.2连接的相关性在之前的LVS配置和使用中,均假设每个连接都相互独立的,所以每个连接被分配到一个服务器,跟过去和现在的分配没有任何关系。但是,有时由于功能或者性能方面的原因,一些来自同一用户的不同连接必须被分配到同一台服务器上。FTP是一个因为功能设计导致连接相关性的例子,在FTP使用中,客户需要建立一个控制连接与服务器交互命令,建立其他数据连接来传输大量的数据。在主动的FTP模式下,客户 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 FTP服务器它所监听的端口,服务器主动地建立到客户的数据连接,服务器的端口一般为20。IPVS调度器可以检查报文的内容,可以获得客户通知FTP服务器它所监听的端口,然后在调度器的连接Hash表中建立一个相应的连接,这样服务器主动建立的连接可以经过调度器。但是,在被动的FTP模式下,服务器告诉客户它所监听的数据端口,服务器被动地等待客户的连接。在VS/TUN或VS/DR下,IPVS调度器是在从客户到服务器的半连接上,服务器将响应报文直接发给客户,IPVS调度器不可能获得服务器告诉客户它所监听的数据端口。SSL(SecureSocketLayer)是一个因为性能方面原因导致连接相关性的例子。当一个SSL连接请求建立时,一个SSL的键值(SSLKey)必须要在服务器和客户进行选择和交换,然后数据的传送都要经过这个键值进行加密,来保证数据的安全性。因为客户和服务器协商和生成SSLKey是非常耗时的,所以SSL协议在SSLKey的生命周期内,以后的连接可以用这个SSLKey和服务器交换数据。如果IPVS调度器将以后的连接调度到其他服务器,这会导致连接的失败。在IPVS中解决连接相关性的方法是持久服务(PersistentService)的处理。在IPVS中使用两个模板来表示客户和服务器之间的持久服务,模板〈protocol,client_ip,0,virtual_ip,virtual_port,dest_ip,dest_port〉表示来自同一客户client_ip到虚拟服务〈virtual_ip,virtual_port〉的任何连接都会被转发到目标服务器〈dest_ip,dest_port〉,模板〈protocol,client_ip,0,virtual_ip,0dest_ip,0〉表示来自同一客户client_ip到虚拟服务器virtual_ip的任何连接都会被转发到目标服务器dest_ip,前者用于单一的持久服务,后者用于所有端口的持久服务。当一个客户访问一个持久服务时,IPVS调度器会在连接Hash表中建立一个模板,所以在采用持久服务时,调度器需要记录每个连接的状态,会占用一定的内存空间(每个连接占用128byte)。这个模板会在一个可设置的时间内过期,如果模板有所控制的连接没有过期,则这个模板不会过期。在这个模板没有过期前,所有来自这个客户到相应服务的任何连接会被发送到同一台服务器。在ipvsadm设置时可以指定-p选项加上超时时间代表调度器实现持久服务(超时时间单位为s),例如ipvsadm-A-t211.1.1.1:80-p30。持久服务还可设置持久的粒度,即可设置将来自一个C类地址范围的所有客户请求发送到同一台服务器。这个特征可以保证当使用多个代理服务器的客户访问集群时,所有的连接会被发送到同一服务器。虽然持久服务可能会导致服务器间轻微的负载不平衡,因为持久服务的一般调度粒度是基于每个客户机的,但是这有效地解决连接相关性问题,如FTP、SSL和HTTPCookie等。4.3本地节点本地结点(LocalNode)功能是让调度器本身也能处理请求,在调度时就相当一个本地结点一样,在实现时就是根据配置将部分连接转交给在用户空间的服务进程,由服务进程处理完请求将结果返回给客户。该功能的用处如下:当集群中服务器结点较少时,如只有三、四个结点,调度器在调度它们时,大部分的CPU资源是闲置着,可以利用本地结点功能让调度器也能处理一部分请求,来提高系统资源的利用率。在分布式服务器中,我们可以利用IPVS调度的本地结点功能,在每台服务器上加载IPVS调度模块,在一般情况下,利用本地结点功能服务器处理到达的请求,当管理程序发现服务器超载时,管理程序将其他服务器加入调度序列中,将部分请求调度到其他负载较轻的服务器上执行。在地理上分布的服务器镜像上,镜像服务器利用本地结点功能处理请求,当服务器超载时,服务器通过VS/TUN将请求调度到邻近且负载较轻的服务器上。4.4Mon监测程序在mon的mon.d目录下有大量的服务 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 脚本,但由于RS上搭建的服务种类繁多,mon.d中的脚本不一定能完全满足要求,所以必须编写监测RS上服务的脚本和程序。实现针对具体业务的检测脚本非常简单,只需做到如下两点:1.可以用任何语言编写检测脚本或程序,用监测RS上业务时exit0代表RS上的业务服务正常,exit1代表RS上的业务服务不正常。2.将检测脚本或程序复制到mon.d目录下即可,在mon.cf中就可以指定Mon总是在运行检测脚本完毕后才会运行下一检测脚本,例如mon.cf中设定时间间隔为10s,但是检测脚本运行时间超过10秒,那么mon不会运行新的检测脚本,所以检测脚本的运行时间需要比mon设定的检测间隔时间短。4.5系统可用性分析在LVS/TUN模式下,客户端首先向LoadBalancer发出请求,之后LoadBalancer将请求报文转给RealServer,最后RealServer将响应报文回复给客户端。在这个过程中,为保证系统的可用性,必须做到:1,当LoadBalancer不能正常工作时(譬如遭受恶意或非恶意的故障),必须立刻由另外一台服务器接管LoadBalancer的VIP,并且能提供和LoadBalancer相同的服务。2,当某一台RealServer不能正常提供服务时,LoadBalancer必须立刻收到该消息,在RealServer不能正常提供服务的时段内不转发任何客户端的请求,当RealServer能恢复正常时,LoadBalancer也必须能收到该消息,将客户端请求负载均衡到该机器上。在IPVSHeartBeatMon系统中,很好的完成了如上两点,利用HeartBeat的心跳机制进行主备LoadBalancer之间的切换,利用Mon对RealServer进行实时的监测。在my.qq.com中进行如下测试很好的论证了这两点:1,LoadBalancer重启,此时服务遭受中断,但在三秒后服务恢复正常,备用LoadBalancer将主LoadBalancer完全接管,此后备用LoadBalancer的流量和主LoadBalancer的流量提供服务时的流量相同。2,三台RealServer中某台的http服务关闭,八秒后LoadBalancer探测到该RealServer不能正常提供服务(探测间隔可设置,最小为一秒),实时刷新ipvs规则,以后的请求将不再导向到该RealServer。3,启动第2步中那台RealServer的http服务,八秒后LoadBalancer探测到该RealServer能正常提供服务,实时刷新ipvs规则,以后的请求将继续负载均衡到该RealServer。4.5RS上运行Squid对于很多cache类的业务采用squid能够大大提供系统性能4.6系统绑定端口分析按照第二章的步骤建立LVS系统后,利用netstat会发现在0.0.0.0上绑定了四个端口:Tcp    0.0.0.0:2583    0.0.0.0:*    LISTEN    23614/perlUdp    0.0.0.0:32774    0.0.0.0:*         11363/heartbeat:wrUdp    0.0.0.0:2583    0.0.0.0:*         23614/perlUdp    0.0.0.0:694    0.0.0.0:*          11363/heartbeat:wr由上可以得知,由perl绑定了一个TCP端口处于listen状态,还绑定了一个udp端口,heartbeat绑定了两个UDP端口。Perl绑定的两个外网端口可以通过修改配置文件来解决,在mon.cf中加入如下两句即可(可通过config_mon.sh自动加入,更新后的config_mon.sh已经解决该问题,ipL为内网IP):echo"serverbind=$ipL">mon.cfecho"trapbind=$ipL">>mon.cfheartbeat配置文件中并没有选项来配置需要绑定的IP,故需要修改源码解决。但是修改源码有一定风险,所以推荐尽量用iptables对端口进行控制。附件中heartbeat-2.7.0-bindeth1.tar.gz为只绑定内网IP的源码,安装和第二章所述安装一致,只是在配置需要注意,在文件ha.cf中的ucast选项必须为ucasteth1phostip,其中phostip一定是另外一台LD的内网IP。4.7LD的网络拓扑及受攻击时的应对措施4.7.1LD的网络拓扑作为对外服务的LVS的前端LD服务器,原则上需要部署在专区中,并配置上相应的网络、机架资源环境作为保障。目前对于主—备的LD部署 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 来讲,比较推荐采用下面的网络拓扑方案:同组的主LDServer和备份LDServer分别接入不同的接入层交换机,并上连到不同的核心交换机中,一旦出现内网接入层或单核心故障,可以快速进行切换。示意图如下:4.7.2LD受攻击时的应对措施由于LD承担着后面所有接入层服务器外网流量的接入任务,且自身不具有AntiDDOS功能,一旦受到恶意的攻击,其带来的影响将会是非常严重的。因此,我们必须考虑这样的情况并预先做好应对的防范措施。现就具体的情况进行一个分析:(1)单个或多个LD的VIP受到攻击对于整个LD专区来说,在其外网接入端,会需要部署一台AntiDDOS的黑洞设备,并预先设置好对应的路由及应急切换策略,一旦出现针对某VIP的攻击时,则将该VIP的所有外网入流量切换到黑洞设备上,过滤后再转回LD的VIP。最大程度上避免LD受到影响。(2)LD专区所在IDC的外网核心受到攻击或LD专区所在IDC掉电由于LD专区是建立在某一物理的IDC中的,一旦出现该物理IDC外网核心受攻击或该物理IDC掉电的情况,则所有LD对应的服务都无可避免的将受到影响。此时,我们只能通过采取DNS回退的办法来应急处理。该办法需要满足以下2个条件:A、预先对所有切换到LVS上的DNS进行TTL=1800或更低的设置。B、有维护一个LD--DNS—IP对应关系表,一旦出现攻击,可以通过该表作为进行DNS回退的依据。如果以上两条件满足,则受攻击时,服务恢复的时间大概可估算为:服务受影响时间=DNS变更的实施时间DNS变更的完全生效时间如果操作得当,服务理论上可以在1小时左右完全恢复正常。附录1IPVSADM使用指南1 名词解释virtual-service-address(VIP):虚拟服务器的ip地址real-service-address(RIP):是指真实服务器的ip地址scheduler:调度方法2 ipvsadm的用法和格式如下ipvsadm-A|E-t|u|fvirutal-service-address:port[-sscheduler][-p[timeout]][-Mnetmask]ipvsadm-D-t|u|fvirtual-service-addressipvsadm-Cipvsadm-Ripvsadm-S[-n]ipvsadm-a|e-t|u|fservice-address:port-rreal-server-address:port[-g|i|m][-wweight]ipvsadm-d-t|u|fservice-address-rserver-addressipvsadm-L|l[options]ipvsadm-Z[-t|u|fservice-address]ipvsadm--settcptcpfinudpipvsadm--start-daemonstate[--mcast-interfaceinterface]ipvsadm--stop-daemonipvsadm-h3 命令选项-A--add-service在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。-E--edit-service编辑内核虚拟服务器表中的一条虚拟服务器记录。-D--delete-service删除内核虚拟服务器表中的一条虚拟服务器记录。-C--clear清除内核虚拟服务器表中的所有记录。-R--restore恢复虚拟服务器规则-S--save保存虚拟服务器规则,输出为-R选项可读的格式-a--add-server在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器-e--edit-server编辑一条虚拟服务器记录中的某条真实服务器记录-d--delete-server删除一条虚拟服务器记录中的某条真实服务器记录-L|-l--list显示内核虚拟服务器表,输出对应文件/proc/net/ip_vs-Z--zero虚拟服务表计数器清零(清空当前的连接数量等)--settcptcpfinudp设置连接超时值--start-daemon启动同步守护进程。他后面可以是master或backup,用来说明LVSRouter是master或是backup。在这个功能上也可以采用keepalived的VRRP功能。
本文档为【LVS手册(正式版)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:121KB
软件:Word
页数:70
分类:
上传时间:2022-08-19
浏览量:10