集群集群

网友投稿 207 2022-11-04


集群集群

一、什么是集群

集群(Cluster )是将多个单独存在的服务器,通过集群技术将其集合,构成一个工作组、一台大型的服务器,以单一系统的模式加以管理。

简而言之,集群就是将多台机器组合成一台机器使用。

二、集群的分类和功用

将多台机器组合成一台机器使用,很自然就可以想到,集群的作用: 1)提高性能 2)提高可用性 3)提供更多的存储资源

按照功用,集群可分为以下几个类型:

1、负载均衡(LB)集群 应对高并发。

硬件:F5 BIG-IP A10 软件:LVS Nginx/Tengine Haproxy

2、高可用(HA)集群 只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。

硬件:F5 BIG-IP A10 软件:Keepalived RHCS heartbeat Pacemaker rose(windows) PowerHA(AIX)

3、高性能计算(HPC)集群 主要解决大任务计算

4、存储集群(Storage Cluster) 主要提供高性能、可靠(副本容错)、大容量(PB级别)的存储

三、集群技术和框架

1、LVS Linux Virtual Server,Linux虚拟服务器。值得一提的是,这是由中国人章文嵩博士发起的一个开源项目,现在LVS已经是Linux内核标准的一部分。内核喔。

LVS主要用于多服务器的负载均衡;同时可把许多低性能的服务器组合在一起形成一个超级服务器,实现高性能,高可用的服务器集群。

1)LVS体系结构

使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

Director Server是整个LVS的核心。

2)LVS工作原理

负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的是IP负载均衡技术。

LVS 的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

(1)当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间

(2) PREROUTING(预路由?)链首先会接收到用户请求,确认目标IP是本机,然后将数据包发往INPUT链

(3) 当用户请求到达INPUT时,IPVS(IP虚拟服务器)和定义好的集群服务进行比对,如果命中,IPVS强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING(提交路由?)链

(4) POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,通过选路,将数据包最终发送给后端的服务器

这里面的机制可以分为三种,分别是NAT、TUN和DR,详述如下:

NAT(Network Address Translation,网络地址转换)

在NAT方式下,由调度器接收用户请求,最后又由调度器将结果返回给用户,用户请求和响应报文都必须经过Director Server地址重写(当用户请求到达调度器时,调度器将请求报文的目标地址改写成选定的Real Server地址和端口,等结果返回时,再改回原来请求的地址和端口),当用户请求越来越多时,调度器的处理能力将成为瓶颈。

TUN (IP Tunneling,IP隧道)

它的连接调度和管理与NAT方式一样,只是报文转发方法不同。TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,之后Real Server将直接响应用户的请求,不再经过前端调度器中转。因此,在TUN方式中调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。

DR(Direct Routing,直接路由)

连接调度和管理同上,但它的报文转发方法又有不同,DR通过改写请求报文的MAC地址(IP仍为负载均衡服务器地址,因此这种方式也叫数据链路层负载均衡),将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

2、Nginx 高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务。

所谓反向代理,外部可以通过Nginx访问内部的服务器。一来,如果Nginx有缓存的话,可以直接返回,提高效率,减少服务器压力;二来Nginx可以控制请求的转发,起到负载均衡的作用。

有负载均衡架构,将LVS + Nginx合用。

如上所述,LVS、Nginx都有负载均衡的作用。而且它们都能独当一面,二者合在一起是啥意思,强强联合,1+1>2吗?

因为,

nginx是基于第七层协议开发的,采用异步转发的原则,即在保持客户端链接的同时新起一个链接到负载均衡的服务端,等待服务端返回数据再返回给客户端。这么做有一个好处,nginx可以失败转移(failover),即如果和某个服务端的链接不通畅,可以换一个链接,可以服务的稳定性。

lvs是基于第四层协议开发的,采用同步转发的原则,即lvs监听到端口有链接时,会直接redirect到服务端,让服务端直接与客户端进行链接。这样做有一个弊端,就是一锤子买卖,如果请求失败了不会再做失败转移。

因此,Nginx连接有保障但压力都落在它身上,存在带宽瓶颈;LVS实际上不直接建立连接,性能高但有失败的风险。这跟TCP 和 UDP非常想像。二者结合,取长补短,相得益彰。

3、Keepalived 看名字就能猜出来,Keepalived与可用性有关。

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

Keepalived 可以配合Nginx一起工作,打造高可用的负载均衡架构:

4、Heartbeat

大约与Keepalived类似。

四、集群与分布式

我的理解,简单来说,集群是相同的内容分布于不同的机器;分布式是不同的内容分散于不同的机器。分布式的每个节点除了可以是一台机,其实也可以是集群,所以分布式在格局上比集群要大。

集群主要提供高并发(负载均衡),高可用,高性能,高容量等技术和服务。 而分布式也一样,解决的是高并发,高可用,高性能,良好扩展等问题。

但从规模和效果上看,分布式要大于集群。集群本质上,还是一个单机的概念;而分布式,是协同思想。这是我个人胡说的。

参考文章:​​​集群技术概述(入门级)​​​​手把手让你了解linux上集群原理篇【图解】​​​​LVS基本介绍​​​​为什么采用nginx+lvs的架构​​


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java 画pdf用itext调整表格宽度、自定义各个列宽的方法
下一篇:oracle 12c设置st_shapelib.dll后报ORA-28595: Extproc 代理: DLL 路径无效错误问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~