1、集群简介
集群概述
集群称呼来自于英文单词 cluster,表示一群、一串的意思,用在服务器领域则表示大量服务器的集合体,协同起来向用户提供系统资源,系统服务。通过网络连接组合成一个计算机组,来共同完一个任务。
根据实际企业环境的不同,集群所提供的功能也各不相同,采用的技术细节也可能各有千秋,但无论哪种集群,都至少包括两台节点服务器。而对外表现为一个整体,只提供一个访问入口(域名或 IP 地址),为用户提供服务,组成集群的服务器称之为集群的节点。
集群特性
① 高性能(performance)
一些需要很强的运算处理能力比如天气预报,核试验等。这就不是几台计算机能够搞定的。这需要上千台一起来完成这个工作的,可以获得很高的整体性能。
② 价格有效性(性价比)
通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级计算机相比具有更高的性价比。
③ 可伸缩性
集群系统中的节点数目可以增长到几千个,乃至上万个,当服务器负载压力增长的时候,系统能够扩展来满足需求,且不降低服务质量。
④ 高可用性
在硬件和软件上都有冗余,通过检测软硬件的故障,将故障屏蔽,由存活节点提供服务,可实现高可用性。确保整个系统的服务必须是 7*24 小时运行的。
应用场景
高并发、高可用性、高性能场景
例如:一台 web 服务器,如果能够响应 10000 个并发,如果现在有 20000 个并发,一台服务器就无法响应。说明,web 服务已经达到瓶颈 。
解决这个问题的办法:
- 加配置: 加 CPU, 加内存, 加带宽, 加 SSD 这种解决方法称为“向上扩展”或“纵向扩展”, 能够解决一时, 却不能彻底解决。
- 加服务器: 一台==>两台, 两台==>四台 四台==>8 台。使用多台服务器同时为用户提供服务,而这一种解决方法则称为“横向扩展”,就是搭建集群。
集群的种类
根据集群所针对的目标差异,可分为以下三种类型:
① 负载均衡集群(laod balance cluster,简称 LB):以提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为目标,获得高并发、高负载的整体性能。 LB 的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
② 高可用集群(high availability cluster,简称 HA):以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。HA 的工作方式包括双工、主从两种模式------双工即所有节点同时在线,主从则只有主节点在线,但当出现故障时从节点能自动切换为主点。
③ 高性能运算集群(high performance computer cluster 简称 HPC):这类集群致力于提供单个计算机所不能提供的强大的计算能力,以提高应用系统的 CPU 运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力.通过专用硬件和软件将多个服务器的 CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。
实现手段
负载均衡集群(LB)实现手段
- 硬件的实现: F5 负载均衡器 深信服 A10
- 软件的实现: LVS(4 层,传输层) ,Nginx(7 层,应用层)
2、LVS 集群
LVS 介绍
官网:http://www.linuxvirtualserver.org/
中文站点: http://zh.linuxvirtualserver.org/
LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统,本项目在 1998 年 5 月由阿里巴巴的著名工程师章文嵩博士开发的一款开源软件,是中国国内最早出现的自由软件项目之一。
LVS 工作在一台 server 上提供 Director(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的 real server(真正提供服务的主机),从而实现集群环境中的负载均衡。
LVS 工作在 ISO 模型中的第四层,由于其工作在第四层,因此与 iptables 类似,必须工作在内核空间上。因此 lvs 与 iptables 一样,是直接工作在内核中的,叫 ipvs,主流的 linux 发行版默认都已经集成了 ipvs,因此用户只需安装一个管理工具ipvsadm 即可。
LVS 的专用名词 | 解释 |
DS:Director Server | 指的是前端负载均衡器节点。 |
RS:Real Server | 后端真实的工作服务器。 |
VIP | 向外部直接面向用户请求,作为用户请求的目标的 IP 地址 |
DIP:Director Server IP | 主要用于和内部主机通讯的 IP 地址。 |
RIP:Real Server IP | 后端服务器的 IP 地址。 |
CIP:Client IP | 访问客户端的 IP 地址。 |
LVS 组成
LVS 由 2 部分程序组成,包括 ipvs 和 ipvsadm。
LVS 的核心组件 ipvs 工作在 kernel 中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的 real server。而另一个组件 ipvsadm 是工作在用户空间的一个让用户定义 ipvs 规则的工具。
故我们只要在 server 上装了 ipvsadm 软件包就可以定义 ipvs 规则,而在 linux kernel 的 2.6 版本之后 kernel 是直接支持 ipvs 的。
LVS 工作图
① 负载调度器
调度器(Director): 整个集群对外的最前端主机, 负责接收用户请求, 并且根据相关的调度算法, 将请求转发到后端真实服务器上,而客户端认为服务是来自一个 IP 地址(我们可称之为 VIP 虚拟 IP 地址)上的。
② 服务器池: Server Pool
真正为用户提供服务的服务器, 每一台服务器就是一台 RS[RealServer],执行的服务有 WEB、MAIL、FTP 和 DNS 等。
③ 共享存储: Shared Storaged
为 RS 保持相同内容, 提供数据的一致性,也就是说,它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
LVS 负载均衡算法
针对不同的网络服务和配置需要,LVS 调度器提供多种不同的负载调度算法,其中最常用的算法包括轮询、加权轮询、最少连接、权最少连接和 source hashing 源地址 hash。
负载均衡方式 | 说明 |
轮询(rr, RoundRobin) | 将收到的访问请求按照顺序轮流分配给集群中的各节点(真实服务器)。 |
加权轮询(wrr, Weighted RoundRobin) | 根据真实服务器的处理能力轮流分配收到的访问请求,它将依据不同 RS 的权重分配任务。权重较高的 RS 将优先获得任务,并且分配到的连接数将比权重较低的 RS 更多。这样可以保证处理能力强的服务器承担更多的访问流量。相同权重的 RS 得到相同数目的连数。 |
最少连接(lc, Least Connections) | IPVS 表存储了所有的活动的连接。把新的连接请求发送到当前连接数最小的 RS。 |
| 在服务器节点的性能差异较大的情况下,可以为真实服务器设置权重,权重较高的节点将承担更大比例的活动连接负载。假设各台RS的权重依次为 Wi(i = 1..n),当前的 TCP 连接数依次为 Ti(i=1..n)依次选取 Ti/Wi 为最小的 RS 作为下一个分配RS。 |
source hashing 源地址 hash(sh) | 将来自同一个 ip 的请求始终调度至同一 RS |
LVS 优点
① 抗负载能力强:因为 lvs 工作方式的逻辑是非常简单的,而且工作在网络第 4 层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。lvs 一般很少出现故障,即使出现故障一般也是其他地方(如网卡或内核的承载能力已到上限)出现问题导致 lvs 出现问题,内存和 cpu 方面基本无消耗。
② 配置性低:这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
③ 工作稳定:因为其本身抗负载能力很强,所以稳定性高,另外各种 lvs 都有完整的双机热备方案,所以一点不用担心负载衡器本身会出什么问题。
④ 无流量:lvs 仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了负载均衡器的 IO 性能不会受到大流量的影响。
⑤ lvs 基本上能支持所有应用:因为 lvs 工作在第 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库等。
LVS 工作模式
LVS 有三种工作模式:NAT,DR,TUN。DR 是三种工作模式中性能最高的,TUN 次之。
- NAT(Network Address Translation) 即网络地址映射模式
- DR(Direct Routing) 即直接路由模式
- TUN(IP Tunneling) 即 IP 隧道模式