集群集群

一、什么是集群

集群(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表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

(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地址和端口,等结果返回时,再改回原来请求的地址和端口),当用户请求越来越多时,调度器的处理能力将成为瓶颈。

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

因为,

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

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

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

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

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

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

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

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8746 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月26日
下一篇 2020年10月26日

相关推荐