自动化与 DevOps
云计算时代,无论是私有云还是公有云,DevOps 都是云管理最基本的技能和要求,在大规模集群的部署、监控、维护和升级过程中,云管理最佳实践无疑就是践行 DevOps 理念。在云计算集群的部署与管理中,有诸多工具和方式可以实现自动化与 DevOps,如最常用的 Shell 与 Python 脚本,以及主流的自动化运维工具 Puppet、Chef、Salt Stack 和 Ansible 等。在上述自动化运维工具中,Ansible 作为后起之秀,借鉴了 Puppet 和 Chef 的优势,同时以简单易用和无客户端代理架构等特点,在中小规模私有云集群中具有绝对的优势。尽管 Ansible 的 SSH 协议和主动推送模式限制了其在大规模集群中的性能(大规模集群中 Ansible 性能较 Salt Stack 差很多),但是对于 200 个节点以下的集群规模,Ansible 仍然是 DevOps 自动化运维工具中的最佳实践。
此外,Docker 容器的出现将 DevOps 的落地实现和普及推广又推上了一个新的台阶。就现阶段开源私有云集群管理而言,基于 Docker 容器的微服务架构和容器化私有云,以及 Ansible 自动化运维工具的组合使用,是目前主流的开源云管理最佳实践手段,通过类似的微服务架构和自动化运维方案,包括二次开发、部署、运维和升级在内的整个私有云集群生命周期管理都可通过 DevOps 理念来实现。
对于开源私有云而言,最初的架构设计直接决定了后续管理的最佳实践方案,因此,从云管理最佳实践的角度出发,我们建议在设计初期就要着眼于云计算集群整个生命周期的管理,而不要仅局限于后期的运维管理。管理环节的孤立导致并无最佳实践之言,因此云管理最佳实践的实现应从最初的架构选型开始。
以 OpenStack 私有云为例,当前主流的实现方式包括传统基于 Package 的部署实现、基于 Docker 容器镜像的 TripleO 和 Kolla 的部署实现。三种实现方案基于完全不同的部署架构,传统基于 Package 的部署实现方案需要用户编写大量脚本才可实现自动化,离 DevOps 理念仍然遥不可及。TripleO 虽然也在逐渐抛弃传统的磁盘镜像部署模式,转而采用 Kolla 的容器镜像来实现,但是对于中小规模的私有云集群,TripleO 的实现方案仍然过于复杂,而且难以做到全生命周期的管理。Kolla 这个项目借助 Docker 容器和 Ansible 自动化运维工具,实现了 OpenStack 全生命周期的自动化管理,做到了 OpenStack 版本之间、项目之间的依赖隔离,实现了 OpenStack 集群功能模块的自助和动态增减,将 OpenStack 的滚动升级、全自动化实现、一键部署和一键铲除等功能推向了生产实践,同时,通过与持续集成(CI)和持续交付(CD)领域的工具集合,实现了私有云生命周期管理中的 CI/CD 功能。因此从自动化与 DevOps 角度而言,对于最小规模的 OpenStack 私有云集群,Kolla 将是全生命周期云管理中的最佳实践。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/db94b396193cc2a23bfddc4fc】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论