什么是Linux集群
当单台服务器满足不了客户流量时,有两种扩展方式。一种向上升级,买更好的服务器。另一种是向外升级,当业务是平等的,把它们分开到各个不同的服务器中。这种不同服务器的集合,为解决某个特定问题组合起来形成的单个系统叫做Linux集群。
Linux集群类型
LB集群(Load Balancing,负载均衡)
当我们把业务中一些关键服务分离出来放入一台主机时,这台主机如果在高负载的情况下发生了故障会导致整个业务不可用,对这些单点服务器我们需要做冗余,需要把用户的请求分散到多台相同业务的主机上。而用来分散用户请求的设备称之为负载均衡器,也称分发器、调度器。当集群中存在负载均衡器就叫做LB集群。HA集群(High Availiablity,高可用)
比如当集群中的调度器挂掉导致整个集群业务瘫痪时,需要对调度器做冗余。在主调度器发生故障时会把它提供的服务转移到其他调度器,当主调度器修复上线后又能转移回来,这时我们称这个集群为HA集群。高可用集群是提供服务的可用性的,一个服务宕机了能够用另外一个主机立即来取而代之,使得服务的中断尽可能的短。
其中衡量系统可用性的方式是 A=MTBF/(MTBF+MTTR)
(0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, 99.999%, 99.9999%
MTBF称为平均无故障时间 / (平均无故障时间 + 平均修复时间)HP集群(High Performance,高性能)
人工智能中做大量计算的超级计算机,超算集群,比如围棋的阿尔法G,我们都称为HP集群。-
分布式集群
分布式集群分为两种- 分布式存储
当存储一个较大数据集,单台主机的网络IO和磁盘IO都无法承载,找一台主机实现分发调度,再把数据分发到一堆服务器上来实现存储。当一堆人要存储很多数据时,这台分发器把不同的人分散到不同的服务器上去进行存储。这台分发服务器存储了所有数据的索引,叫做元数据服务器namenode,存储数据的服务器叫做数据节点datanode,这些称之为分布式存储集群。 - 分布式计算
当我们需要做一个大量的计算任务时,对一个社交网站来说,日志访问有300亿条,想要查出300亿条中排名前100的有哪些。把大任务切成小任务,把300亿条数据分成每3亿个一份,时间就可以缩短到1/100。第一台服务器的结果,和所有其他服务器的结果在做第二次计算。如果还没有解决问题,就把大文件继续分割下去,把一个大问题分成中问题,把一个中问题分成小问题。把大问题分割成很多小问题叫做分布式计算集群。
- 分布式存储
Linux集群的调度方法
根据调度时是否考虑各RS当前的负载状态,分为静态方法和动态方法两种:
-
静态方法:仅根据算法本身进行调度;
- RR:roundrobin,轮询;
- WRR:Weighted RR,加权轮询;
- SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定;
- DH:Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡;
-
动态方法:主要根据每RS当前的负载状态及调度算法进行调度;
- LC:least connections
Overhead=activeconns*256+inactiveconns - WLC:Weighted LC
Overhead=(activeconns*256+inactiveconns)/weight - SED:Shortest Expection Delay
Overhead=(activeconns+1)*256/weight - NQ:Never Queue
- LBLC:Locality-Based LC,动态的DH算法;
- LBLCR:LBLC with Replication,带复制功能的LBLC;
- LC:least connections