2015年10月28日发布
This talk will cover the pros and cons of four different OpenStack deployment mechanisms. Puppet, Chef, Ansible, and Salt for OpenStack all claim to make it much easier to configure and maintain hundreds of OpenStack deployment resources. With the advent of large-scale, highly available OpenStack deployments spread across multiple global regions, the choice of which deployment methodology to use has become more and more relevant.
视频:
https://www.youtube.com/watch?v=2H95tx7Fuv4
此视频的目的是:帮助你对配置管理工具做一个合理的选择
1,为什么配置管理对于运行 OpenStack 是关键性的?
复杂性:OpenStack 是一个大型的分布式 Iaas 云系统
变化:OpenStack 是一个开源项目,升级快速
持续性:OpenStack 集群经常被复制到多个环境
兼容性:OpenStack 自动化的关键性,速度,可靠性,兼容性
质量保证:OpenStack CM 工具是云管理实现的最佳实践
2,四个最流行的配置管理项目是什么?
对于如今的运维来说,配置管理工具是工作核心的一部分。
工具的流行程度:正在使用/计划使用
Chef: 28%/18%
Puppet: 24%/19%
Docker: 13%/35%
Ansible: 10%/10%
Salt: 6%/10%
出现时间:
Puppet: 2005
Chef: 2008
Satl: 2012
Ansible: 2013
3,它们各自支持 OpenStack 部署的力度
Salt:
配置管理系统,能够与大规模的系统进行高速的通信。
能力:可以维持被控节点的状态为被定义的状态(例如,确保某个 packages 的安装,确保某个服务处于运行状态)
基于 Python 开发,使用 push 或者 SSH 与客户端进行通信。可以查询远程节点的数据。
使用 AES 协议,加密地并发执行远程命令
网络层构建于 ZeroMQ 分部署消息网络库,使用 mspack 对二进制数据进行序列化,以确保快速的网络通信。
Salt 的特点和特性
高可扩展性:垂直和水平扩展
一个主控机的管理多个主控节点
Peer Interface: 允许 Minions 控制其他 Minions;有利于查询和连续的代码发送
Reactor system: resides on Event Bus with Master;对于事件的反应能力;可用于自动代码部署。
Snip20160813_79.png Snip20160813_80.pngSalt 主要组件:
Salt Master - 控制 Minions
Master Daemon - 为 Master 运行任务(认证 minions, 与连接的 minions 通信,salt CLI)
Salt Client - 与 Master 运行在同一个机器上;提供命令给 Master;用于可通过 Clinet 看到执行结果
Minion - 从 Master 接收命令,运行任务,并返回结果给 Master
Salt Modules - 可在 Salt CLI 上运行的 function (patterns)
Halite - 可选的 web UI
Snip20160813_81.png Snip20160813_82.png Snip20160813_83.pngSalt 总结:
Snip20160813_84.pngAnsible
-
Ansible 是一个远程命令执行系统,可对命令执行进行编排,可数据进行查询。它是一个配置管理 & 命令执行工具。
-
基于 Python,playbooks 的配置语言是 YAML,易于读写
-
提供多种 push 方法,最主要的是基于 SSH 的推送方法
-
不需要 agent,但需要能 SSH 访问被控节点,以及要求被控节点安装了 Python 解释器
特点:
- 高可扩展性
- Fact Sharing
- 强大的编排引擎
Ansible 架构
Snip20160813_85.png主要组件:
Ansible - Python CLI and libraries
Playbooks - YAML 文件,描述任务如何被执行
Roles - Playbooks 和 Varaibles 的集合
Inventory - 服务器的分组列表
Tower - 企业版
for OpenStack
Snip20160813_86.png Snip20160813_87.png Snip20160813_88.png Snip20160813_89.pngAnsible 优缺点总结:
Snip20160813_90.pngPuppet
开源的配置管理工具,可进行自动化的系统管理。
以 Client/Server 架构部署,client 周期性地轮询 Server,以获得期望的状态,并且返回状态报告给 master
分布式的架构,快速,高效地 provison, 升级,管理节点
基于 Ruby,使用可定制的 DSL 编写 manifest,采用 ERB 构建模块
比较容易增加、删除节点;每个集群可有多个 master,组成 HA 架构。
任务是幂等性的(多次执行,结果一样),只当节点状态不符合要求时才执行
资源是高度抽象的,用户可忽略命令名、文件格式、文件路径等细节。making manifests OS agnostic
Snip20160813_92.png Snip20160813_93.pngfor OpenStack
Snip20160813_94.png Snip20160813_95.pngPuppet 优缺点总结:
Snip20160813_96.pngChef:
Snip20160813_97.png Snip20160813_98.png Snip20160813_99.png Snip20160813_100.png Snip20160813_101.png Snip20160813_102.pngChef 优缺点总结
Snip20160813_103.png几种工具的对比:
Snip20160813_104.png4,根据你的角色和组织,如何选择特定的工具
作为管理者,关心的是稳定性,可维护性,大规模部署能力
网友评论