lvs+keepalived集群架构服务

LVS(linux virtual server)介绍

lvs是linux virtual server的简写(也叫做IPVS),意思是即linux虚拟服务器,是一个虚拟机的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。

企业网站LVS集群架构图在这里插入图片描述

用户的请求直接DNET过来,过来有可能是个网关,然后tcp三次握手和lvs负载均衡获取,通过lvs转发数据包到达内网,然后,然后后面的内网是同一网段的,如果没有外网的话我们可以通过http协议通过监控到内网,也可以进行绑定网关地址到dns服务器上。

IPVS软件工作层次图

在这里插入图片描述

从上图我们看出,LVS负载均衡调度技术是在Linux内核中实现的,因此,被称之为Linux虚拟服务器(Linux Virtual Server)。我们使用该软件配置LVS时候,不能直接配置内核中的ipbs,而需要使用ipvs管理工具ipvsadm间接进行控制内核层,或者通过Keepalived软件直接管理ipvs。

LVS体系结构与工作原理简单描述

LVS集群负载均衡器接受服务的所有入站客户端计算机请求,并根据调度算法决定哪个集群节点应该处理回复请求。负载均衡器(简称LB)有时也被称为LVS Director(简称Director)。
LVS虚拟服务器的体系结构如下图所示,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在他们的前端有一个负载调度器(Load Balancer)。 负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能,高可用的服务器一样。客户程序不受服务器集群的影响不需要作任何修改。系统的伸缩性通过在服务集群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。

在这里插入图片描述

在这里插入图片描述

LVS集群内部的节点称为真实服务器(Real Server),也叫做集群节点。请求集群服务的计算机称为客户端计算机。
与计算机通常在网上交换数据包的方式相同,客户端计算机,Director和真实服务器使用IP地址彼此进行通信。
不同架构角色命名情况如下图:

在这里插入图片描述
LVS后方的服务器叫做RealServer(真实服务器),用户的访问的ip地址,都是LVS的也就是VIP,可以真正给用户提供服务的是RealSever,后方的服务器,用户不知道是那个服务器提供服务的,前方是假的。

LVS的四种工作模式

NAT(Network Address Translation)
TUN(Tunneling)
DR(Direct Routing) (最重要的)
FULLNAT(Full Network Address Translation)

DR的工作原理

在这里插入图片描述

1:通过在调度器LB上修改数据包的目的MAC地址实现转发。(源IP地址仍然是CIP,目的IP地址仍然是VIP)
2:请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式相比)
3:因DR模式是通过MAC地址的改写机制实现的转发,因此,所有RS节点和调度器LB只能在一个局域网LAN中(缺点)
4:RS节点的默认网关不需要是调度器LB的DIP,而直接是IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP
5:由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求的报文的目的端口(缺点)
6:当前,调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持WINDOWS系统。真实服务器RS节点可以是WINDOWS系统。
7:总的来说DR模式效率很高,但是配置也较麻烦,因此,访问量不是特别大的公司可以用haproxy/nginx取代之。这符合运维的原则:简单,易用,高效。日2000W PV或并发请求1万以下都可以考虑用haproxy/nginx(LVS NAT模式)
8:直接对外的访问业务,例如:Web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQl,存储系统RS节点,最好只用内部IP地址。

1:用户输入域名地址,通过dns服务器解析出了网关的公网ip---->GIP 2:此时他的源ip是:CIP 目标ip:GIP
3,想让用户访问到内网,此时在网关这里做了个DNAT目标地址转换 4:源地址CIP,目标地址:VIP,被DNAT到
5:假如负载均衡给了WEB1(RIP1)
6,LVS的vip,和客户端ip地址,是同一个网段,所以同网段数据传输依靠的是MAC地址转换,因此网关先要就行arp协议获取LVS的MAC地址,所以是MAC地址转发数据包,源MAC地址:GMAC
,目标MAC地址:VMAC, 通过负载均衡给了web节点1。 7:把数据包发给同网段的电脑。是不用修改ip地址的,修改mac地址就行
9:此时CIP:VIP,GMAC:RMAC,然后数据包就可以转发了。
10,LVS也需要获取后方RS的MAC地址才能修改目标MAC,把数据发送过去
11:ARP协议是已知VIP获取的MAC地址,LVS是已知RIP获取的MAC地址,无论是web1,2,3。。。都不会冲突
12:然后LVS回复一个响应包,然后连接过来
,假如期中一个web端,收到数据包之后,发现目标ip是找VIP的,VIP没了,自己是RIP,不是自己的会丢弃数据包,这样必须要让后方的server知道VIP就是RIP。
第一步:绑定VIP地址,但是一但绑了VIP,LVS发给后方的server,刚才说过了要想网关地址要转发数据包,必须要在同一网段内,要先发送arp协议是已知VIP,获取对方的MAC地址,只绑定了一个VIP的话,会有多个VIP发送响应包,server里每一个都VIP,都要响应了。

第二步;需要 抑制VIP这个地址的ARP响应,在server上不在针对VIP发送的响应包,不能限制RIP的,绑定VIP的时候并不是绑定是eth0上的,还是绑定在环回网卡上的,这样就能知道数据包是自己的了。

13;此时web上的RIP就知道数据包是自己的了,然后将内容UZIP打包,发送给客户端,源地址是:VIP 目标地址:CIP

TUN模式

在这里插入图片描述

1::负载均衡器通过把请求的报文通过IP隧道的方式转发至真实服务器,而真实服务器将响应处理后直接返回给客户端用户。
2:由于真实服务器将响应处理后的报文直接返回给客户端用户,因此,最好RS有一个外网IP地址,这样效率才会更高。理论上:只要能出网即可,无需外网IP地址。
3:由于调度器LB只处理入站请求的报文。因此,此集群系统的吞吐量可以提高10倍以上,但隧道模式也会带来一定得系统开销。TUN模式适合LAN/WAN。
4:TUN模式的LAN环境转发不如DR模式效率高,而且还要考虑系统对IP隧道的支持问题。
5:所有的RS服务器都要绑定VIP,抑制ARP,配置复杂。
6:LAN环境一般多采用DR模式,WAN环境可以用TUN模式,但是当前在WAN环境下,请求转发更多的被haproxy/nginx/DNS调度等代理取代。因此,TUN模式在国内公司实际应用的已经很少。跨机房应用要么拉光纤成局域网,要么DNS调度,底层数据还得同步。
7:直接对外的访问业务,例如:Web服务做RS节点,最好用公网IP地址。不直接对外的业务,例如:MySQL,存储系统RS节点,最好用内部IP地址。

1:TUN模式与DR模式的唯一区别是:不在通过修改MAC地址,来吧数据包发给后方的真实节点,修改MAC必须要在同一网段内,后方的节点可以和LVS不在同一网段内,可以实现跨网段的,甚至可以跨机房。
2: 那么TUN模式通过ip隧道技术在ip头部的前面又封装了一个ip头,目标头部就变成了RIP了,CIP:RIP
把里面得到包起来了(里面还是CIP:VIP),那么通过RIP发现是跨网段用从网关出去了,然后真实节点可以在另一个机房了,通过Internet到另一个机房,把外面内层去了,然后在人为VIP是自己,目标是用户

NAT模式

在这里插入图片描述

1:NAT技术将请求的报文(DNAT)和响应的报文(SNAT),通过调度器地址重写然后在转发发给内部的服务器,报文返回时在改写成原来的用户请求的地址。
2:只需要在调度器LB上配置WAN公网IP即可,调度器也要有私有LAN IP和内部RS节点通信。
3:每台内部RS节点的网关地址,必须要配成调度器LB的私有LAN内物理网卡地址(LDIP),这样才能确保数据报文返回时仍然经过调度器LB。
4:由于请求与响应的数据报文都经过调度器LB,因此,网站访问量大时调度器LB有较大瓶颈,一般要求最多10-20台节点。
5:NAT模式支持对IP及端口的转换,即用户请求10.0.0.1:80,可以通过调度器转换到RS节点的10.0.0.2:8080(DR和TUN模式不具备的)
6:所有NAT内部RS节点只需要配置私有LAN IP即可。
7:由于数据包来回都需要经过调度器,因此,要开启内核转发net.ipv4.ip_forward=1,当然也包括iptables防火墙的forward功能(DR和TUN模式不需要)。

用户发送的请求到了LVS的时候,LVS做一个DNAT数据转发到其中一个节点上,然后回来的时候做一个SNAT会到用户了

FULLNAT

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

专门有一个NAT-session表,放在其中一个服务器中,每次负载的时候,由session统一给源地址是谁,实现横向的LVS的负载均衡
FULLANT特点
1,源IP改成不同的VIP和目的IP改成RIP
2,RS处理完毕返回时,返回给不同的LVS调度器
3,所有LVS调度器之间通过session表进行Client Address的共享

FULLNAT全地址转换,去的时候DNAT和SNAT一起做,用户的请求到LVS目标SNAT+DNAT,源地址进行修改了,把另一个LVS当做源了,中间有个服务器计算改那个,着个模式只有淘宝用

LVS的调度算法(上面一直说的是模式)
  • LVS的调度算法决定了如何在集群节点之间分布工作负荷。
  • 当Director调度器收到来自客户端计算机访问它的VIP上的集群服务的入站请求时,Director调度器必须决定哪个集群节点应该处理请求。Director调度器可用于做出该决定的调度方法分成两个基本类别:
    固定调度方法:rr,wrr,dh,sh
    动态调度算法:wlc,lc,lblc,lblcr,SED,NQ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值