分布式系统管理的变迁

查看原文

这篇文章的作者做了一份调查,调研了过去和现在大家都是怎么管理分布式系统的,并展望了下未来。

  • 手动部署和配置,例如 MySQL。当运行在 Master/Slave 模式下,它需要人工安装配置 ini 文件,然后用 shell 做运行时的 orchestration,尽管有一丢丢的脚本可以做一些简单地自动化,但它依然缺失内建的自动化设施,整套流程比较笨重。同类型的应用例如常见的网络交换器(Cisco IOS), Classic Redis, Zookeeper。
  • Host-Centric 配置管理。使用诸如 Puppet,Chef,Ansible,Salt 基于主机自动化配置所有东西。缺点是当配置 cluster 的时候会有点不太方便。主要是因为这类工具的对象是 host, 而基于集群的操作则是基于应用节点。
  • 两类基于 Host-Centric 配置管理衍生的类型,一类的操作对象是分布式系统的 infrastructure 本身,例如 Hashicorp Terraform,CloudFormation,OpenStack Heat,Bosh,Cloudify,SparkleFormation;另一类的操作对象是应用,这一类的工具包括 基于 Youtube Vitess 管理 MySQL,基于 GitHub Orchestrator 管理 MySQL,等等,基于 Netflix Priam 管理 Cassandra,基于 Redis Sentinel 管理 Redis。
  • Compute-Platform-Native Application-Specific Frameworks。这类工具目前比较流行的是 Mesos,Kebernetes,它们维护的对象是程序。他们一般持续运行着,能够处理升级和检查应用的健康,可以自动起挂掉的服务。它们一般有很多中方法可以做集群的 orchestrating 变更。
  • 未来可能是 Mesos Frameworks/K8S Operators + Terraform / Cloudformation 这样的工具集的混合使用。