lvs负载均衡的搭建

时间:2022-08-22 13:51:05

                         lvs负载均衡的搭建 

                                            作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。
 
 
 
 
在部署环境前,我们需要了解一下一些协议
一.什么是arp
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。相关协议有RARP代理ARPNDP用于在IPv6中代替地址解析协议。
arp的工作原理:
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
那么问题来了,ARP到底属于哪一层?
可以这样做,在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。
考试我们要按教材做,接网络层。谈论ARP协议究竟属于第几层一点意义也没有,那完全是对IETF哲学的误解,是强行使用ISO的哲学研究IETF体系的生搬硬套。IETF哲学是很实际和洒脱的,不似ISO那样刻板。
arp广播而进行新的地址解析,具体命令:
[root@yinzhengjie ~]# arping -I eth0 -c 3 -s 172.30.1.137 172.30.1.1
[root@yinzhengjie ~]# arping -U -I eth0 172.30.1.137
[root@yinzhengjie ~]# arp -a
二.集群技术
1.集群的定义
集群,是指一组互相独立的计算机,利用高速网络通信网络组成的一个计算机系统,每个集群节点(即集群中的每台计算机)都是运行其自己进程的一个独立服务器。这些进程可以彼此通信,对网络客户机来说就像形成了一个单一系统,协同起来向用户提供应用程序。系统资源和数据,并以单一系统的模式加以管理。用户客户机请求集群系统时,集群像是一个单一独立的服务器,而实际上集群是一组服务器。
2.集群的特点
1>.提高性能
些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机器计算也很难胜任。这时,一般都使用计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。如果请求比较少的话并发仅仅不到1W就没有必要用集群,这样反而响应会变慢。
lvs负载均衡的搭建
 lvs负载均衡的搭建
2>.降低成本
通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用超级计算机相比已属相当便宜。在达到同样性能的条件下,采用计算机集群比采用同等运算能力的大型计算机具有更高的性价比。
3>.提高可扩展性
用户若想扩展系统能力,不得不购买更高性能的服务器,才能获得额外所需的CPU 和存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。
4>.增强可靠性
集群技术使系统在故障发生时仍可以继续工作,将系统停运时间减到最小。集群系统在提高系统的可靠性的同时,也大大减小了故障损失。
3.集群的分类
1>.负载均衡集群(LBC)
负载均衡集群的特点:可用一个简单的例子来类比,咱们的桌子有4条腿。每个腿承担四分之一的力量;该类型集群常应用在web服务器或者数据库的从服务器上
负载均衡集群的作用:(1).分担用户访问请求或者数据流量(负载均衡);
(2).保持业务连续性7*24服务(高可用性);
负载均衡集群典型的开源软件:lvs,nginx,haproxy,lighttpd
负载均衡集群架构图:
lvs负载均衡的搭建
lvs负载均衡的搭建
2>高可用性集群(HAC)
高可用性集群的作用:当一台机器宕机后另外一台机器接管(ip资源和服务资源)。
高可用性集群典型常用开源软件:keepalived,heartbeat
高可用集群架构图:
lvs负载均衡的搭建
 lvs负载均衡的搭建
3>.科学集群
科学集群是并行计算的基础。通常,科学集群涉及为集群开发的并行应用程序,以解决复杂的科学问题。科学集群对外就好像一个超级计算机,这种超级计算机内部由十至上万个独立处理器组成,并且在公共消息传递层上进行通信以运行并行应用程序。
 
4.常用的集群软硬件
1>.互联网企业常用的开源集群软件有:lvs,haproxy,keepalived,heartbeat
2>.互联网企业常用的商业集群硬件有:F5,Netscaler,Radware,A10等,工作模式都相当于haproxy,nginx的工作模式。
硬件集群产品Netscaler图如下:
lvs负载均衡的搭建
 lvs负载均衡的搭建
硬件集群产品F5
 lvs负载均衡的搭建
lvs负载均衡的搭建
一般企业购买就得买2个,高可用嘛,2个中等设备价格大概在50w左右,一般非互联网公司都是购买硬件的,传统互联网公司用的软件比较多,因为节省成本,想淘宝这样的是软件硬件都会用,最后用软件的技术逐渐替换掉硬件~中小型公司也会雇专门的运维人员去维护,用软件搭建服务。LVS项目创始人章文嵩博士,现在已经被淘宝请求了,淘宝也撤掉了Netscaler硬件设备,因为扩展起来特别昂贵~尽管马总那么有钱~
 
5.LVS负载均衡集群介绍
1>搭建负载均衡的需求
A:把单台计算机无法承受的大规模的并发访问或者数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验;
B:单个重负载的运算分担到多台节点设备上并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高;
C:7*24的服务保证,任意一个或者多个有限后面节点设备宕机,要求不能影响业务。
2>LVS(linux virtual server)原理
 lvs负载均衡的搭建
lvs负载均衡的搭建
从上图我们可以看出,LVS负载均衡技术实际上就是在LINUX内核中实现的(实现调度的工具ipvs),因此,被称之为Linux虚拟服务器(Linux Virtal Server)。我们使用该软件配置LVS的时候,不能直接配置内核中的ipvs,而需要使用Ipvs的管理工具ipvsadm来进行管理,当然,老司机们应该都知道通过keepalived软件可以直接管理ipvs,并不是通过ipvsadm来管理Ipvs的哟。
 
3>LVS工作流程
LVS基本工作过程图1.带颜色的小方块代表不同 的客户端请求:
lvs负载均衡的搭建
lvs负载均衡的搭建
LVS2基本工程图2:不同的客户端请求小方块经过负责均衡器,通过指定的分配策略被分发到后面的机器上
lvs负载均衡的搭建
 lvs负载均衡的搭建
4>LVS常用术语
A:虚拟IP地址(Virtual Ip Address),简称VIP,VIP为Director用于向客户端计算机提供服务的IP地址。比如:www.yinzhengjie.com郁闷就要解析到VIP上提供服务。
B:真实IP地址(Real Server Ip Address),简称RIP,在集群下面节点上使用的IP地址,也就是真是存在的物理机器哟
C:Director的IP地址(Director Ip Address),简称DIP,Director用于链接内外网络的IP地址,物理网卡上的IP地址,是负载均衡器上的IP
D:客户端主机IP地址(Client Ip Address),简称CIP,客户端用户计算机请求集群服务器的IP地址,该地址用作发送给集群的请求源IP地址。
 
5>常用的LVS模式
1>DR模式-直接路由模式
lvs负载均衡的搭建
如上图所示:VS/DR模式是通过改写请求报文的目的MAC地址,将请求发送给真实的服务器端,而真实服务器响应后的处理结果直接返回给客户端用户。这中模式在企业中是最常用的,因为它的效率最高!相比是NAT的模式的话,RIP会将CIP请求的结果通过DIP原路返回,对DIP服务器造成了相当大的负担。
 
 
让我们来看看DR模式的工作流程吧:
lvs负载均衡的搭建
第一步:首先客户端(CIP)会向服务端发送服务请求(通过ARP广播)这样会找到LVS;
第二部:DIP服务器(LVS服务器)接到广播包后,做了一个操作,就是把MAC地址做了修改,直接指向了后端的RIP(提供服务的真实服务器);
第三部:RIP接收到客户端发来的包,发现自己本机的回环地址上有VIP,同时MAC也是自己的,就会对这个数据包做回应的请求(这里要注意的是,本地回环地址绑定了VIP并不会让其他的机器知道,因为可以通过修改内核参数,让他禁止与外面通讯(这个过程我们叫做抑制ARP),所以我们没有必要担心会和真实的VIP出现冲突的哟~,换句话说就是提供服务的RIP拥有2个IP一个是在eth0上绑定的,一个是在lo上绑定的)
第四部:RIP修改自己的源IP然后将请求的数据结果返还给CIP.
 
好了,了解了DR模式的工作原理,我们来看看DR模式的注意事项吧:
A:通过在调度器LB上修改数据包的目的MAC地址实现转发。注意,源IP地址仍然是CIP,目的IP地址仍然是VIP;
B:请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比);
C:因为DR模式是通过MAC地址的改写机制实现的转发,因此,所有RS(真实服务器【RIP】)节点和调度器KB只能在一个局域网LAN中(小缺点);
D:需要注意RS节点的VIP的绑定(lo:vip,lo1:vip)和ARP抑制问题;
E:强调下:RS节点的默认网关不需要的是调度器LB和DIP,而直接是IDC机房分配的上级路由器的IP(这里是RS带有外网IP地址的情况),理论上讲:只要RS可以 出网即可,不是必须的要配置外网IP。
F:由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求的报文的目的端口(和NAT要区别)。
G:当前。调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持WINDOWS系统,真是服务器RS节点可以是WINDWOS系统哟。
H:总的来说DR模式效率很高,但是配置也比较麻烦,因此,访问量不是特别大的公司可以用haproxy/nginx取代之。这符合运维的原则:简单,易用,高效。日2000W PV或并发求情1W以下都可以考虑用 haproxy/nginx(LVS NAT模式)
I:直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址
 
2>NAT模式
让我们看看NAT模式的工作原理吧
lvs负载均衡的搭建
NAT模式就理解起来就更简单了,让我们一起来总结一下吧:
第一步:CIP发送请求给服务器VIP;
第二部:DIP获得请求之后做了一个操作,它将客户端的包做了一个DNAT,将目的地址改成了后台的服务器的一个真实IP;
第三部:后端服务器通过ARP广播,获取了DIP发来的包,对发来的请求做相应的处理,然后将处理的结果(修改包的源地址和目的地址)发送给DIP;
第四部:DIP获取到包之后,又做了一个操作,他将源地址错了修改,将真是的源地址重新改成VIP地址,然后在发送给CIP。
 
 
了解了NAT的工作原理,我们也一起看看NAT模式的特点吧:
A:NAT技术将请求的报文(DNAT)和响应的报文(SNAT),通过调度器地址重写然后在转发给内部的服务器,报文返回时在改写成原来的用户请求的地址;
B:只需要在调度器LB上配置WAN公网IP地址即可,调度器也要有私有LAN IP和内部RS节点通信;
C:每台内部RS节点的网关地址,必须要配成调度器LB的私有LAN内物理网卡地址(LDIP),这样才能确保数据报文返回时仍然经过调度器LB;
D:由于请求与相应的数据保温都经过调度器LB,因此,访问量大时调度器LB有较大瓶颈,一般要求最多10-20台节点;
E:NAT模式支持对IP及端口的转换,即用户请求172.30.1.2:80,可以通过调度器转换到RS节点的172.30.1.2.:8080(DR和TUN模式不具备的,这个很NGINX反向代理有点相似哟);
F:所有NAT内部RS节点只需要配置私有LAN IP即可;
G:由于数据包发来都需要经过调度器,因此,要开启内核转发net.ipv4.ip.forward = 1,当然也可以包括iptables防火墙的forward功能(DR和TUN模式不需要)。
 
 
3>FULLNAT模式
据说是章文嵩被淘宝挖去之后,就有了这个模式,专门为淘宝设计的,让我们一起看看这个模式是如何工作的吧:
 lvs负载均衡的搭建
从图中也可以看出,其实这个并不难理解:
(注意:实际生产环节中调度器可能不止一个哟,我这里为了图像看起来不是很乱就选择了这个图来介绍,因此我们这里可以把DIR看成一个群组哟,而且这些群组直接信息时可以互相通信的,比如地址转换的情况,都是实时共享的,他们会有一个转换的记录,方便当请求回来的时候再转换回去)
第一步:CIP将VIP请求发送给调度器DIR;
第二步:DIR将源IP和目的IP同时改变了,将源IP变成了DIR群组的任意一个IP(如aIP,),将目的IP改成后台的真是IP(RIP),并广播给了后台的RIP服务器,与此同时,将这个转换记录记录下来告诉这个DIP群组;
第三步:RIP接受到数据包请求后,将数据的结果返回给目的IP(aIP);
第四步:当这个包到达调度器DIR的时候,DIR将源IP和目的IP又变回了VIP和CIP(根据转换之前的对应的表来操作,也就是第二步的记录来操作的哟),这个模式相比NAT要强大的多,所以像淘宝这样的门户网站用的就是这个呢!
 
4>tunnel模式
开门见山,让我们了解一下tunnel模式 工作原理图吧:
lvs负载均衡的搭建
从上图可知,这个道理就很好理解了:
第一步:CIP将VIP请求发送给调度器DIR;
第二步:调度器DIR将新来的数据包添加一个IP头信息,封装了一层RIP,随后这个包会继续往RIP去;
第三部:到达RIP后,RIP发现是自己包就接受了,开始拆分,发现拆开了RIP包头信息后又有VIP,于是又把VIP和本地回环地址的相对比,发现本地有这个地址,就继续相应这个请求,并将请求的记过返还给CIP,致此,这个过程就完成了。
 
 
下面让我们TUN模式的特色吧:
A.负载均衡器通过把请求的报文通过IP隧道的方式转发至真实的服务器,而真实服务器将响应报文处理后直接返回给客户端用户;(哎哟~厉害了,一局话总结了上面的3个步骤呀~)
B.由于真实服务器将响应处理后的报文直接返回给客户端用户,因此,最好RIP有一个公网地址,这样效率才会更高;(理论上:只要能出网即可,无需外网地址)
C.由于调度器LB只处理入站请求的报文,因此,集群系统的吞吐量可以提高10倍以上,但隧道模式也会带来一定的系统开销,tun模式审核LAN/WAN;
D.TUN模式的LAN环境转发不如DR模式效率高,而且还要考虑系统对IP隧道的支持问题;
E.所有的RIP服务器都要绑定VIP,抑制ARP,配置起来比较复杂;
F.LAN环境一般采用DR模式,WAN环境可以用TUN模式,但是在WAN环境下,请求转发更多的被haproxy/ngin/DNS调度等 代理取代。因此,TUN模式在国内公司实际应用的已经很少。跨机房应用要么拉光纤成局域网,要么DNS调度,底层数据还得同步;
G.直接对外的访问业务。例如:web服务做RS节点,最好用公网地址IP地址,不直接对外的业务,例如:Mysql存储系统RS节点,最好用内部IP地址
 
6.LVS调度算法详解
1>轮询调度[固定调度算法]
Round Robin(简称rr):它将依据不同的RS节点,也就是在RS节点中均摊请求,这种算法简单。但是只适合RS节点处理性能相差不大的情况,因为他均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2>加权轮循调度[固定调度算法]
Weighted Round Robin(简称wrr):它根据RS(真实服务器)的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3>目的地址哈希调度[固定调度算法]
Destination Hashing(简称DH):以目的地址为关键字查找一个静态hash表来获得需要的RS
4>源地址哈希调度[固定调度算法]
Source Hashing(简称SH):以源地址为关键字查找一个静态hash表来获得需要的RS
5>.加权最小连接数调度[动态调度算法]
Weighted Least Connections(简称WLC):在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询RS(真实服务器)的负载情况,并动态地调整其权值。
6>.最少连接数调度[动态调度算法]
Least Connections(简称LC):调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载.
7>.基于地址的最小连接数[动态调度算法]
Locality-Based Least Connections(简称LBLC):它是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它将来自同一个目的地址的请求分配给同一台RS节点,如果这台服务器尚未满负荷,分配给连接数最小的RS,并以它为下一次分配的首先考虑。
8>.基于地址重复最小连接数调度[动态调度算法]
Locality-Based Least Connections with Replication(简称LBLCR):目前主要用于Cache集群系统。对于某一个目的地址,对应有一个RS子集,对此地址请求,为它分配子集中连接数最小RS;如果子集中所有服务器都满负荷,则从集群中选择一个连接数最小服务器,将它加入到次自己分配连接;若一定时间内,未被做任何修改,则将子集中负载最大的从子集删除,以降低复制的程度。
9>.最短的期望的延迟[动态调度算法]
Shortest Expected Delay Scheduling SED(SED):
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根据运算结果,把连接交给C 。
10>.最少队列调度[动态调度算法]
Never Queue Scheduling NQ(NQ):无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算
 
企业上最常用的算法有3种:
[动态调度算法]:wlc
[固定调度算法]:rr,wrr
 
三.部署LVS
1.准备LVS环境.需要三台服务器
LVS服务器[DIP]:200.200.200.102
LAMP服务器[RIP]:200.200.200.103
LAMP服务器[RIP]:200.200.200.104
RIP:200.200.200.103
lvs负载均衡的搭建
RIP:200.200.200.104
lvs负载均衡的搭建
1.安装准备命令
[root@yinzhengjie ~]# lsmod |grep ip_vs
lvs负载均衡的搭建
记住,如果没有kernel-devel的包的需要yum安装一下才能执行下面的
[root@yinzhengjie ~]# yum -y install kernel-devel
[root@yinzhengjie ~]# rpm -qa | grep kernel
[root@yinzhengjie ~]# ln -s /usr/src/kernels/2.6.32-431.el6.x86_64/ /usr/src/linux
lvs负载均衡的搭建
检查连接是否成功
[root@yinzhengjie ~]# ll /usr/src/
lvs负载均衡的搭建
2.安装LVS
[root@yinzhengjie ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
[root@yinzhengjie ~]# yum -y install libnl* popt* //安装依赖包
[root@yinzhengjie ~]# tar -xzf ipvsadm-1.26.tar.gz
[root@yinzhengjie ~]# cd ipvsadm-1.26
[root@yinzhengjie ipvsadm-1.26]# make && make install
[root@yinzhengjie ipvsadm-1.26]# ipvsadm
安装后,需要将ipvs加载到内核,执行下面的命令也可以,或者是上面的ipvsadm也好使哟~
lvs负载均衡的搭建
3.手动配置LVS[这个模式是在DIR服务器配置的]
[root@yinzhengjie ~]# ifconfig eth0:0 200.200.200.100/24 up // 创建VIP
[root@yinzhengjie ~]# route add -host 200.200.200.100 dev eth0 //添加主机路由
创建之后可以用客户端去ping一下这个地址,检查一下连通性:
lvs负载均衡的搭建
[root@yinzhengjie ~]# ipvsadm -C //情况之前的配置
[root@yinzhengjie ~]# ipvsadm --set 30 5 60 //分别设置tcp,tcpfin,udp的超时时间
[root@yinzhengjie ~]# ipvsadm -A -t 200.200.200.100:80 -s rr -p 20 //添加一个虚拟主机,指定算法为rr(轮循算法),指定会话保持时间是20s。
[root@yinzhengjie ~]# ipvsadm -a -t 200.200.200.100:80 -r 200.200.200.103 -g -w 1
//给这个vip添加一个RIP节点(200.200.200.103),"-g"表示为DR模式,"-w"表示加的权重
[root@yinzhengjie ~]# ipvsadm -a -t 200.200.200.100:80 -r 200.200.200.104 -g -w 1
//同上,新增了一个200.200.200.104的节点
查看添加的列表:
lvs负载均衡的搭建
删除节点:
lvs负载均衡的搭建
删除虚拟IP配置:
lvs负载均衡的搭建
重新配置一遍:【我们通过这个启动过程,可以编写一个启动脚本,因为这些配置都是临时生效的,需要写个脚本去让他永久生效】
[root@yinzhengjie ~]# ipvsadm -C
[root@yinzhengjie ~]# ipvsadm --set 30 5 60
[root@yinzhengjie ~]# ipvsadm -A -t 200.200.200.100:80 -s rr -p 20
[root@yinzhengjie ~]# ipvsadm -a -t 200.200.200.100:80 -r 200.200.200.103 -g -w 1
[root@yinzhengjie ~]# ipvsadm -a -t 200.200.200.100:80 -r 200.200.200.104 -g -w 1
[root@yinzhengjie ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 200.200.200.100:80 rr persistent 20
-> 200.200.200.103:80 Route 1 0 0
-> 200.200.200.104:80 Route 1 0 0
[root@yinzhengjie ~]#
 
 
参数说明:
[root@yinzhengjie ~]# ipvsadm --help
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
ipvsadm --stop-daemon state
ipvsadm -h
 
Commands:
Either long or short options are allowed.
--add-service -A add virtual service with options
--edit-service -E edit virtual service with options
--delete-service -D delete virtual service
--clear -C clear the whole table
--restore -R restore rules from stdin
--save -S save rules to stdout
--add-server -a add real server with options
--edit-server -e edit real server with options
--delete-server -d delete real server
--list -L|-l list the table
--zero -Z zero counters in a service or all services
--set tcp tcpfin udp set connection timeout values
--start-daemon start connection sync daemon
--stop-daemon stop connection sync daemon
--help -h display this help message
 
Options:
--tcp-service -t service-address service-address is host[:port]
--udp-service -u service-address service-address is host[:port]
--fwmark-service -f fwmark fwmark is an integer greater than zero
--ipv6 -6 fwmark entry uses IPv6
--scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
the default scheduler is wlc.
--pe engine alternate persistence engine may be sip,
not set by default.
--persistent -p [timeout] persistent service
--netmask -M netmask persistent granularity mask
--real-server -r server-address server-address is host (and port)
--gatewaying -g gatewaying (direct routing) (default)
--ipip -i ipip encapsulation (tunneling)
--masquerading -m masquerading (NAT)
--weight -w weight capacity of real server
--u-threshold -x uthreshold upper threshold of connections
--l-threshold -y lthreshold lower threshold of connections
--mcast-interface interface multicast interface for connection sync
--syncid sid syncid for connection sync (default=255)
--connection -c output of current IPVS connections
--timeout output of timeout (tcp tcpfin udp)
--daemon output of daemon information
--stats output of statistics information
--rate output of rate information
--exact expand numbers (display exact values)
--thresholds output of thresholds information
--persistent-conn output of persistent connection info
--nosort disable sorting output of service/server entries
--sort does nothing, for backwards compatibility
--ops -o one-packet scheduling
--numeric -n numeric output of addresses and ports
[root@yinzhengjie ~]#
 
你认为是否现在就可以访问了吗?
答案是否定的!~根据DR模式的原理,你需要在客户端的lo接口上配置相应的VIP的哟,并且抑制ARP
如果想验证的可以用专门的Linux抓包工具(tcpdump)分别在RIP抓包,这里我就不演示了
4.配置RIP
200.200.200.103上的配置:
绑定虚拟IP地址:
[root@web001 yinnzhengjie]# ifconfig lo:0 200.200.200.100/32 up
[root@web001 yinnzhengjie]# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:200.200.200.100 Mask:0.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
[root@web001 yinnzhengjie]# route add -host 200.200.200.100 dev lo //添加虚拟网卡路由
[root@web001 yinnzhengjie]#
抑制ARP
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
200.200.200.104上的配置:
绑定虚拟IP地址:
lvs负载均衡的搭建
抑制ARP相应:
 
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@web001 yinnzhengjie]#echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@web001 yinnzhengjie]#echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
 
 
好了。让我们来做测试吧:
动态查询连接数请求:
[root@yinzhengjie ~]# watch -n 1 ipvsadm -L -n
lvs负载均衡的搭建
在网页上输入200.200.200.100得到的结果应该是RIP的服务:
 
lvs负载均衡的搭建
到此,LVS的配置过程就完事了,你成功了没啊~
 
 
好了,以上是关于如何手动配置LVS的整个过程,下面对抑制ARP参数上做一些说明:
有关arp_ignore的相关介绍:
arp_ignore:定义对目标地址为本地IP的ARP询问不同的应答模式0 
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求 
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求 
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内 
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应 
4-7 - 保留未使用 
8 -不回应所有(本地地址)的arp查询
有关arp_announce的相关介绍:
arp_announce:对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制: 确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口 
0 - (默认) 在任意网络接口(eth0,eth1,lo)上的任何本地地址 
1 -尽量避免不在该网络接口子网段的本地地址做出arp回应. 当发起ARP请求的源IP地址是被设置应该经由路由达到此网络接口的时候很有用.此时会检查来访IP是否为所有接口上的子网段内ip之一.如果改来访IP不属于各个网络接口上的子网段内,那么将采用级别2的方式来进行处理. 
2 - 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通信的本地地址.首要是选择所有的网络接口的子网中外出访问子网中包含该目标IP地址的本地地址. 如果没有合适的地址被发现,将选择当前的发送网络接口或其他的有可能接受到该ARP回应的网络接口来进行发送.
 
 
看看,就配置这么一个LVS负载均衡的DR模式是不是很简单呢?就是几条命令的事情,但是比较繁琐,在生产环境中,光负载均衡是不够的,比如DIR挂掉了,出现了单点故障,后面RIP的服务即使是好使的,也无济于事啊,所以又得引入一个名称高可用,我们可以在负载均衡的机器上安装高可用的软件
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

lvs负载均衡的搭建的更多相关文章

  1. Linux中keepalived+LVS负载均衡的搭建测试

    1.1 LVS简介       LVS(Linux Virtual Server),也就是Linux虚拟服务器, 是一个*软件项目.使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Lin ...

  2. lvs 负载均衡环境搭建

    记录一下搭建lvs环境的步骤 当中master 10.0.0.11,backup 10.0.0.15.realserver1 10.0.0.119.realserver210.0.0.11 1.mkd ...

  3. LVS DR模式 负载均衡服务搭建

    LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...

  4. 企业高并发的成熟解决方案(一)----搭建LVS负载均衡

    企业整个架构分析 1. App服务器上边部署应用,如果是java的话,一般是tomcat: 2. 负载均衡服务器负责转发请求,这种既有主机又有备机的负载均衡成为高可用(HA): 3. 一般web服务器 ...

  5. CentOS7Linux中服务器LVS负载均衡、高可用集群搭建(NAT、DR);

    目录 集群 声明 集群概念 集群特性 Web服务器并发相应瓶颈 集群的分类 LB实现方法: LVS集群 负载调度器 服务器池 共享存储 LVS负载均衡的三种模式 负载均衡 集群 声明 文档不断更新中. ...

  6. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  7. 大数据高并发系统架构实战方案&lpar;LVS负载均衡、Nginx、共享存储、海量数据、队列缓存&rpar;

    课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...

  8. LVS 负载均衡解决方案 &lpar;windows IIS&rpar;

    LVS 负载均衡解决方案 因为我们的产品运行的主流平台是WINDOWS+IIS+SQLSERVER(2000以上版本),而LVS+KEEPALIVED是LINUX下的四层负载均衡软件.其有如下特点: ...

  9. 实现基于LVS负载均衡集群的电商网站架构

    背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...

随机推荐

  1. 解决SQLite database is locked

    前些时候,同事在站点服务端使用SQlite存储一些临时数据,但是在多人并发的时候Sqlite会抛出异常:The database file is locked , database is locked ...

  2. sublime开发php必备工具集合&lpar;mac&rpar;

    sublime开发php必备工具集合(Mac) 相关链接:http://benmatselby.github.io/sublime-phpcs/ 目标: 直接在sublime中运行php代码 按PSR ...

  3. 【动态规划】拦截导弹&lowbar;dilworth定理&lowbar;最长递增子序列

    问题 K: [动态规划]拦截导弹 时间限制: 1 Sec  内存限制: 256 MB提交: 39  解决: 10[提交][状态][讨论版] 题目描述 张琪曼:“老师,修罗场是什么?” 墨老师:“修罗是 ...

  4. CSocket必须使用stream socket不能够使用数据报 socket

    如果使用MFC socket类CSoket通讯,必须使用stream socket,不能够使用 SOCK_DGRAM 类型socket.原因如下: 1 stream socket和数据报socket的 ...

  5. Java 实现奇数阶幻方的构造

    一.设计的流程图如下所示 二.Java 语言的代码实现 package MagicSquare; //奇数幻方的实现 public class Magic_Odd { //n 为幻方的阶数 publi ...

  6. 柯里化(Curing)

    柯里化:把接受多个参数的函数变换成接受单个参数的函数,并且返回准备接受余下参数,还能返回结果的一种技术. function currying(fn){ var args = Array.prototy ...

  7. ios AFNetworking 有用篇

    在寻常开发中,af是个非常好用的东西.非常喜欢.可是网上的af找了好多都不太全面,不有用.所以我今天做了一个demo.有上传下载的. 比較有用.希望大家可以用到. 去我github下载demo git ...

  8. HTTP断点续传(分块传输)(HTTP头格式非常清楚)

    简述 断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分, ...

  9. python学习第四天 --字符编码 与格式化及其字符串切片

    字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采 ...

  10. Javascript中几个看起来简单,却不一定会做的题

    Javascript作为前端开发必须掌握的一门语言,因为语言的灵活性,有些知识点看起来简单,在真正遇到的时候,却不一定会直接做出来,今天我们就一起来看看几道题目吧 题目1 var val = 'smt ...