一、概述
1.1 工具定位
SaltStack是基于Python开发的C/S架构自动化运维工具,支持批量执行命令、集中配置管理、文件分发、数据采集、软件包管理等功能,可大幅提升多服务器环境下的运维效率,实现操作标准化、可追溯。
与同类工具对比:
工具 | 开发语言 | 架构 | 配置格式 | 特点 |
SaltStack | Python | C/S | YAML | 轻量易用,远程执行性能高 |
Ansible | Python | 无Agent(SSH) | YAML | 无需客户端,部署简单 |
Puppet | Ruby | C/S | Ruby语法 | 扩展性强,远程执行能力弱 |
1.2 核心原理
SaltStack由Master(服务端)和Minion(客户端)组成,两者通过ZeroMQ消息队列通信:
- Master端监听4505(消息发布端口)、4506(客户端通信端口)
- Minion启动后主动向Master注册并保持长连接,无需监听端口
- Master通过长连接向指定Minion下发命令,Minion执行后返回结果
二、环境准备
2.1 服务器要求
以3节点部署场景为例:
角色 | 主机名 | 系统要求 | 预配置要求 |
Master | master.saltstack.com | CentOS 7.3及以上 | 关闭SELinux、关闭防火墙、配置完整FQDN |
Minion1 | web01.saltstack.com | CentOS 7.3及以上 | 关闭SELinux、关闭防火墙、配置完整FQDN |
Minion2 | web02.saltstack.com | CentOS 7.3及以上 | 关闭SELinux、关闭防火墙、配置完整FQDN |
2.2 端口开放
Master节点需开放TCP 4505、4506端口,供Minion节点连接。
三、SaltStack安装部署
3.1 前置配置(所有节点执行)
1. 设置主机名
# Master节点
hostnamectl set-hostname master.saltstack.com
bash
# Minion1节点
hostnamectl set-hostname web01.saltstack.com
bash
# Minion2节点
hostnamectl set-hostname web02.saltstack.com
bash
2. 配置主机名映射(所有节点执行)
cat << EOF >> /etc/hosts
192.168.9.233 master.saltstack.com
192.168.9.234 web01.saltstack.com
192.168.9.235 web02.saltstack.com
EOF
3. 安装EPEL源(所有节点执行)
yum install -y epel-release