1.集群
集群是指一群相同系统的计算机组,以高速的网络实现互联,共同提供一种服务,共享一个数据库,在客户端来看就像在访问一台主机.
2.集群分类
1)HPC 高性能计算集群
HPC是高性能计算(High Performance Computing)机群的简称。指能够执行一般个人电脑无法处理的大资料量与高速运算的电脑,其基本组成组件与个人电脑的概念无太大差异,但规格与性能则强大许多。
2)LB 负载均衡集群
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
3)HA 高可用集群
HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。
3,LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
LVS负载均衡调度技术是在LINUX内核中实现的,因此被称之为LINUX虚拟服务器。我们使用该软件配置LVS时候,不能直接配置内核中的IPVS,而需要使用IPVS的管理工具ipvsadm进行管理,当然我们也可以通过keepalived软件直接管理IPVS,并不是通过ipvsadm来管理ipvs
LVS技术点小结:
1、真正实现调度的工具是IPVS,工作在LINUX内核层面。
2、LVS自带的IPVS管理工具是ipvsadm。
3、keepalived实现管理IPVS及负载均衡器的高可用。
4、Red hat 工具Piranha WEB管理实现调度的工具IPVS(不常用)。
4.LVS与集群的关系
如果说集群是一种抽象概念,那么LVS就是集群的具体实现,LVS支持高可用集群与负载均衡集群
1.LVS的三层结构
一般来说,LVS集群采用三层结构,其主要组成部分为:
A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
2.LVS工作原理
LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的,IPVS 是 LVS集群系统的核心软件,它的主要作用是:安装在 Director Server 上,同时在 Director Server上虚拟出一个IP 地址,用户必须通过这个虚拟的 IP 地址访问服务器。这个虚拟 IP 一般称为 LVS 的VIP,即 Virtual IP。访问的请求首先经过 VIP 到达负载调度器,然后由负载调度器从Real Server 列表中选取一个服务节点响应用户的请求。 在用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的 Real Server 节点,而 Real Server节点如何返回数据给用户,是 IPVS 实现的重点技术。
3.LVS专业术语
Virtual Server/Direct Routing 虚拟服务/直连路由模式
从左到右客户端(CIP)-->负载均衡服务器(DIP/VIP)-->真实服务器(DIP/VIP)
需要区别负载均衡服务器与真实服务器的区别,首先这两者的VIP是同一IP,只是前者的VIP是可以被访问的,而后者的VIP是一个伪装IP,不能够被访问,但是它能以VIP访问其他主机.所以当客户机访问VIP的时候总是会访问LVS服务器,而真实服务器以VIP的名义返回的请求得到的回应也必定会先经过LVS
1)工作流程:
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。
③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口(虚拟接口)送给eth0网卡直接发送给客户端。
2)以网卡为单位的访问流程:
从左到右: Client 真实网卡eth0-->LVS虚拟网卡eth0:0-->LVS真实网卡eth0-->RealServer真实网卡eth0-->RealServer虚拟网卡lo:0-->Client真实网卡eth0
3)总结
①调度器器进行MAC地址转发:通过在调度器 LB 上修改数据包的目的 MAC 地址实现转发。注意源地址仍然是 CIP,目的地址仍然是 VIP 地址。
②调度器只进不出:请求的报文经过调度器,而 RS 响应处理后的报文无需经过调度器 LB,因此并发访问量大时使用效率很高(和 NAT 模式比)
③调度器与服务器同局域网:因为 DR 模式是通过 MAC 地址改写机制实现转发,因此所有 RS 节点和调度器 LB 只能在一个局域网里面
④伪装IP和AP抑制:RS 主机需要绑定 VIP 地址在 LO 接口(掩码32 位,定址)上,并且需要配置 ARP 抑制(抑制除调度器之外的服务器)
⑤保证RS可以出网:RS 节点的默认网关不需要配置成 LB,而是直接配置为上级路由的网关(如果调度器之前没有网关则填写0.0.0.0默认网关),能让 RS 直接出网就可以
⑥端口一致性:由于 DR 模式的调度器仅做 MAC 地址的改写,所以调度器 LB 就不能改写目标端口,那么 RS 服务器就得使用和 VIP 相同的端口提供服务
优点:
和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
DR模式的效率很高,但是配置稍微复杂一点,因此对于访问量不是特别大的公司可以用haproxy/nginx取代。日1000-2000W PV或者并发请求1万一下都可以考虑用haproxy/nginx。
缺点:
所有 RS 节点和调度器 LB 只能在一个局域网里面。
Vitural Server/Tunnel 虚拟服务/隧道模式
1)工作流程
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。
注意:
需要设置lo接口的VIP不能在共网上出现。
总结:
1.TUNNEL 模式必须在所有的 realserver 机器上面绑定 VIP 的 IP 地址
2.TUNNEL 模式的 vip ------>realserver 的包通信通过 TUNNEL 模式,不管是内网和外网都能通信,所以不需要 lvs vip 跟 realserver 在同一个网段内
3.TUNNEL 模式 realserver 会把 packet 直接发给 client 不会给 lvs 了
4.TUNNEL 模式走的隧道模式,所以运维起来比较难,所以一般不用。
优点:
负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。
缺点:
隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。
Vitural Server/Network Address Translation模式
请求过程: Client (CIP)-->LVS(VIP)-->-->LVS(DIP)-->RealServer(RIP)-->LVS(DIP)-->LVS(VIP)
1)工作流程
①客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
②负载均衡器收到报文后,根据调度算法选择一个真实服务器,将请求转发给真实服务器,源地址为CIP请求地址更改为RIP。
③报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。
④然后LVS将此报文的源地址修改为本机VIP地址并发送给客户端。
注意:
在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端,详细见NAT模式的工作模式(NAT技术:https://blog.csdn.net/ck784101777/article/details/97931779)
特点:
1、调度服务器的工作量大:NAT 技术将请求的报文和响应的报文都需要通过 LB (负载均衡Load Balance)进行地址改写,因此网站访问量比较大的时候 LB 负载均衡调度器有比较大的瓶颈,一般要求最多之能 10-20 台节点,与DR和TUN模式不同,NAT进出都需要经手LVS
2、只需要一个IP:只需要在 LB 上配置一个公网 IP 地址(VIP)就可以了。
3、真实服务器的网关为调度器:每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址(DIP)。
4、NAT地址转换:真实服务到调度服务器采用NAT地址转换,即私网IP转公网IP,调度服务器作为真实服务器的出口.NAT 模式支持对 IP 地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致,DR模式不可以更改端口。
优点:
集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址,服务器和调度服务器都可以通过配置内网IP来互通。
缺点:
扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
工作模式 | VS/NAT | VS/TUN | VS/DR |
---|---|---|---|
Real server(节点服务器) | Config dr gw | Tunneling | Non-arp device/tie vip |
Server Network | Private | LAN/WAN | LAN |
Server number(节点数量) | Low 10-20 | High 100 | High 100 |
Real server gateway | Load balance | Own router | Own router |
优点 | 地址和端口转换 | Wan环境加密数据 | 性能最高 |
缺点 | 效率低 | 需要建立隧道 | 不能跨LAN |
在内核中的连接调度算法上,IPVS已实现了以下八种调度算法:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr
常用算法:rr wrr dh
------------------------------------------------------------------------------------------------------------------------------------------------------
参考文章:
https://www.cnblogs.com/yangliheng/p/5692068.html
https://www.cnblogs.com/gaoxu387/p/7941381.html