SaltStack 运行机理特点
1.实时通讯(REAL-TIME COMMUNICATION)
所有 Salt minions 接收命令都是同时的,这意味着控制 10 个或者 10000 个系统所消耗的时间几乎是相同的。Salt 获取信息的方式是通过实时查询,而不是通过数据库获取过时的信息。
注意:数据库更适合存储作业结果,Salt 支持超过 30 款的作业结果插件,其中包括 MySQL、elasticserch、syslog、carbon、Redis 等。
2.轻量级(NO FREELOADERS)
Salt master 是轻量级的,当其进行通信时,只需要以类似“基于什么参数执行什么命令”的形式通知 Salt minions。随后 Salt minions 会自己决定如何执行。由于 Salt minions 已经集成了所需的所有命令,因此由 master 发出的指令可以很快的执行并反馈。
3.便于扩展(SALT LOVES TO SCALE)
Salt 就是为高性能和可扩展而生的。Salt 基于 ZeroMQ 或 TCP,在 master 和 minions 之间建立一条持久性的数据管道,为 Salt 带了客观的性能优势。Salt 基于类库 MessagePack 实现高性能的序列化处理,同时还使用了 Python Tornado 的异步网络库,这一切都使得 Salt 在多线程和并发方面处于领先地位。
单台 master 可轻松支持 10000 个 minions。更有甚者,在单台 master 上管理了 35000 个 minions。
4.规范化(NORMALIZE EVERYTHING)
规范化才使得 Salt 具备跨平台的能力。Salt 命令能在 Linux、Windows、MacOS、FreeBSD、Solaris、AIX、物理机、云,乃至容器上运行。
5.自动化(AUTOMATE EVERYTHING)
Salt 的事件驱动架构不仅可以实现自动初始化系统配置,还可以自动执行扩展、修复以及在线管理。同时,Salt 也可以实现对复杂分布式网络应用、数据库等方面的自动部署及维护。
6.无需二次开发(PROGRAMMING OPTIONAL)
即使不会 Pyhont 或 Roby,也可以使用 Salt 的所有功能。
7.便于功能扩展(EXTENSIBILIITY THROUGH MODULAR SYSTEMS)
对于 Salt 而言,没有什么是不可以进行功能扩展的。Salt 具有超过 20 个可扩展的子系统,这意味着只要 Salt 能实现一个特定功能,那么就能自定义如何实现这样的功能。
正是这样的特性,使得 Salt 能吸收新技术,持续健康发展,不断适应新的基础架构管理需求。
参考资料
https://docs.saltstack.com/en/getstarted/system/index.html