Lec 18 数据中心管理
阅读资料:
- The Datacenter as a Computer, chapter 2
- Large-Scale Cluster Management At Google With Borg
- Tail at Scale
背景
数据中心软件栈

集群管理涉及多个关键方面,包括:
集群配置与包管理
- 决定在集群的哪些节点上安装哪些软件包
- 常用工具:
- puppet、chef(通过声明式配置管理服务器)
- Ansible、Salt(提供简单快速的配置自动化)
- Docker(通过容器化实现轻量级、隔离的软甲部署)
服务发现与命名
- 解决服务如何在动态环境中相互查找
- 常用工具:
- 传统上,采用静态IP/主机名
- Eureka、Serf、SkyDNS:支持动态服务注册与发现,适应云原生环境
应用部署
应用运行的节点在哪?
如何启动/停止和监控
常用工具:
- PBS、Torque、SGE:传统作业调度系统,适合高性能计算。
- Capistrano:自动化脚本部署工具。
- Mesos、Kubernetes:现代容器编排平台,支持动态调度和扩展。
- OpenStack + Cloud Foundry、Borg:企业级云平台和内部调度框架。
而我们本节Lec的关注点放在应用部署上,应用需要多少/什么资源。
资源分配
我们知道虚拟机提供了灵活性(迁移、封装上),但是还保留监控和任务分配的挑战,如下图所示。

我们如何分配资源给不同的App,主要有两大选择,一个是私有,一个是共享。对于前者,每个App接收到私有、且静态的资源,如下图所示。

私有资源的好处:
- 简单
- 性能隔离
- 安全隔离
- 允许硬件专用化

但也带来一些挑战:
- 失败 & 维护
- 低利用率

总得来说,私有资源管理在面向用户、可扩展工作负载中至关重要,因为它通过降低尾延迟和优化负载均衡,确保快速响应和高效扩展。专用资源避免了竞争干扰。
尾延迟发生的原因各种各样,包括排队、本地和全局资源共享、后台任务、电源管理和垃圾回收等。即便稀有事件也会显著放大尾延迟。
减少尾延迟的方法:
集群管理论文
- 集群调度
- 提高扩展性,决策延迟
- ML调度: 自动da