深入探索 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 应用的自动化管理和负载均衡。在实际应用中,可以根据具体需求对配置进行调整和扩展。
超级会员免费看
1184

被折叠的 条评论
为什么被折叠?



