怎么禁用Linux下的lvs两台服务器lvs

Linux系统技术交流QQ群(2632018)验证问题***:刘遄
lvs-nat模型构建
1.lvs-nat模型示意图
本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的 7
VS内核都支持ipvs功能,且***ipvsadm控制书写lvs规则工具。
RS端两台服务器为httpd服务器做请求的负载均衡。
1) 客户端可以使用Windows上的浏览器,会后缓存影响结果,所以采用CentOS上的curl命令请求http协议显示更加直观
2) DIP上不能配置iptables规则
2.VS网卡配置
(1)增加网卡
在"虚拟机设置"中增加一个网络适配器设备,并将其自定义特定网络为VMnet2模式,此处为了模拟负载均衡服务器的两张网卡处于不同网段
(2)配置VS两张网卡的IP地址
[root@localhost ~]# nmtui # CentOS 7 文本图形界面配置网卡命令
[root@localhost ~]# systemctl start network.service
网络适配器1(172.16.249.57)模拟为外网网卡,网络适配器2(192.168.100.1)模拟为内网,且该网卡的Ip地址要和RS服务器得ip在同一网段,DIP作为RIP的网络调度(网关),无需配置GATEWAY
[root@localhost~]# ifconfig
3.RS网卡配置
此处使用两台CentOS 7虚拟机作为负载均衡后端真实响应主机,***RPM包格式httpd服务,并启动服务。nmtui命令配置网卡信息,RS1的IP:192.168.100.2,RS2的IP:192.168.100.3,RIP和DIP在同一网段,虚拟机网卡和DIP同时匹配值为VMnet2模式,且两台RS服务器主机网关指向DIP:192.168.100.1
[root@localhost~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd.service
注意:***完成后在各httpd服务器上配置测试页面,/var/www/html/index.html.
[root@localhost ~]# nmtui # 配置方法同上,此处省略
[root@localhost ~]# systemctl start network.service
[root@localhost~]# ifconfig
4.测试所有主机是否能够通信
用ping命令测试各节点的通信,例如RIP1和VIP、DIP、RIP2之间是否能够通信
[root@localhost ~]# ping IPADDR
5.VS主机:核心转发和***ipvsadm
(1)***ipvsadm组件
[root@localhost ~]# yum install -y ipvsadm
(2)启动网卡间核心转发功能
[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
[root@localhost~]# cat /proc/sys/net/ipv4/ip_forward
6.VS主机:定义配置lvs-nat服务(此处采用rr算法)
(1)定义ipvsadm负载均衡集群规则,并查看
此处定义DIP是以-s指定为rr算法进行轮询调度,-m指定模式为lvs-nat,配置命令如下:
[root@localhost~]# ipvsadm -A -t 172.16.249.57:80 -s rr
[root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.2:80 -m
[root@localhost~]# ipvsadm -a -t 172.16.249.57:80 -r 192.168.100.3:80 -m
[root@localhost~]# ipvsadm -L -n
(2)Client客户机测试
在客户端主机上使用curl命令对VIP发起请求,负载均衡服务器会将请求按照rr算法依次将请求调度给不同的主机进行处理,依次请求给分发给192.168.100.2和192.168.100.3主机响应。
[root@localhost~]# curl http://172.16.249.57
7.VS主机:定义配置lvs-nat服务(此处采用wrr算法)
(1)定义ipvsadm负载均衡集群规则,并查看
此处将在上面lvs-nat的rr的基础上进行修改,改成wrr加权轮询算法;将192.168.100.2的权重设置为1,192.168.100.3的权重设置为3。
[root@localhost~]# ipvsadm -E -t 172.16.249.57:80 -s wrr
[root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.2 -w 1 -m
[root@localhost~]# ipvsadm -e -t 172.16.249.57:80 -r 192.168.100.3 -w 1 -m
[root@localhost~]# ipvsadm -L -n
(2)Client客户机测试
在客户端主机用curl发起请求,负载均衡主机VS会将其按照权重大小转发给各个主机,四个请求有三个发给了192.168.100.3请求响应,一个发给了192.168.100.2主机处理。并以此算法做轮询负载请求
[root@localhost~]# curl http://172.16.249.57
lvs-dr模型构建
1.lvs-dr模型示意图
三台主机为虚拟机CentOS 7,每台主机仅有一块网卡,且使用桥接方式都指向外部网络的网关172.16.100.1
2.配置VS和RS服务器的VIP
此处的VIP均已别名的形式配置在往卡上,VS是配置在对外通信的DIP的网卡上;RS配置在lo本地回环网卡
注意:此时配置的VIP的子网掩码必须为255.255.255.255,广播地址为自己本身
VS:[root@localhost~]# ifconfig eno 172.16.50.50 netmask 255.255.255.255 broadcast172.16.50.50 up
RS:[root@localhost~]# ifconfig lo:0 172.16.50.50 netmask 255.255.255.255broadcast 172.16.50.50 up
3.RS服务器上配置路由
[root@localhost~]# route add -host 172.16.50.50 dev lo:0
4.RS服务器配置APR内核参数修改
[root@localhost~]# ll /proc/sys/net/ipv4/conf
(1)ARP响应行为和ARP解析行为内核参数:
1)arp_annouce定义通告级别
0:默认级别,将本地的任何接口上的配置的地址都在网络中通告
1:尽量避免向本主机上的其他网卡进行网络通信,特殊情况下其他接口也可以
2:总是使用最佳网络地址接口(仅使用定义的网卡接口在同网络通信)
2)arp_ignore定义响应级别(0-8九个级别),响应时忽略方式
0:都全都响应
1:只对从本接口进入的请求响应,且本接口地址是个网络地址
注释:一般使用arp_annouce=2,arp_ignore=1
(2)配置各RS主机参数
注意:all必须配置、eno(本地)和lo两个可以同时全部配置或者配置其中一个
RealServer内核参数:
#echo 1 & /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 & /proc/sys/net/ipv4/conf/all/arp_announce
#echo 1 & /proc/sys/net/ipv4/conf/INTERFACE/arp_ignore
# echo 2 & /proc/sys/net/ipv4/conf/INTERFACE/arp_announce
注意:INTERFACE为你的物理接口;此处网卡接口指的是eno和lo
5.VS主机:定义配置lvs-dr模式(此处采用rr算法)
(1)配置查看
[root@localhost~]# ipvsadm -A -t 172.16.50.50:80 -s rr
[root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.10 -g
[root@localhost~]# ipvsadm -a -t 172.16.50.50:80 -r 172.16.200.11 -g
[root@localhost~]# ipvsadm -L -n
[root@localhost~]# curl http://172.16.50.50
因为基于rr算法调度,依次分发给RS主机
通过防火墙标记来定义lvs
1.FWM防火墙标记功能
防火墙标记可以实现多个集群服务绑定为同一个,实现统一调度;将共享一组RS的集群服务统一进行定义
FWM基于iptables的mangle表实现防护墙标记功能,定义标记做策略路由
2.FWM定义集群的方式
(1)在director上netfilter的mangle表的PREROUTING定义用于"打标"的规则
[root@localhost~]#iptables -t mangle -A PREROUTING -d $vip -p $protocol --dport $port -j MARK--set-mark #
$vip:VIP地址
$protocol:协议
$port:协议端口
(2)基于FWM定义集群服务:
[root@localhost~]#ipvsadm -A -f # -s scheduler
3.实例演示
[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.50.50 -p tcp --dport 80 -j MARK--set-mark 5
[root@localhost~]# ipvsadm -A -f 5 -s rr
[root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.10 -g
[root@localhost~]# ipvsadm -a -f 5 -r 172.16.200.11 -g
LVS持久连接功能:lvs persistence
1.lvs persistence功能
无论ipvs使用何种scheduler,其都能够实现在指定时间范围内始终将来自同一个ip地址的请求发往同一个RS;实现方式和lvs调度的十种算法无关,通过lvs持久连接模板(hash表)实现,当超过自定义的可持节连接时长候再根据LVS算法本身进行调度。
ipvsadm命令中-p选项实现,在-p后不指定具体数字(单位:秒),默认为300,到时候会自动延长2分钟,对于web本身就是15秒
(1)每端口持久(PPC)
客户端对同一服务端口发起请求,会基于该服务的端口实现请求在一段时间内对同一RS服务器持久连接;
例如:有两台主机做为RS服务器做http和hssh的两种服务的集群,仅http做每端口持久,Client请求会实现绑定在,但是22号端口请求不会绑定在同一台RS
(2)每客户端持久(PCC):定义tcp或udp协议的0号端口为集群服务端口
director会将用户的任何请求都识别为集群服务,并向RS进行调度;同一客户端的请求任何端口都发往同一台第一次选定的RS服务器
(3)每防火墙标记持久(PFWMC)
将两个或两个以上服务通过防火墙打标绑定在一起,这些服务的请求实现同时定向与同一台RS服务器,服务绑定同一RS
lvs-dr模式下以rr算法绑定http和https服务
[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 80 -j MARK--set-mark 99
[root@localhost~]# iptables -t mangle -A PREROUTING -d 172.16.100.9 -p tcp --dport 443 -j MARK--set-mark 99
[root@localhost~]# ipvsadm -A -f 99 -s rr -p
[root@localhost~]# ipvsadm -a -f 99 -r 172.16.100.68 -g
[root@localhost~]# ipvsadm -a -f 99 -r 172.16.100.69 -g
附录:LVS-DR类型RS脚本示例
#!/bin/bash
vip=172.16.50.50
interface="lo:0"
echo1 & /proc/sys/net/ipv4/conf/all/arp_ignore
echo1 & /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 & /proc/sys/net/ipv4/conf/all/arp_announce
echo2 & /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig$interface $vip broadcast $vip netmask 255.255.255.255 up
routeadd -host $vip dev $interface
echo0 & /proc/sys/net/ipv4/conf/all/arp_ignore
echo0 & /proc/sys/net/ipv4/conf/lo/arp_ignore
echo0 & /proc/sys/net/ipv4/conf/all/arp_announce
echo0 & /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig$interface down
ififconfig lo:0 |grep $vip && /dev/ then
echo"ipvs is running."
echo"ipvs is stopped."
echo"Usage: `basename $0` {start|stop|status}"
原文来自:
本文地址:编辑:烨子,审核员:张宏宇
为您推荐一些与本文相关的文章:
进阶课程目录
第24章 使用Xen与Kvm部署虚拟化服务环境。(即将公布)
Linux技术交流QQ群
向每个正在奋斗的Linuxer致敬.
Linux技术交流群A:560843
Linux技术交流群B:340829
Linux技术交流群C:463590
Linux技术交流群D:915246
Linux技术交流群E:1663106
Linux技术交流群F:1653851
Linux技术交流群G:2632018
Linux技术交流群H:2636170
Linux技术交流群I:2650582
全国Linux技术交流群(总):
9月0 篇文章10月0 篇文章11月0 篇文章12月0 篇文章
1月0 篇文章12月0 篇文章用户名:南非蚂蚁
文章数:187
评论数:1603
访问量:2935614
注册日期:
阅读量:1297
阅读量:3317
阅读量:450332
阅读量:1134904
51CTO推荐博文
一、 LVS简介
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站()、向RealPlayer提供音频视频服务而闻名的Real公司()、全球最大的开源网站(sourceforge.net)等。
二、&LVS体系结构
使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,用Server Array表示,最底端的数据共享存储层,用Shared Storage表示,在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。
LVS体系结构如图1所示:
图1 LVS的体系结构
下面对LVS的各个组成部分进行详细介绍:
&Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就***在Director Server上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。同时,在Director Server上还要***对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。
&Server Array层:由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。
&Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red hat的GFS文件系统,oracle提供的OCFS2文件系统等。
从整个LVS结构可以看出,Director Server是整个LVS的核心,目前,用于Director Server的操作系统只能是Linux和FreeBSD,linux2.6内核不用任何设置就可以支持LVS功能,而FreeBSD作为Director Server的应用还不是很多,性能也不是很好。
对于Real Server,几乎可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。
三、& LVS集群的特点
3.1& IP负载均衡与负载调度算法
1.IP负载均衡技术
负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的是IP负载均衡技术。
LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:***在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。
当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR,详述如下:
&VS/NAT: 即(Virtual Server via Network Address Translation)
也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。在服务器端得到数据后,Real Server返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
可以看出,在NAT方式下,用户请求和响应报文都必须经过Director Server地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。
&VS/TUN :即(Virtual Server via IP Tunneling)
也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
&VS/DR: 即(Virtual Server via Direct Routing)
也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
2.负载调度算法
上面我们谈到,负载调度器是根据各个服务器的负载情况,动态地选择一台Real Server响应用户请求,那么动态选择是如何实现呢,其实也就是我们这里要说的负载调度算法,根据不同的网络服务需求和服务器配置,IPVS实现了如下八种负载调度算法,这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其它资料。
&轮叫调度(Round Robin)
&轮叫&调度也叫1:1调度,调度器通过&轮叫&调度算法将外部用户请求按顺序1:1的分配到集群中的每个Real Server上,这种算法平等地对待每一台Real Server,而不管服务器上实际的负载状况和连接状态。
&加权轮叫调度(Weighted Round Robin)
&加权轮叫&调度算法是根据Real Server的不同处理能力来调度访问请求。可以对每台Real Server设置不同的调度权值,对于性能相对较好的Real Server可以设置较高的权值,而对于处理能力较弱的Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服务器资源。同时,调度器还可以自动查询Real Server的负载情况,并动态地调整其权值。
&最少链接调度(Least Connections)
&最少连接&调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用&最小连接&调度算法可以较好地均衡负载。
&加权最少链接调度(Weighted Least Connections)
&加权最少链接调度&是&最少连接调度&的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。
其它四种调度算法分别为:基于局部性的最少链接(Locality-Based Least Connections)、带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)、目标地址散列(Destination Hashing)和源地址散列(Source Hashing),对于这四种调度算法的含义,本文不再讲述,如果想深入了解这其余四种调度策略的话,可以登陆LVS中文站点zh.linuxvirtualserver.org,查阅更详细的信息。
3.2 高可用性
LVS是一个基于内核级别的应用软件,因此具有很高的处理性能,用LVS构架的负载均衡集群系统具有优秀的处理能力,每个服务节点的故障不会影响整个系统的正常使用,同时又实现负载的合理均衡,使应用具有超高负荷的服务能力,可支持上百万个并发连接请求。如配置百兆网卡,采用VS/TUN或VS/DR调度技术,整个集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。
3.3 高可靠性
LVS负载均衡集群软件已经在企业、学校等行业得到了很好的普及应用,国内外很多大型的、关键性的web站点也都采用了LVS集群软件,所以它的可靠性在实践中得到了很好的证实。有很多以LVS做的负载均衡系统,运行很长时间,从未做过重新启动。这些都说明了LVS的高稳定性和高可靠性。
3.4 适用环境
LVS对前端Director Server目前仅支持Linux和FreeBSD系统,但是支持大多数的TCP和UDP协议,支持TCP协议的应用有:HTTP,HTTPS ,FTP,SMTP,,POP3,IMAP4,PROXY,LDAP,SSMTP等等。支持UDP协议的应用有:DNS,NTP,ICP,视频、音频流播放协议等。
LVS对Real Server的操作系统没有任何限制,Real Server可运行在任何支持TCP/IP的操作系统上,包括Linux,各种Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows等。
3.5 开源软件
LVS集群软件是按GPL(GNU Public License)许可证发行的自由软件,因此,使用者可以得到软件的源代码,并且可以根据自己的需要进行各种修改,但是修改必须是以GPL方式发行。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
本文收录至博客专题:《》
16:21:51 14:49:19 13:27:42 12:53:41 14:29:30 21:10:24 20:16:30 14:48:12 18:22:59 18:23:06 18:23:16 18:47:40 15:32:48 11:38:47 11:47:34 &&1&
&&页数 ( 1/2 ) &随笔 - 409, 文章 - 0, 评论 - 1, 引用 - 0
开发语言:
服务器端:在内核中实现,无守护程序
客户端:一般是cli界面下的ipvsadm命令
相关包:ipvsadm
在LVS框架中,提供了含有三种IP负载均衡技术的IP虚拟服务器软件IPVS、基于内容请求分发的内核Layer-7交换机KTCPVS和集群管理软件。可以利用LVS框架实现高可伸缩的、高可用的Web、Cache、Mail和Media等网络服务;在此基础上,可以开发支持庞大用户数的、高可伸缩的、高可用的电子商务应用。VS/NAT技术(Virtual Server via Network Address Translation),大多数商品化的IP负载均衡调度器产品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和 Alteon的ACEDirector。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。所以,IPVS软件实现了这三种IP负载均衡技术,
检查内核是否支持lvs的ipvs模块[root@com1 ~]# modprobe -l|grep ipvskernel/net/netfilter/ipvs/ip_vs.kokernel/net/netfilter/ipvs/ip_vs_rr.kokernel/net/netfilter/ipvs/ip_vs_wrr.kokernel/net/netfilter/ipvs/ip_vs_lc.kokernel/net/netfilter/ipvs/ip_vs_wlc.kokernel/net/netfilter/ipvs/ip_vs_lblc.kokernel/net/netfilter/ipvs/ip_vs_lblcr.kokernel/net/netfilter/ipvs/ip_vs_dh.kokernel/net/netfilter/ipvs/ip_vs_sh.kokernel/net/netfilter/ipvs/ip_vs_sed.kokernel/net/netfilter/ipvs/ip_vs_nq.kokernel/net/netfilter/ipvs/ip_vs_ftp.ko可以看到内核默认支持ipvs模块,下来***ipvs管理软件[root@com1 ~]# yum install ipvsadm
1.NAT方式:NAT配置方式最简单,只需要在LVS主机上配置就可以了,如下例子:设置VIP主机:ipvsadm -A -t 202.103.106.5:80 -s wlcipvsadm -A -t 202.103.106.5:21 -s wrripvsadm -a -t 202.103.106.5:80 -r 172.16.0.2:80 -m ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.3:8000 -m -w 2 ipvsadm -a -t 202.103.106.5:21 -r 172.16.0.2:21 -m
2.TUN方式:对LVS主机设置:设置VIP主机:ipvsadm -A -t 172.26.20.110:23 -s wlcipvsadm -a -t 172.26.20.110:23 -r 172.26.20.112 -i
对每台real主机的设置:echo 1 & /proc/sys/net/ipv4/ip_forward#加载ipip模块modprobe ipipifconfig tunl0 0.0.0.0 upecho 1 & /proc/sys/net/ipv4/conf/all/hiddenecho 1 & /proc/sys/net/ipv4/conf/tunl0/hiddenifconfig tunl0 172.26.20.110 netmask 255.255.255.255 broadcast 172.26.20.110 up
ipvsadm配置A 堡垒
eth0 192.168.3.187/24 外网IP
eth1 192.168.200.1/24 实验内网ipB
eth0 192.168.200.10/24C
eth0 192.168.200.20/24下面是对堡垒机的配置重定向几个文件#echo "1" &/proc/sys/net/ipv4/ip_forward#echo "0" &/proc/sys/net/ipv4/conf/all/send_redirects#echo "0" &/proc/sys/net/ipv4/conf/default/send_redirects#echo "0" &/proc/sys/net/ipv4/conf/eth0/send_redirects#echo "0" &/proc/sys/net/ipv4/conf/eth1/send_redirects
ipvsadm -C
-C 清除表中所有的记录ipvsadm -A -t 192.168.3.187:80 -s rr -A
--add-service在服务器列表中新添加一条新的虚拟服务器记录-t 表示为tcp服务-u 表示为udp服务-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlcipvsadm -a -t 192.168.3.187:80 -r 192.168.200.10:80 -m -w 1-a --add-server 在服务器表中添加一条新的真实主机记录-t --tcp-service
说明虚拟服务器提供tcp服务-u --udp-service 说明虚拟服务器提供udp服务-r --real-server
真实服务器地址-m --masquerading 指定LVS工作模式为NAT模式-w --weight 真实服务器的权值-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式)-i --ipip 指定LVS的工作模式为隧道模式-p 会话保持时间,定义流量呗转到同一个realserver的会话存留时间调度算法rr 轮询 round robin, wrr 加强轮询 weighted round robin, 新的请求被轮流分配到RealServer上,它假设服务器处理性能都相同,不管服务器当前的连接数和响应速度,不适合服务器性能不同的集群,这会导致服务器间的负载不平衡dh 目的地址散列调度 destination hashing,针对IP地址的负载,
The command has two basic formats for execution:ipvsadm command [protocol] service-address [scheduling-method] [persistence options]ipvsadm command [protocol] service-address server-address [packet-forwarding-method] [weight options]
The& first& format& manipulates a virtual service and the algorithm for assigning service requests to real servers. Optionally, a persistent timeout and network mask for the granularity of a persistent service may be specified. The second format manipulates a real server that is associated with an exist-ing& virtual& service. When specifying a real server, the packet-forwarding method and the weight of the real server, relative to other real servers for the virtual service, may be specified, otherwise defaults will be used.
three packet-forwarding methods (NAT, tunneling, and direct routing), and eight load balancing algorithms (round robin, weighted round robin, least-connection, weighted least-connection, locality-based least-con-nection, locality-based least-connection with replication, destination-hashing, and source-hashing).& --gatewaying&&     -g&&&&&&&&&&&&&&&&&&&& gatewaying (direct routing) (default)& --ipip&&&&&&&&       -i&&&&&&&&&&&&&&&&&&&&& ipip encapsulation (tunneling)& --masquerading     -m&&&&&&&&&&&&&&&&&&& masquerading (NAT)& --scheduler&&&     & -s scheduler&&&&& one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,the default scheduler is wlc.& --list&&&&&&&&&& &&& &   & -L|-l&&& &&& &&& &&&&& list the table& --connection& &&& &&& & & -c&&&&&&&&&&&&&&&&& &&& &output of current IPVS connections& --numeric&&&& &&& &&& &  -n&&&&&&&&&&&&&&&&& &&& &numeric output of addresses and ports
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
lvs无故障隔离以及失败切换框架,要实现这个功能,需要配合keepalived等工具实现。DR方式适合所有的RealServer同一网段下,即接在同一个交换机上.TUNL方式就对于RealServer的位置可以任意了,完全可以跨地域、空间,只要系统支持Tunnel就可以,方便以后扩充的话直接Tunl方式即可
1、InActConn并不代表错误连接,它是指不活跃连接(Inactive Connections),我们将处于TCP ESTABLISH状态以外的连接都称为不活跃连接,例如处于SYN_RECV状态的连接,处于TIME_WAIT状态的连接等。
[root@210-lvs ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-& RemoteAddress:Port
Forward Weight ActiveConn InActConn
192.168.2.215:ndmp rr
-& 192.168.2.109:ndmp
-& 192.168.2.221:ndmp
[root@210-lvs ~]# ipvsadm -l -cn|grep -v "EST"
IPVS connection entries
pro expire state
destination
223.104.27.91:33407 192.168.2.215:10000 192.168.2.109:10000
58.83.209.187:57555 192.168.2.215:10000 192.168.2.221:10000
117.136.25.196:19271 192.168.2.215:10000 192.168.2.221:10000
58.83.209.186:36565 192.168.2.215:10000 192.168.2.221:10000
117.136.25.143:30661 192.168.2.215:10000 192.168.2.221:10000
117.136.25.139:45468 192.168.2.215:10000 192.168.2.221:10000
58.83.209.185:28186 192.168.2.215:10000 192.168.2.221:10000
58.83.209.188:11868 192.168.2.215:10000 192.168.2.109:10000
58.83.209.180:12424 192.168.2.215:10000 192.168.2.221:10000
2、用四个参数来关闭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方案中,虚拟ip地址与普通网络接口大大不同,这点需要特别注意。虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。 为什么要这样呢?因为有若干机器要使用同一个ip地址,用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。
假如两台VS之间使用的互备关系,那么当一台VS接管LVS服务时,可能会网络不通,这时因为路由器的MAC缓存表里关于vip这个地址的MAC地 址还是被替换的VS的MAC,有两种解决方法,一种是修改新VS的MAC地址,另一种是使用send_arp 命令(piranha软件包里带的一个小工具) 格式如下:send_arp:send_arp [-i dev] src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr这个命令不一定非要在VS上执行,只+要在同一VLAN即可。/sbin/arping -f -q -c 5 -w 5 -I eth0 -s $WEB_VIP -U $GW
[root@com1 ~]# ipvsadm -l&&&&&& &IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags& -& RemoteAddress:Port&&&&&&&&&& Forward Weight ActiveConn InActConnTCP& 192.168.2.215:ndmp rr& -& com1:ndmp&&&&&&&&&&&&&&&&&&& Local&& 1&&&&& 1455&&&&&& 1&&&&&&& && -& com2:ndmp&&&&&&&&&&&&&&&&&&& Route&& 1&&&&& 1605&&&&&& 0&&&&&&& &[root@com1 ~]# ipvsadm -l --rate IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port&&&&&&&&&&&&&&&& CPS&&& InPPS&& OutPPS&&& InBPS&& OutBPS& -& RemoteAddress:PortTCP& 192.168.2.215:ndmp&&&&&&&&&&&&&&&&& 0&&&&& 490&&&&&&& 0&&& 41618&&&&&&& 0& -& com1:ndmp&&&&&&&&&&&&&&&&&&&&&&&&&& 0&&&&& 245&&&&&&& 0&&& 20970&&&&&&& 0& -& com2:ndmp&&&&&&&&&&&&&&&&&&&&&&&&&& 0&&&&& 246&&&&&&& 0&&& 20648&&&&&&& 0[root@com1 ~]# ipvsadm -l --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port&&&&&&&&&&&&&& Conns&& InPkts& OutPkts& InBytes OutBytes& -& RemoteAddress:PortTCP& 192.168.2.215:ndmp&&&&&&&&&&&&& 21&&&&&&& 0& 142348K&&&&&&& 0& -& com1:ndmp&&&&&&&&&&&&&&&&&&&&&& 17&&&&&&& 0 &&&&&&& 0& -& com2:ndmp&&&&&&&&&&&&&&&&&&&&&& 14211&& 926294&&&&&&& 0 &&&&&&& 0
[root@com1 ~]# ipvsadm -l --thresholdsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port&&&&&&&&&&& Uthreshold Lthreshold ActiveConn InActConn & -& RemoteAddress:PortTCP& 192.168.2.215:ndmp rr& -& com1:ndmp&&&&&&&&&&&&&&&&&&& 0&&&&&&&&& 0&&&&&&&&& 386&&&&&&& 335&&&&& && -& com2:ndmp&&&&&&&&&&&&&&&&&&& 0&&&&&&&&& 0&&&&&&&&& 551&&&&&&& 313&&&&& &[root@com1 ~]# ipvsadm -l --persistent-connIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port&&&&&&&&&&& Weight&&& PersistConn ActiveConn InActConn & -& RemoteAddress:PortTCP& 192.168.2.215:ndmp rr& -& com1:ndmp&&&&&&&&&&&&&&&&&&& 1&&&&&&&& 0&&&&&&&&&& 389&&&&&&& 335&&&&& && -& com2:ndmp&&&&&&&&&&&&&&&&&&& 1&&&&&&&& 0&&&&&&&&&& 553&&&&&&& 313&&&&&&
[root@com1 ~]# ipvsadm -l -c -nIPVS connection entriespro expire state&&&&&& source&&&&&&&&&&&& virtual&&&&&&&&&&& destinationTCP 14:12& ESTABLISHED 117.35.159.6:8.2.215:ndmp com2:ndmpTCP 02:52& ESTABLISHED 117.35.159.6:8.2.215:ndmp com1:ndmpTCP 14:12& ESTABLISHED 117.35.159.6:8.2.215:ndmp com1:ndmpTCP 03:14& ESTABLISHED 117.35.159.6:8.2.215:ndmp com1:ndmpTCP 09:26& ESTABLISHED 117.35.159.6:8.2.215:ndmp com2:ndmp
TCP 01:15& ESTABLISHED 117.35.159.6:8.2.215:8.2.101:10000TCP 07:02& ESTABLISHED 117.35.159.6:8.2.215:8.2.100:10000TCP 11:59& ESTABLISHED 117.35.159.6:8.2.215:8.2.101:10000TCP 11:56& ESTABLISHED 117.35.159.6:8.2.215:8.2.100:10000TCP 07:04& ESTABLISHED 117.35.159.6:8.2.215:8.2.100:10000TCP 11:55& ESTABLISHED 117.35.159.6:8.2.215:8.2.100:10000TCP 07:01& ESTABLISHED 117.35.159.6:8.2.215:8.2.101:10000
LVS大量快速并发连接后报Connection refused的问题
由 firestorm 在 周二,
18:47 提交
大致环境:RedHat 4.4, 千兆网,两个结点作为LVS的master与slaver,使用IP tunnel模式,同时用又作real server,大概6,7个real server。LVS服务器已经进行常规的高性能服务器优化,包括LVS APP的相关配置、tcp 的TIME_WAIT快速回收与重用等等。使用2个客户端服务器连接LVS的虚拟IP,每个客户端启动8个线程连接LVS集群上特定应用的端口,连接并进行简单数据交互后close,发起和关闭连接比较频繁,每个线程大概都是几十次/秒。
情况如下:1. 大概跑2,3个小时,客户端总连接次数大概数百万量级后,会发生服务连接虚拟IP 报Connection refused的情况,有时候是2个客户端节点同时拒绝连接,有时候一个被拒,一个可以,但是一段时间后也被拒绝。2. 连接被拒后,大概等待10分钟左右又可以成功建立连接并继续操作;3. 连接被拒绝后如果再用第三个客户端节点来连接虚拟IP,可以成功并并发执行;4. 连接被拒节点如果直接连真实服务器的实际地址与对应端口,可以连接并操作;5. 连接被拒绝后重启客户端节点的网络 service network restart 可以恢复对LVS的连接;6. 重启LVS服务可以重新连接。7. 由于客户端也做过TIME_WAIT的tcp_tw_reuse、tcp_tw_recycle的优化,所以用netstat和ss -s等命令看,服务器与客户端各项数值都不是很大;8. /proc/sys/fs/file-max等数值在服务端客户端都设置的比较大,服务端设置的是100万,而且在出问题时看/proc/sys/fs/file-nr 时也就一千多。9. 超时设置是:Timeout (tcp tcpfin udp): 010. 使用ipvsadm命令看activeConn不是很大,大概每个real server也就3、4左右,inactive连接时高时低,大概之间,平均5000吧。11. lsof看服务端进程没有打开句柄超限的(考虑单进程ulimit -n 1024的限制)
权重问题:当lvs配置文件lvs-dr.sh改变权重以及keepalived配置文件keepalived.conf修改权重后,哪个文件重新启动,哪个文件的权重生效。同时权重在master和backup上面可以设置不同。
当 算法是rr的时候,权重没有作用,但是当算法是wlc和wrr的时候,必须设置权重,可以根据服务器的性能和配置,来确定权重的大小,当权重大的时
候,lvs调度的服务也就多,同时权重高的服务器先收到链接。当小的时候,lvs调度的比较少。当权重为0的时候,表示服务器不可用,

参考资料

 

随机推荐