SaltStack 集群安装指南
1. 环境准备
确保所有5台Ubuntu服务器(1台master,4台minion)满足以下条件:
- Ubuntu 20.04 LTS 或更高版本
- 网络互通,主机名解析正常
- root权限或sudo权限
2. 主机名和IP规划
假设您的服务器规划如下:
- Master: salt-master (192.168.1.100)
- Minion1: salt-minion-1 (192.168.1.101)
- Minion2: salt-minion-2 (192.168.1.102)
- Minion3: salt-minion-3 (192.168.1.103)
- Minion4: salt-minion-4 (192.168.1.104)
3. 在所有服务器上安装SaltStack
在Master和所有Minion上执行:
# 更新系统
sudo apt update
sudo apt upgrade -y# 安装SaltStack
sudo apt install -y salt-master salt-minion salt-ssh salt-cloud
4. 配置Master服务器
在Master服务器上配置:
# 编辑Master配置文件
sudo nano /etc/salt/master
添加或修改以下配置:
# 基本配置
interface: 0.0.0.0
auto_accept: True# 文件服务器设置
file_roots:base:- /srv/salt# Pillar设置
pillar_roots:base:- /srv/pillar# 启用自动接受密钥
auto_accept: True# 设置文件接收大小限制
max_open_files: 100000
启动Master服务:
sudo systemctl enable salt-master
sudo systemctl start salt-master
sudo systemctl status salt-master
5. 配置Minion服务器
在每台Minion服务器上配置:
# 编辑Minion配置文件
sudo nano /etc/salt/minion
修改以下配置(将master_ip替换为您的Master服务器IP):
# 指定Master服务器
master: 192.168.1.100# 设置Minion ID(每台Minion需要唯一)
id: salt-minion-1 # 根据实际情况修改
启动Minion服务:
sudo systemctl enable salt-minion
sudo systemctl start salt-minion
sudo systemctl status salt-minion
6. 在Master上验证连接
在Master服务器上执行:
# 查看所有连接的Minion
sudo salt-key -L# 接受所有Minion的密钥
sudo salt-key -A# 测试与所有Minion的连接
sudo salt '*' test.ping# 获取所有Minion的系统信息
sudo salt '*' grains.items
7. 创建基础Salt状态文件
在Master服务器上创建目录结构:
sudo mkdir -p /srv/salt
sudo mkdir -p /srv/pillar
创建基础状态文件:
# 创建top.sls文件
sudo nano /srv/salt/top.sls
base:'*':- common
创建通用状态文件:
sudo nano /srv/salt/common.sls
# 基础包安装
base_packages:pkg.installed:- pkgs:- htop- vim- curl- wget- git# 时间同步
ntp:pkg.installed:- name: ntpservice.running:- name: ntp- enable: True# 系统更新
system_update:pkg.uptodate:- refresh: True
8. 应用状态到所有Minion
# 应用基础状态
sudo salt '*' state.apply# 仅应用特定状态
sudo salt '*' state.apply common
9. 创建集群管理脚本
创建集群管理脚本:
sudo nano /usr/local/bin/salt-cluster-manager.sh
#!/bin/bash# SaltStack集群管理脚本MASTER_IP="192.168.1.100"
MINIONS=("salt-minion-1" "salt-minion-2" "salt-minion-3" "salt-minion-4")case "$1" instatus)echo "=== SaltStack集群状态 ==="sudo salt '*' test.ping;;keys)echo "=== 密钥状态 ==="sudo salt-key -L;;update)echo "=== 更新所有节点 ==="sudo salt '*' pkg.upgrade;;highstate)echo "=== 应用Highstate ==="sudo salt '*' state.highstate;;restart-services)echo "=== 重启Salt服务 ==="sudo systemctl restart salt-masterfor minion in "${MINIONS[@]}"; dosudo salt "$minion" service.restart salt-miniondone;;*)echo "用法: $0 {status|keys|update|highstate|restart-services}"exit 1;;
esac
设置脚本权限:
sudo chmod +x /usr/local/bin/salt-cluster-manager.sh
10. 防火墙配置(如果需要)
在Master服务器上:
sudo ufw allow 4505/tcp # Salt发布端口
sudo ufw allow 4506/tcp # Salt返回端口
sudo ufw reload
在Minion服务器上:
sudo ufw allow from 192.168.1.100 to any port 4505
sudo ufw allow from 192.168.1.100 to any port 4506
sudo ufw reload
11. 验证集群功能
测试集群功能:
# 测试连通性
sudo salt '*' test.ping# 执行远程命令
sudo salt '*' cmd.run 'uname -a'# 检查磁盘空间
sudo salt '*' disk.usage# 检查内存使用
sudo salt '*' status.meminfo
12. 故障排除
如果遇到连接问题,检查以下内容:
# 检查服务状态
sudo systemctl status salt-master
sudo systemctl status salt-minion# 检查日志
sudo tail -f /var/log/salt/master
sudo tail -f /var/log/salt/minion# 检查网络连通性
ping salt-master
telnet salt-master 4505
telnet salt-master 4506
13. 常用命令参考
# 管理密钥
sudo salt-key -L # 列出所有密钥
sudo salt-key -A # 接受所有密钥
sudo salt-key -a minion-id # 接受特定Minion
sudo salt-key -d minion-id # 删除特定Minion# 执行命令
sudo salt '*' cmd.run 'command'
sudo salt 'minion-*' pkg.install package_name# 状态管理
sudo salt '*' state.apply
sudo salt '*' state.highstate
sudo salt '*' state.sls common
这样就完成了SaltStack一主四从集群的安装和基本配置。您现在可以使用SaltStack来集中管理所有4台Minion服务器了。