23、深入探索 SaltStack 安装与配置实战

深入探索 SaltStack 安装与配置实战

1. Salt 安装方式概述

Salt 有两种安装方式:使用引导脚本安装主节点(masters)和从节点(minions),或者通过 Salt 仓库手动安装和配置。下面将详细介绍这两种安装方式。

2. 使用包管理器安装 Salt

在当前基础设施中,有 1 个主节点和 3 个从节点。主节点和 1 个从节点运行 CentOS 7.5,其余虚拟机运行 Ubuntu 16.04。不同发行版的安装过程有所不同,但部分步骤相同。

2.1 CentOS 系统安装
  • 导入 SaltStack 仓库
[dsala@salt ~]$ sudo yum install \
https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

可选择运行 yum clean expire-cache ,但对于新虚拟机并非必要。
- 安装 salt - master 包

[dsala@salt ~]$ sudo yum install salt - master -y
  • 启用 salt - master 服务
[dsala@salt ~]$ sudo systemctl enable salt - master --now
  • 检查服务是否运行
[dsala@salt ~]$ ifconfig eth0 | grep inet | head - 1 | awk '{print $2}'

确认 IP 地址后,通过 SSH 进入负载均衡从节点,重复添加仓库步骤,然后安装 salt - minion 包:

[dsala@lb - vm ~]$ sudo yum install salt - minion -y
  • 启用并启动 salt - minion 服务
[dsala@lb - vm ~]$ sudo systemctl enable salt - minion --now
2.2 Ubuntu 系统安装

由于 Web 服务器没有分配公共 IP 地址,需要从主节点虚拟机或负载均衡虚拟机通过 SSH 连接到它们。可以设置 SSH 密钥认证。
- 导入 Salt 仓库的 gpg 密钥并创建仓库

dsala@web - 00:~$ echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest xenial main" \
| sudo tee /etc/apt/sources.list.d/saltstack.list
  • 更新仓库并安装 salt - minion 包
dsala@web - 00:~$ sudo apt update
dsala@web - 00:~$ sudo apt install salt - minion -y
  • 启用并检查 salt - minion 服务状态
dsala@web - 00:~$ sudo systemctl enable salt - minion --now && systemctl status salt - minion
3. 使用引导脚本安装 Salt

引导脚本会自动检测系统发行版并下载定义的包,还提供 -A 标志用于将主节点地址添加到从节点。
- 获取脚本

user@master:~$ curl -L https://bootstrap.saltstack.com -o install_salt.sh
  • 安装主节点组件
user@master:~$ sudo sh install_salt.sh -P -M
  • 安装从节点
user@master:~$ sudo sh install_salt.sh -P -A <salt master IP>
4. 主节点和从节点握手

在安装的这个阶段,要让从节点与主节点通信,验证指纹并设置配置文件。
- 配置主节点
编辑 /etc/salt/master 文件,找到 interface: 行,添加主节点的 IP 地址。

[dsala@salt ~]$ sudo systemctl daemon - reload && sudo systemctl restart salt - master

使用 ss 命令验证 Salt 主节点是否在正确的 IP 地址上监听。
- 配置从节点
编辑 /etc/salt/minion 文件,在 master: 下添加主节点的 IP 地址。
获取主节点的公共指纹:

# 在主节点上执行
[dsala@salt ~]$ # 此处应是获取指纹的命令,文档未明确给出具体命令

将主节点指纹复制到从节点配置文件的 master_finger: ' ' 行。

[dsala@web - 00 ~]$ sudo systemctl daemon - reload && sudo systemctl restart salt - master

在每个从节点退出前,记录从节点的指纹:

[dsala@web - 00 ~]$ sudo salt - call --local key.finger
  • 在主节点验证并接受密钥
# 在主节点上执行
[dsala@salt ~]$ salt - key -F
[dsala@salt ~]$ salt - key -A
[dsala@salt ~]$ salt - key -L
5. 创建 Web 服务器公式
  • 创建状态树
[dsala@salt ~]$ sudo mkdir /srv/salt
  • 创建 top.sls 文件
base:
    'web*':
       - webserver.nodejs
  • 创建 webserver 目录
[dsala@salt ~]$ sudo mkdir /srv/salt/webserver
  • 创建 nodejs.sls 文件
nodejs:
    pkg.installed
npm:
    pkg.installed
  • 应用状态文件
[dsala@salt ~]$ sudo salt 'web*' state.apply
  • 创建 webuser.sls 文件
webuser:
  user.present:
    - name: webuser
    - uid: 4000
    - home: /home/webuser

修改 top.sls 文件:

base:
   'web*':
     - webserver.nodejs
     - webserver.webuser

再次执行 salt '*' state.apply 命令创建用户。
- 创建 gitfetch.sls 文件

node - app:
     git.latest:
       - name: https://github.com/dsalamancaMS/SaltChap.git
       - target: /home/webuser/app
       - user: webuser
dep - install:
     cmd.wait:
       - cwd: /home/webuser/app
       - runas: webuser
       - name: npm install
       - watch:
         - git: node - app

修改 top.sls 文件添加 webserver.gitfetch ,再次运行 state.apply 函数下载应用。

6. 配置 Supervisor 管理 Node.js 应用
  • 创建 supervisor.conf 文件
[program:node - app]
command=nodejs .
directory=/home/webuser/app
user=webuser
  • 创建 suppkg.sls 文件
supervisor:
  pkg.installed:
    - only_upgrade: False
  service.running:
    - watch:
       - file: /etc/supervisor/conf.d/node - app.conf
/etc/supervisor/conf.d/node - app.conf:
 file.managed:
  - source: salt://webserver/supervisor.conf

修改 top.sls 文件添加 webserver.suppkg ,运行 salt 'web*' state.apply 命令应用最新状态。

7. 创建负载均衡公式
  • 创建 nginxlb 目录
[dsala@salt ~]$ sudo mkdir /srv/salt/nginxlb
  • 创建 nginx.conf 文件
events { }
http {
 upstream webapp {
   server web - 00:8080;
   server web - 01:8080;
 }
 server {
   listen 8080;
   location / {
     proxy_pass http://webapp;
   }
 }
}
  • 创建 lb.sls 文件
epel - release:
 pkg.installed
nginx:
 pkg.installed:
 - only_upgrade: False
 service.running:
 - watch:
    - file: /etc/nginx/nginx.conf
/etc/nginx/nginx.conf:
 file.managed:
  - source: salt://nginxlb/nginx.conf

运行 state.apply 命令应用最终更改,通过 cURL 测试负载均衡器。

以下是安装和配置流程的 mermaid 流程图:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B{选择安装方式}:::decision
    B -->|包管理器| C(导入 Salt 仓库):::process
    B -->|引导脚本| D(获取引导脚本):::process
    C --> E(安装主节点或从节点):::process
    D --> E
    E --> F(主从节点握手):::process
    F --> G(创建 Web 服务器公式):::process
    G --> H(配置 Supervisor):::process
    H --> I(创建负载均衡公式):::process
    I --> J([结束]):::startend

整个安装和配置过程可总结为以下表格:
|步骤|操作内容|系统要求|
|----|----|----|
|导入仓库|在 CentOS 导入 SaltStack 仓库,在 Ubuntu 导入 gpg 密钥并创建仓库|CentOS、Ubuntu|
|安装包|安装 salt - master 或 salt - minion 包|CentOS、Ubuntu|
|启用服务|启用 salt - master 和 salt - minion 服务|CentOS、Ubuntu|
|主从握手|配置主从节点通信、验证指纹、接受密钥|无|
|创建公式|创建 Web 服务器公式、配置 Supervisor、创建负载均衡公式|无|

深入探索 SaltStack 安装与配置实战

8. 标记 Web 服务器角色

在 Web 服务器配置完成后,需要为其标记适当的角色标签。可以通过运行以下命令为每个服务器添加标签:

# 示例命令,文档未明确具体命令
[dsala@web - 00 ~]$ # 此处应是添加标签的命令

可以使用以下 grep 命令检查角色是否成功应用:

# 示例命令,文档未明确具体命令
[dsala@web - 00 ~]$ # 此处应是检查标签的命令
9. 测试与验证
  • 测试从节点连接 :在主节点上运行以下命令测试从节点是否正常响应:
[dsala@salt ~]$ sudo salt '*' test.ping

如果所有从节点都返回 True ,则表示从节点与主节点通信正常。
- 测试 Web 应用 :使用 curl 命令测试 Web 应用是否正常运行:

# 假设 Web 服务器的 IP 地址为 192.168.1.100
curl http://192.168.1.100:8080
  • 测试负载均衡器 :使用 curl 命令测试负载均衡器是否正常工作:
# 假设负载均衡器的公共 IP 地址为 203.0.113.10
curl http://203.0.113.10:8080
10. 注意事项
  • 生产环境适用性 :此示例仅用于展示 SaltStack 的基本功能和可能性,距离投入生产环境还远远不够。在生产环境中,需要考虑更多的安全性、性能和可靠性因素。
  • 多环境配置 :如果需要在多个环境中使用 SaltStack,可以参考相关资料进一步学习如何配置不同的环境。
11. 总结

整个 SaltStack 的安装和配置过程可以总结为以下步骤:
1. 安装 Salt :可以通过操作系统的包管理器(如 yum apt )或引导脚本进行安装。
2. 配置主从节点 :通过 SSH 指纹验证让从节点与主节点通信。
3. 创建公式 :创建 Web 服务器公式、配置 Supervisor 管理 Node.js 应用、创建负载均衡公式。
4. 测试与验证 :测试从节点连接、Web 应用和负载均衡器的运行情况。

以下是详细步骤的列表:
1. 使用包管理器安装 Salt
- CentOS:导入 SaltStack 仓库,安装 salt - master salt - minion 包,启用服务。
- Ubuntu:导入 gpg 密钥并创建仓库,安装 salt - minion 包,启用服务。
2. 使用引导脚本安装 Salt :获取引导脚本,根据不同角色(主节点或从节点)运行相应的脚本。
3. 主从节点握手
- 配置主节点:编辑 /etc/salt/master 文件,添加主节点 IP 地址,重启服务。
- 配置从节点:编辑 /etc/salt/minion 文件,添加主节点 IP 地址和指纹,重启服务。
- 验证并接受密钥:在主节点上使用 salt - key 命令验证并接受从节点的密钥。
4. 创建 Web 服务器公式
- 创建状态树和 top.sls 文件。
- 创建 webserver 目录和相关的 .sls 文件,如 nodejs.sls webuser.sls gitfetch.sls 等。
- 应用状态文件。
5. 配置 Supervisor 管理 Node.js 应用
- 创建 supervisor.conf 配置文件。
- 创建 suppkg.sls 文件,管理配置文件。
- 修改 top.sls 文件,应用最新状态。
6. 创建负载均衡公式
- 创建 nginxlb 目录和 nginx.conf 配置文件。
- 创建 lb.sls 文件,管理 Nginx 服务。
- 应用最后更改,测试负载均衡器。
7. 标记 Web 服务器角色 :为 Web 服务器添加角色标签并验证。
8. 测试与验证 :测试从节点连接、Web 应用和负载均衡器。

以下是一个 mermaid 流程图,展示了整个过程的详细步骤:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B{选择安装方式}:::decision
    B -->|包管理器| C(导入 Salt 仓库):::process
    B -->|引导脚本| D(获取引导脚本):::process
    C --> E(安装主节点):::process
    C --> F(安装从节点):::process
    D --> E
    D --> F
    E --> G(配置主节点):::process
    F --> H(配置从节点):::process
    G --> I(主从节点握手):::process
    H --> I
    I --> J(创建 Web 服务器公式):::process
    J --> K(配置 Supervisor):::process
    K --> L(创建负载均衡公式):::process
    L --> M(标记 Web 服务器角色):::process
    M --> N(测试与验证):::process
    N --> O([结束]):::startend

通过以上步骤和操作,可以完成一个基于 SaltStack 的基础设施部署和配置,实现 Web 应用的自动化管理和负载均衡。在实际应用中,可以根据具体需求对配置进行调整和扩展。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值