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。

通常会指定至少一个 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-active 与 active-passive。
Active-Active

active-active cluster 至少两台 nodes 同时提供同类服务。核心目的就是 load balancing:load balancer 把 workload 分散到所有 nodes,避免单节点过载。节点越多,throughput 与 response time 通常越好。
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,例如:
- Containers (e.g. Kubernetes, Amazon ECS)
- Databases (e.g. Cassandra, MongoDB)
- Cache (e.g. Redis)