多台机器怎样作为一个集群工作?
- 集群: 多个通过网络协作的节点共同承担工作,对使用者尽量表现为一个系统;
- 节点协作: 集群软件负责组织成员、分派任务和协调状态,网络延迟会影响整体效率;
- 入口节点: 一些设计由领导节点接收任务并汇总结果,但这只是常见结构,并非所有集群必须只有一个领导者;
- 存储形式: 节点可以使用本地存储或共享存储,前者需同步副本,后者需防止并发覆盖;
- 任务条件: 可并行拆解的工作更容易利用多节点计算和内存,串行瓶颈不会自动消失;
集群通常追求哪类目标?
| 类型 | 核心目标 | 典型关注点 |
|---|
| 高可用集群 | 节点失败后继续提供服务 | 故障检测、接管、状态恢复 |
| 负载分担集群 | 多节点共同处理请求 | 分配公平性、热点与容量 |
| 高性能计算集群 | 缩短可并行计算任务时间 | 通信开销、任务划分、汇总 |
- 收益: 可提升吞吐、扩展能力和可用性,也能利用普通机器降低单机采购门槛;
- 成本边界: 网络、冗余和运维费用可能抵消硬件节省,应计算系统总成本;
双活与主备怎样应对节点失效?
| 配置 | 正常时 | 故障时 | 代价 |
|---|
| Active-Active | 多节点同时工作 | 剩余节点承接工作 | 需要并发协调及足够冗余容量 |
| Active-Passive | 活跃节点工作,备用待命 | 备用接管 | 备用资源平时可能闲置 |
- 容量要求: 双活并不意味着任何一半节点失效后仍能保持全部性能,剩余节点必须有余量;
- 状态要求: 接管者必须拥有可用状态,仅有一台备用机器不等于可恢复服务;
为什么集群不等于负载均衡?
- 区别: 集群强调成员协作,负载均衡强调分配流量;独立后端也可以置于负载均衡器后;
- 运维复杂度: 每个节点都要安装和更新依赖,异构节点还需要区分容量与运行环境;
- 监控要求: 汇集节点日志、利用率和通信异常,避免只看集群平均值掩盖热点;
- 数据风险: 共享存储要协调写入,分布式副本要处理同步和失效,增加节点也增加协调工作;
- 原文示例: Kubernetes、ECS、Cassandra、MongoDB 和 Redis 的相关部署可体现不同集群能力;