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: ntp
  service.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" in
    status)
        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-master
        for minion in "${MINIONS[@]}"; do
            sudo salt "$minion" service.restart salt-minion
        done
        ;;
    *)
        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服务器了。

posted @ 2025-10-16 11:52  染指未来  阅读(28)  评论(0)    收藏  举报