当前位置: 首页 > news >正文

SaltStack 集群安装指南

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服务器了。

http://www.hskmm.com/?act=detail&tid=32209

相关文章:

  • nginx基本配置详解
  • NCS 3.1.1 蓝牙如何设置 public 地址
  • C# Avalonia 16- Animation- BlurringButtons
  • iOS 26 崩溃日志导出全流程,多工具实践 辅助分析策略
  • 小白也能学会的 rime + 万象拼音 输入法安装教程
  • 别再争了,“Prompt已死”是个伪命题
  • 2025.10.16——1绿
  • 2025年通风气楼厂家最新权威推荐榜:工业厂房自然通风与消防排烟系统专业解决方案精选
  • 2025 年展柜定制厂家最新推荐排行榜:聚焦全链条服务与大规模生产能力的优质品牌精选
  • 了解漏洞管理和补丁管理
  • 于鸿硕项目案例作业03
  • restful接口返回忽略字段 jackon的@JsonIgnore注解应用
  • Windows系统-应用问题全面剖析Ⅱ:德承工控机DC-1300在Windows操作系统下[TPM功能]设置教程 - Johnny
  • 挂在天上放光明,好像一群IDA*
  • 元推理框架,是逻辑产物,也是逻辑功能,佛渡有缘人
  • 2025 年国内铝型材源头厂家最新推荐排行榜:聚焦优质企业核心优势,为下游企业精准采购提供专业参考
  • 基于遗传方法的动态多目标优化算法
  • 【linux内核】内核类型
  • 2025年脱模剂混合机厂家最新推荐排行榜,高效混合机,立式混合机,卧式混合机,化工混合机,脱模剂专用混合设备厂家精选
  • 神经网络_读书报告
  • Python.爬虫练习
  • vivo HDFS EC大规模落地实践
  • 防抖函数节流函数 - 东方不败-
  • 中电金信:从AI赋能到AI原生——企业级工具链平台重塑与建设实践
  • 基于TMS320F28377D双核芯片的开发例程
  • C# Avalonia 16- Animation- AnimateVisual
  • 元推理:自指自洽,无所住而生其心,良性循环就好
  • DA (Domain Adaptation,域适应)
  • 多模态大模型是新一代人工智能技术范式
  • Android四大组件之一Activity简介