目录
2.1 负载均衡集群(Load Balance Cluster)
2.2 高可用集群(High Availiablity Cluster)
2.3 高性能运算集群(High Performance Computing Cluster)
二、LVS(Linux Virtual Server )概述
一、集群
1、集群概述
1.1 什么是集群
在计算机科学中,集群(Cluster)是指一组相互连接的计算机(节点),这些计算机协同工作以完成共同的任务。集群可以通过网络相互通信和协作,从而形成一个整体系统
由多台主机构成,但对外只能表现为一个整体,只提供一个访问入口(域名或者ip地址),相当于一个大型计算机
集群通常被用于提高计算性能、可靠性和可扩展性
1.2 集群系统扩展方式
1.2.1 Scale UP(纵向扩展)
- 概念:Scale UP是通过增加单个服务器或节点的资源能力来提高系统性能和处理能力。这包括增加CPU核数、内存容量、存储容量等。
- 特点:Scale UP通常适用于单节点负载增加的情况,可以通过升级硬件或增加资源来提高系统的性能。这种扩展方式相对简单,但存在物理限制,无法无限制地扩展性能。
- 优点:简单易行,对于某些应用可以快速提高性能。
- 缺点:成本较高,存在硬件资源限制,不易实现无缝扩展。
1.2.2 Scale OUT(横向扩展)
- 概念:Scale OUT是通过增加系统中的节点或服务器数量来提高系统的性能和负载能力。这包括将负载分散到多个节点上进行并行处理。
- 特点:Scale OUT适用于需要处理大规模并发请求或需要高可用性的情况,可以通过增加节点数量来实现性能的线性扩展。
- 优点:相对于Scale UP,Scale OUT具有更好的横向扩展性,可以根据需求灵活地增加节点数量。
- 缺点:实现复杂一些,需要考虑数据一致性、通信开销等问题。
1.2.3 区别
- Scale UP是通过增加单个节点的资源来提高性能,而Scale OUT是通过增加节点数量来提高性能。
- Scale UP适用于单节点负载增加的情况,而Scale OUT适用于需要处理大规模并发请求或需要高可用性的情况。
- Scale UP相对简单,但存在硬件资源限制,而Scale OUT具有更好的横向扩展性,可以根据需求灵活地增加节点数量。
总之,在实际应用中,通常会根据系统需求和情况选择合适的扩展方式,有时也会将Scale UP和Scale OUT结合使用以实现更好的性能和可扩展性。
这里垂直扩展不再提及:随着计算机性能的增长,其价格会成倍增长
1.3 分布式系统
- 分布式概念:分布式系统是由多台计算机或节点协同工作,共同完成某个任务或提供某种服务的系统。在分布式系统中,各个节点通过网络通信相互协作,共享资源和信息,以实现更高的性能、可靠性和可扩展性
- 分布式存储:Ceph,GlusterFS,FastDFS,MogileFS
- 分布式计算:hadoop,Spark
- 分布式常见应用:
分布式应用:服务按照功能拆分,使用微服务(单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值服务)
分布式静态资源:静态资源放在不同的存储集群上
分布式数据和存储:使用key-value缓存系统
分布式计算:对特殊业务使用分布式计算,比如Hadoop集群
1.4 分布式与集群
集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。
分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。
注:
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败
1.5 集群设计原则
- 可扩展性:集群的横向扩展能力
- 可用性:无故障时间 (SLA service level agreement)
- 性能:访问响应时间
- 容量:单位时间内的最大并发吞吐量(C10K 并发问题)
1.6 集群设计实现
1.6.1 基础设施层面
- 提升硬件资源性能:从入口防火墙到后端 web server 均使用更高性能的硬件资源
- 多域名:DNS 轮询A记录解析
- 多入口:将A记录解析到多个公网IP入口
- 多机房:同城+异地容灾
- CDN(Content Delivery Network)—基于GSLB(Global Server Load Balance)实现全局负载均衡,如:DNS
1.6.2 业务层面
- 分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化
- 分割:基于功能分割大业务为小服务
- 分布式:对于特殊场景的业务,使用分布式计算
- 微服务
2、集群的类型
2.1 负载均衡集群(Load Balance Cluster)
- 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
- LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”“反向代理”等
2.2 高可用集群(High Availiablity Cluster)
- 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
- HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如,”故障切换” “双机热备” 等