1-1-LVS负载均衡
负载均衡
四层:LVS:速度比较快,可以应对更大的流量
七层:Nginx:比四层稍慢,但能看懂客户端请求的资源
1.1 为什么要使用负载均衡
负载均衡(Load Balance)集群,简称LB,提供了一种廉价、有效、透明的方法来扩展网络设备和服务器的负载、带宽、增加吞吐量、加强网络数据处理能力,提高网络的灵活性和可用性。
搭建负载均衡服务的需求:
1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点处理结束后,将结果汇总,返回给用户,系统处理能力得到更大幅度的提高
3)7*24小时服务保证,任意一个或多个有限后面节点设备
LVS(Linux Virtual Server)的简写,即linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡功能,该项目在1998年5月由章文嵩博士组织成立,是中国最早出现的自由软件之一。
参考资料网站:
IPVS(LVS)发展史:
linux 2.2内核时,IPVS以内核补丁的形式出现
2.4.23版本开始,IPVS软件就合并到LINUX内核的常用版本的内核补丁的集合
2.4.24以后,IPVS成为LINUX官方标准内核的一部分
LVS的核心主要有两个,IPVS和ipvsadm,IPVS 主要负责负载调度的工作,工作在linux内核层面,当我们用软件不能直接配置IPVS时,可以用ipvsadm进行管理
LVS技术点小结:
1、IPVS真正实现负载高度工作,工作在linux内核层面
2、LVS自带IPVS管理工具是ipvsadm
3、keepalived实现管理IPVS负载均衡器的高可用
4、Red hat 工具Piranha 通过WEB实现对IPVS管理
1.2 LVS集群负载均衡
LVS集群负载均衡器接受服务的所有入站客户端计算机请求,并根据高度算法决定哪个集群节点应该处理回复请求。负载均衡器(LB)有时也被称为LVS Director(简称Director)
相关术语
-
LB (Load Balancer 负载均衡)
-
HA (High Available 高可用)
-
Failover (失败切换)
-
Cluster (集群)
-
LVS (Linux Virtual Server Linux 虚拟服务器)
-
DS (Director Server),指的是前端负载均衡器节点
-
RS (Real Server),后端真实的工作服务器
-
VIP (Virtual IP),虚拟的IP地址,向外部直接面向用户请求,作为用户请求的目标的 IP 地址
-
DIP (Director IP),主要用于和内部主机通讯的 IP 地址
-
RIP (Real Server IP),后端服务器的 IP 地址
-
CIP (Client IP),访问客户端的 IP 地址
LVS相关术语
|
||
名称
|
缩写
|
说明
|
虚拟IP地址(Virtual Ip Address)
|
VIP
|
VIP为director用于向客户端提供服务的IP地址,比如域名就要解析到vip上提供服务
|
真实IP地址(Real Server IP Address)
|
RIP
|
在集群下面节点上使用的IP地址,物理IP地址
|
Director的IP地址(Director IP Address)
|
DIP
|
director用于连接内外网的IP地址,物理网卡上的IP地址,是负载均衡器上的IP
|
客户主机IP地址(Client IP Address)
|
CIP
|
客户端用户计算机请求集群服务器的IP地址,该地址用作发送给集群的请求的源IP地址
|
LVS集群内部节点称为真实服务器(real server)也叫做集群节点。请求集群服务的计算机称为客户端计算机,与计算机通信交换数据包方式相同,客户端、Director、和真实服务器使用IP地址进行通信。
1.3 LVS集群的 4种工作模式与原理
LVS NAT技术(Virtual Server via Network Address Translation) 修改请求报文的目标IP
LVS TUN技术(Virtual Server via IP Tunneling) 在原请求IP报文之外新加一个IP首部
LVS DR(Virtual Server via Direct Routing) 通过修改目标MAC地址实现转发 ***
FULLNAT(Full Network Address Translation) 修改请求报文的源IP和目标IP
LVS-DR模式:
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的mac地址改为后端真实服务器的mac地址;
3.后端真实服务器得到访问报文后进行ip查看,再确认自己有vip之后进行请求处理;
4.后端真实服务器在处理完数据请求后,直接响应客户端。
要求:
1.LVS服务器和后端真实的服务器要处在同一vlan中。
2.LVS和后端服务器上都要有vip,并且后端真实服务器上的vip不能对外进行广播。
优点:
1.LVS服务器只是修改了mac地址,所以非常快速,并且LVS不会成为瓶颈。
缺点:
1.要求较高,LVS服务器必须和后端真实服务器处于同一vlan中;
2.后端真实服务器直接响应客户端,对于后端真实服务器来说,并不安全。
LVS-TUNNEL模式:
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文重新封装,发送给后端真实服务器;
3.后端真实服务器将请求报文解封,在确认自身有vip之后进行请求处理;
4.后端真实服务器在处理完数据请求后,直接响应客户端。
要求:
1.lvs和后端真实服务器上都要有vip。
2.不会成为瓶颈。
3.请求的报文不能太大。
优点:
1.快速
2.不安全,不能抵抗DOS攻击
LVS-NAT模式:
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的目的地址修改为后端真实服务器(DNAT),发送给后端真实服务器;
3.后端服务器在处理完之后要将响应的报文返回给客户端,但是却不在同一网段;
4.LVS根据自己的追踪技术将后端真实服务响应客户端的报文原地址改为自己的ip地址(SNAT),发送给客户端。
要求:
1.LVS服务器需要有不同的网段。
2.真实服务器的网关必须设置为LVS的ip地址。
优点:
1.安全
2.可以实现不同网段的数据请求。
缺点:
因为在 VS/NAT 中请求和响应报文都需要通过负载调度器,伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身
有可能成为系统的新瓶颈。
LVS-fullnat模式:
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的目的地址修改为后端真实服务器(DNAT),源地址改为自己的ip地址(SNAT),发送给后端真实服务器;
3.后端服务器在处理完之后要将响应的报文返回给lvs;
4.LVS将返回的数据包源地址改为自己(SNAT),目的地址改为客户端(DNAT),发送给客户端。
fullnat模式和nat模式相似,但是与nat不同的是nat模式只做了两次地址转换,fullnat模式却做了四次。
NAT和FULLNAT的区别
nat模式下报文变化
发送 接收
cip ---> vip
cip ---> rip ( DNAT )
rip ---> cip
vip ---> cip ( SNAT )
fullnat模式下报文变化
发送 接收
cip ---> vip
lip ---> rip ( SNAT + DNAT )
rip ---> lip
vip ---> cip ( SNAT + DNAT )
注释:
cip为客户端的地址
vip为虚拟地址
rip为真实的服务器
lip为本地地址
SNAT为来源地址转换
DNAT为目的地址转换
ARP协议:(Address Resolution Protocol):
1、实现局域网内通过IP地址获取主机MAC地址
2、48位主机的MAC地址,局域网内唯一
3、ARP协议类似DNS服务,但不需要配置服务
4、ARP协议是三层协议,工作在二层
ARP的缓存表:
1)ARP缓存表可以加快ARP解析的速度,减少广播风暴
2)ARP缓存表,给恶意黑客带来了攻击服务器主机的风险,也就是ARP欺骗
3)切换路由器时、负载均衡器等设备时,可能会导致网络中断
ARP在生产环境产生的问题及解决方法
1)ARP病毒、ARP欺骗
2)高可用服务器等设备无疑迁移时要考虑ARP缓存的问题
3)路由器等设备无缝迁移时要考虑ARP缓存问题
ARP欺骗:通过伪造IP地址和MAC地址对实现ARP欺骗,如果一台电脑中了病毒,那么就能够在网络中产生大量的ARP通信量,以致于使网络阻塞,攻击者只要不断的发出伪造的ARP响应包,就能更改局域网中目标主机ARP缓存的IP-MAC条目,造成网络中断或中间人攻击
ARP广播进行新的地址解析
linux下的具体命令:
/sbin/arping -I ens33 -c 3 -s 10.10.10.13 10.10.10.1
/sbin/arping -U -I ens33 10.10.10.13
回顾ARP技术点
1、什么是ARP协议
2、APR协议工作原理
3、工作中ARP带来的实际问题及解决方案
a. 局域网APR欺骗原理及解决方法
b. 切换网关路由器,arp带来的问题
c. 集群架构中高可用服务器对之间的切换,arp带来的问题
4、局域网客户端ARP问题的防御
LVS DR模式原理
1、客户端向目标vip发出请求,lvs接收 ,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为目标mac地址,发送到局域网里
2、节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己的vip地址。
DR技术总结:
1、通过调度器LB上修改数据包的目的MAC实现转发,源IP仍然是CIP,目的IP仍然是VIP
2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发量大时使用效率很高
3、因DR模式是通过改写MAC地址的机制实现转发,因此所有RS节点和调度器LB只能在一个局域网LAN中
4、需要注意RS节点的VIP的绑定(lo:vip/32,lol:vip/32)和ARP抑制问题、
5、RS节点默认网关不需要是调度器LB的DIP,而直接是IDC机房分配的上级路由的IP(理论上:只要RS可以出网即可,不是必须要配置外网IP)
6、由于DR模式的调度器LB无法改变请求的报文的目的端口(和NAT要区别)
7、当前,调度器支持所有的UNIX和LINUX,但不支持WINDOWS系统,但真实服务器RS可以是WINDOWS系统
8、DR模式的效率很高,但是配置也比较麻烦,因此,访问量不是特别大的公司可以用haproxy、nginx,简单、易用、高效,日PV 1000-2000w或并发少开1万以下,都可以考虑用haproxy、nginx(LVS NAT模式)
9、直接对外的访问业务。如:web服务做RS节点。RS最好用公网IP地址,如果不直接对外业务,例如mysql、存储系统RS节点,最好只用内部IP地址
LVS NAT模式原理
类似于防火墙的私有网络结构,Director Server作为所有服务器节点的网关,即作为客户端的访问入口,也是各节点回应客户端的访问出口,其外网地址作为整个群集的VIP地址,其内网地址与后端服务器Real Server在同一个物理网络,Real Server必须使用私有IP地址。
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.10.10.1:80,可以通过调度器转换到RS节点10.10.10.2:8080(DR和TUN模式不具备)
6、所有NAT内部RS节点只需要节点配置私有LAN IP即可
7、由于数据包来回都需要经过调度器,因此,要开启内核转发net.ipv4_forward=1,当然也包括iptables防火墙的forward功能(DR和TUN模式不需要)
TUN模式原理
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文重新封装,发送给后端真实服务器;
3.后端真实服务器将请求报文解封,在确认自身有vip之后进行请求处理;
4.后端真实服务器在处理完数据请求后,直接响应客户端。
TUN技术总结:
1、负载均衡器通过把请求的报文通过IP隧道的方式转发至真实服务器,请求的报文不经过原目的地址的改写(包括MAC),而是直接封装成另外的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地址;