Gointerface接口声明实现及作用详解
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~