纸上得来终觉浅,绝知此事要躬行。
Linux
是一套免费使用和自由传播的类 Unix
操作系统,是一个基于 POSIX
和 UNIX
的多用户、多任务、支持多线程和多 CPU
的操作系统。严格来讲,Linux
这个词本身只表示 Linux
内核,但实际上人们已经习惯了用 Linux
来形容整个基于 Linux
内核,并且使用 GNU
工程各种工具和数据库的操作系统。
1. 集群概念
分布式: 是以缩短单个任务的执行时间来提升效率的
集群: 则是通过提高单位时间内执行的任务数来提升效率
两大关键特性
- 可扩展性
- 集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。
- 高可用性
- 集群通过服务实体冗余使客户端免于轻易遇到
out of service
的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。
- 集群通过服务实体冗余使客户端免于轻易遇到
两大能力
- 负载均衡
- 负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源,从而减轻单台机器的压力。
- 错误恢复
- 由于某种原因,执行某个任务的资源出现故障,另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。
两大技术
- 集群地址
- 集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。具有单一集群地址是集群的一个基本特征,维护集群地址的设置被称为负载均衡器。
- 负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。
- 内部通信
- 为了能协同工作、实现负载均衡和错误恢复,集群各实体间必须时常通信,比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。
- 具有同一个集群地址使得客户端能访问集群提供的计算服务,一个集群地址下隐藏了各个服务实体的内部地址,使得客户要求的计算服务能在各个服务实体之间分布。内部通信是集群能正常运转的基础,它使得集群具有均衡负载和错误恢复的能力。
2. 集群分类
主要分成
- 高可用集群(
High Availability Cluster
)- 两节点双机热备
- 多节点
HA
集群 heartbeat
keepalived
RAC
集群shared
集群share-nothing
集群
- 负载均衡集群(
Load Balance Cluster
)LVS
Nginx Proxy
Haproxy
keepalived
F5
Netscaler
- 高性能集群(
High Performance Cluster
)Beowulf
集群
3. 高可用集群
(1) 集群介绍
- 高可用集群是指以减少服务中断时间为目的的服务器集群技术,简单来说,集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。
- 只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。
(2) 集群分类
- 高吞吐计算(
High-throughput Computing
)- 可以把它分成若干可以并行的子任务,而且各个子任务彼此间没有什么关联。
- 分布计算(
Distributed Computing
)- 虽然可以给分成若干并行的子任务,但是子任务间联系很紧密,需要大量的数据交换。
(3) 高可用标准
可用比例 | 年停机时间 | 可用性分类 |
---|---|---|
99.5 | 3.7 天 | 常规系统 |
99.9 | 8.8 小时 | 可用系统 |
99.99 | 52.6 分钟 | 高可用系统 |
99.999 | 5.3 分钟 | 牛逼系统 |
99.9999 | 32 秒 | 超牛逼系统 |
(4) 解决方案
4. 负载均衡集群
(1) 集群介绍
- 负载均衡集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般 Web 服务器集群、数据库集群和应用服务器集群都属于这种类型。
- 这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
(2) 网路层次
- 四层负载均衡
- 原理:第四层负载均衡将一个
Internet
上合法注册的IP
地址映射为多个内部服务器的IP
地址,对每次TCP
连接请求动态使用其中一个内部IP
地址,达到负载均衡的目的。 - 应用:在第四层交换机中,此种均衡技术得到广泛的应用,一个目标地址是服务器群
VIP
(虚拟 IP)连接请求的数据包流经交换机,交换机根据源端和目的IP
地址、TCP
或UDP
端口号和一定的负载均衡策略,在服务器IP
和VIP
间进行映射,选取服务器群中最好的服务器来处理连接请求。
- 原理:第四层负载均衡将一个
- 七层负载均衡
- 原理:第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对
HTTP
服务器群的应用。第七层负载均衡技术通过检查流经的HTTP
报头,根据报头内的信息来执行负载均衡任务。 - 优点:通过对
HTTP
报头的检查,可以检测出400
、500
和600
系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障。 - 优点:可根据流经的数据类型(如判断数据包是图像文件、压缩文件或多媒体文件格式等),把数据流量引向相应内容的服务器来处理,增加系统性能。
- 优点:能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是
asp
、cgi
等的动态文档请求,把相应的请求引向相应的服务器来处理,提高系统的性能及安全性。 - 缺点:第七层负载均衡受到其所支持的协议限制(一般只有
HTTP
),这样就限制了它应用的广泛性,并且检查HTTP
报头会占用大量的系统资源,势必会影响到系统的性能,在大量连接请求的情况下,负载均衡设备自身容易成为网络整体性能的瓶颈。
- 原理:第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对
(3) 实现方式
- 硬件(基本都是利用路由网关)
F5
Array
Redware
- 特点:价格昂贵;只从网络层来判断;适用于大访问量;一般来说优于软件
- 软件(基本都是利用
event
模型)LVS
(性能高但用户优化不好)Nginx
Haproxy
(tcp 模型,并发 65535/2)- 特点:成本低廉;使用灵活且配置简单;可以满足一般的负载均衡需求
(4) 常见应用
- DNS 负载均衡
- 最早的负载均衡技术是通过
DNS
来实现的,在DNS
中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。 DNS
负载均衡是一种简单而有效的方法,不同的客户端访问同一域名会得到不同的地址,经常用在Web
服务器,从而达到负载平衡的目的。
- 最早的负载均衡技术是通过
- 代理服务器负载均衡
- 可以将请求均匀的转发给多台内部服务器,可以提升静态网页的访问速度。
- 反向代理负载均衡
- 反向代理负载均衡技术是把将来自
Internet
上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
- 反向代理负载均衡技术是把将来自
- 地址转换网关负载均衡
- 支持负载均衡的地址转换网关,可以将一个外部
IP
地址映射为多个内部IP
地址,对每次TCP
连接请求动态使用其中一个内部地址,达到负载均衡的目的。
- 支持负载均衡的地址转换网关,可以将一个外部
- 协议内部支持负载均衡
- 有的协议内部支持与负载均衡相关的功能,例如
HTTP
协议中的重定向能力等,HTTP
运行于TCP
连接的最高层。
- 有的协议内部支持与负载均衡相关的功能,例如
- NAT 负载均衡
- 简单地说就是将一个
IP
地址转换为另一个IP
地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP
地址间进行转换。 - 适用于解决
Internet IP
地址紧张、不想让网络外部知道内部网络结构等的场合下。
- 简单地说就是将一个
- 混合型负载均衡
- 在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务,从而达到最佳的性能。
5. 高性能集群
(1) 集群介绍
- 高性能计算群集在企业或个人很少会用到,是为了解决世界上最为复杂和艰巨的计算难题,并且能够轻松处理。在气象建模、模拟撞车试验、人体基因绘图以及核爆炸模拟等多种与人类生命相关的重要领域都要用到 HPC。除政府、教育和国家实验室等公共部门之外,HPC 在制造、金融、能源、生命科学和数字媒体等行业都广受青睐。
(2) 集群架构
- 计算结点:用于执行用户程序的结点服务器
- 存储结点:向系统中的其它结点提供存储服务的服务器
- 监控结点:用来监控系统各部分的运行状态、进行远程电源管理和事件告警服务等工作
- 存储交换网络:用来连接存储结点和磁盘阵列
- 视频切换系统:可以在监控台上对结点进行各种终端的操作
- 设备系统固件层:通信软件和外部设备在适配器上的固件程序
- 结点系统软件层:结点操作系统及其核心扩展,如操作系统、设备驱动程序、文件系统扩展等
- 集群系统软件层:集群单一映象的操作管理软件。包括集群管理系统、集群监控系统、作业调度系统等
- 应用支撑环境层:科学计算应用的支撑平台。如并行环境、数学库、多核线程调试工具等
- 应用程序层:科学工程计算类的实际应用