文章目录
一、SaltStack简介
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能。
SaltStack是一个分布式远程执行系统,我们可以在成千万台远程节点上根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理。
1.1 SaltStack组件
SaltStack 采用 C/S模式,Salt Master就是server端,Salt Minions就是client端。
- Salt Master:中心管理系统。此系统用于将命令和配置发送到在受管系统上运行的Salt minion。
- Salt Minions:被管理的系统。 该系统运行Salt minion,它从Salt master接收命令和配置。
1.2 SaltStack原理
minion与master之间通过ZeroMQ消息队列通信。minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信。master可以发送任何指令让minion执行了,如cmd.run,当我们执行salt ‘*’ cmd.run 'uptime’的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果。master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受消息的。
- 是命令发送到远程系统,而且是并行发送不是串行的
- 使用安全加密协议
- 提供简单的编程接口
- 更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性
ZeroMQ
ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。
ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。
1.3 SaltStack优点
- 使用python语言编写,相当轻量级
- 通讯层采用ZeroMQ PUB-SUB pattern实现,使得它很快速
- 开源,可以通过python自己编写模块
二、SaltStack部署及秘钥认证过程
配置主机
主机(ip) | 服务 |
---|---|
物理机(172.25.2.250) | |
server1(172.25.2.1) | salt-master |
server2(172.25.2.2) | salt-minion |