logo
Foundations

Clustering

Cluster 的类型与配置

从 high level 来看,computer cluster 是由两台或以上的 computers / nodes 组成的并行系统,用来完成同一个目标。它让大量可并行的 tasks 分散到不同 nodes 上执行,从而利用多台机器的 memory 与计算能力,提高 overall performance。

要建立 cluster,nodes 必须连接到 network 以支持 internode communication。然后通过 software 把 nodes 组在一起形成 cluster。它可以有 shared storage,也可以每个 node 有本地 storage。

cluster

通常会指定至少一个 leader node 作为 entry point。leader 负责把 incoming work 分发给其他 nodes,必要时还会聚合结果并返回给用户。

理想情况下,cluster 对外像一个单一 system。用户不需要知道后面是 cluster 还是单机。同时 cluster 需要尽量 minimize latency,避免 node-to-node communication 的 bottleneck。

Types

Cluster 通常分为三类:

  • High availability / fail-over
  • Load balancing
  • High-performance computing

Configurations

最常见的 HA cluster 配置是 active-activeactive-passive

Active-Active

active-active

active-active cluster 至少两台 nodes 同时提供同类服务。核心目的就是 load balancing:load balancer 把 workload 分散到所有 nodes,避免单节点过载。节点越多,throughput 与 response time 通常越好。

Active-Passive

active-passive

active-passive 也至少两台 nodes,但不是所有 nodes 都 active。比如只有一台 active,另一台 passive / standby,主要用于 failover。

Advantages

cluster computing 的关键优势:

  • High availability
  • Scalability
  • Performance
  • Cost-effective

Load balancing vs Clustering

load balancing 和 clustering 有相似点,但不是同一件事。clustering 强调 redundancy 与整体 capacity,节点之间是 aware 的;而 load balancing 中,servers 通常彼此 unaware,只是被 load balancer 分配请求。

load balancing 可以和 clustering 一起用,也可以用于独立 servers 的场景,比如 website、business app、web service 等。

Challenges

clustering 最大挑战是安装与维护复杂度提升:OS、app、dependencies 都要在每个 node 上安装与更新。

如果 nodes 不同构,会更复杂。每个 node 的 resource utilization 需要监控,logs 也要聚合分析,保证系统正常运行。

另外 storage 管理也更难:shared storage 需要避免节点互相覆盖,分布式数据还要保持 sync。

Examples

行业里很多技术都支持 clustering,例如:

相关练习题

Clustering

暂无相关练习题