1.安装架构
2.yml文件
3.传输方式
- ansible:SSH
- salt:ZeroMQ
(ZeroMQ是轻量级消息队列,消息队列使用原因:消息广播 不用单个连接单波传输、异步线程池、解耦 每个minion只需要自己监听订阅消息不需要管其他节点有没有成功、削峰 防止某时间段太多的流量导致机器崩溃)
4.速度
- 体现:当管理大集群时,Ansible执行命令、分发文件、读取文件和批量脚本执行 响应速度比salt慢十倍左右,(连接通讯速度:ZeroMQ不会拥堵,持续连接速度更快,对比MQ和SSH速度40倍)
- 底层原因:SSH通道的创建和通信速度都较慢,消息队列采用发布与订阅模式,解耦
5.并发能力/性能
- ansible:使用SSH连接,多个连接多并发时若采用多进程会大量机器资源,若无多并发,则耗时严重(配合async超时、poll轮询时间)
forks
#最大开辟的进程数,这个数不易过大,过大性能消耗高,不易过小,过小的话,并发性能低。一般的设置的方法是CPI核心数*2
- salt:采用ZeroMQ是异步线程池,能支持大量的并发连接,Salt master可以同时连接很多minion而无需担心过载。
6.目标主机没有执行任务,可以看日志吗?
- ansible有幂等性(很多 ansible 的模块是不幂等的,比如 command 模块, shell 模块 ,raw 模块。)
7.安全
- ansible:
Ansible使用SSH来传输数据,可以公认为认为SSH客户端是安全的。Ansible可以轻松的建立多个非root用户与单个主机的连接。如果你非常反对有进程以root权限运行,那么你可以考虑使用Ansible。Ansible支持使用sudo来以root方式执行模块。所以你可以无需使用root来建立SSH连接。
- salt:
Salt运行master及minion时默认以root方式。这个配置可以改,但显而易见会导致一些新问题,比如非root模式下很难安装Debian包。在master上你可以配置salt命令为非root模式。我极力推荐这样做。【salt.module.sudo】
https://www.coder.work/article/2200246
Ansible日常配置
Ansible-Playbook之异步执行
salt入门配置