在现代IT运维领域,自动化和配置管理是提升效率、保障系统稳定性的核心,SaltStack(简称Salt)作为一款开源的、功能强大的自动化工具,凭借其高速的通信架构和灵活的扩展性,赢得了广泛的赞誉,它采用主控-受控架构,能够轻松管理成千上万台服务器,本文将详细、清晰地介绍在经典的CentOS 7.0系统上安装和配置Salt主控与受控的完整流程,帮助您快速搭建起一个功能完备的自动化管理平台。
准备工作
在开始安装之前,我们需要做好一些基本的准备工作,以确保安装过程顺利进行。
您需要至少两台安装了CentOS 7.0操作系统的服务器或虚拟机,一台将作为Salt主控,负责下发指令和管理状态;另一台或多台将作为Salt受控,接受主控的管理并执行任务。
确保网络连通性,主控服务器需要能够与所有受控服务器进行通信,通常这意味着它们应在同一个局域网内,或者防火墙规则已正确配置了跨网络访问,Salt主控默认使用4505和4506两个端口与受控通信。
操作需要具备root权限或通过sudo提权,后续的所有命令都将在root用户环境下执行。
在主控服务器上安装Salt Master
Salt主控是整个架构的核心,负责接收命令、管理配置文件,并与所有受控节点建立安全的通信连接。
第一步:配置SaltStack官方软件仓库
CentOS 7.0默认的软件源中并不包含Salt的最新版本,因此我们首先需要添加SaltStack官方提供的YUM仓库,这能确保我们安装到功能最全、最稳定的版本。
打开终端,执行以下命令来下载并安装官方的YUM仓库配置包:
yum install -y https://repo.saltproject.io/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
此命令会自动处理依赖关系,并将Salt的仓库信息添加到系统的YUM配置中。
第二步:安装Salt Master软件包
仓库配置完成后,现在可以使用yum
命令来安装Salt主控程序了,执行以下命令:
yum clean expire-cache yum install -y salt-master
yum clean expire-cache
命令会强制YUM重新读取所有仓库的元数据,以确保能找到刚刚添加的Salt仓库,然后yum install -y salt-master
会自动下载并安装salt-master
及其所有依赖包。
第三步:配置Salt Master
Salt Master的主配置文件位于/etc/salt/master
,这个文件非常庞大,包含了所有可配置的选项,对于初次安装,我们通常不需要做太多修改,但如果您的主控服务器有多个网络接口,建议明确指定监听的IP地址。
编辑配置文件:
vi /etc/salt/master
找到#interface: 0.0.0.0
这一行,去掉注释(开头的号),并将其修改为您主控服务器的实际IP地址,
interface: 192.168.1.10
这样做可以增加安全性,避免Salt服务在不必要的网络接口上监听。
第四步:启动并启用服务
配置完成后,就可以启动Salt Master服务了,并将其设置为开机自启。
systemctl start salt-master systemctl enable salt-master
您可以使用systemctl status salt-master
来检查服务是否已经成功运行。
第五步:配置防火墙
CentOS 7.0默认使用firewalld
作为防火墙管理工具,为了允许受控节点连接到主控,我们必须开放Salt所需的两个TCP端口:4505和4506。
firewall-cmd --permanent --add-port=4505/tcp firewall-cmd --permanent --add-port=4506/tcp firewall-cmd --reload
执行完这些命令后,防火墙规则就会生效,主控服务器现在可以接受来自受控的连接请求了。
为了更清晰地了解这些端口的用途,可以参考下表:
角色 | 端口 | 协议 | 描述 |
---|---|---|---|
Master | 4505 | TCP | (发布/返回)主控与受控的持续通信端口,用于发布命令 |
Master | 4506 | TCP | (响应端口)受控主动连接此端口,用于发送执行结果和文件 |
在受控服务器上安装Salt Minion
受控节点是实际执行任务的机器,它们需要安装Salt Minion并指向其主控服务器,以下步骤需要在每一台受控服务器上执行。
第一步:配置SaltStack软件仓库
与主控服务器一样,受控服务器也需要添加官方YUM仓库,命令是完全相同的:
yum install -y https://repo.saltproject.io/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
第二步:安装Salt Minion软件包
安装Minion程序:
yum clean expire-cache yum install -y salt-minion
第三步:配置Salt Minion
Minion的配置文件位于/etc/salt/minion
,最重要的配置项就是告诉Minion它的主控是谁。
编辑配置文件:
vi /etc/salt/minion
找到#master: salt
这一行,去掉注释,并将salt
替换为您主控服务器的IP地址或主机名,
master: 192.168.1.10
Minion在启动时会生成一个唯一的ID(默认为主机名),并发送给主控,这个ID将用于在主控上识别和管理该受控,您也可以通过修改id
配置项来自定义这个ID。
第四步:启动并启用服务
配置完毕后,启动并设置Minion服务开机自启:
systemctl start salt-minion systemctl enable salt-minion
Minion服务启动后,它会尝试连接到配置文件中指定的Master地址,并发送自己的公钥,等待Master的接受。
接受密钥并验证连接
当Minion首次连接Master时,Master会收到一个待接受的密钥请求,这是一种安全机制,防止未经授权的节点加入管理网络。
第一步:在主控上查看待接受的密钥
在主控服务器上,运行以下命令来列出所有已知的Minion密钥:
salt-key -L
您会看到输出分为两部分:Accepted Keys
(已接受的密钥)和Unaccepted Keys
(未接受的密钥),刚刚配置好的Minion应该会出现在Unaccepted Keys
列表中。
第二步:接受密钥
您可以选择接受单个Minion的密钥,或者一次性接受所有等待的密钥。
接受单个密钥(将minion_id
替换为您的Minion显示的ID):
salt-key -a minion_id
或者,接受所有等待的密钥:
salt-key -A
第三步:验证通信
密钥被接受后,主控和受控之间的信任关系就建立起来了,我们可以执行一个简单的测试命令来验证通信是否正常。
在主控服务器上,执行:
salt '*' test.ping
这里的是一个通配符,代表所有已接受的Minion。test.ping
是一个Salt内置的执行模块,用于测试与Minion的连通性。
如果一切正常,您应该会看到类似以下的输出,其中minion_id
是您受控节点的ID:
minion_id:
True
返回True
表示主控已经可以成功地向该受控发送指令并收到响应,至此,一个基本的CentOS 7.0安装Salt的环境就搭建完成了。
相关问答FAQs
问题1:我的受控无法连接到主控,执行salt-key -L
也看不到它的密钥,应该如何排查?
解答: 这是一个常见问题,通常由以下几个原因导致,请按顺序排查:
- 网络连通性: 在受控节点上,使用
ping <master_ip>
确认能否ping通主控,再使用telnet <master_ip> 4505
和telnet <master_ip> 4506
确认端口是否可达,如果telnet失败,说明是防火墙或网络策略问题。 - 防火墙: 再次检查主控服务器的防火墙规则,确保4505和4506端口已对受控节点的IP开放,检查受控节点自身的防火墙是否阻止了外发连接。
- Minion配置: 仔细检查受控节点的
/etc/salt/minion
文件,确保master:
后面的IP地址或主机名完全正确,且没有多余的空格或语法错误。 - 服务状态: 在受控节点上,运行
systemctl status salt-minion
查看服务是否在正常运行,如果服务异常,可以查看其日志/var/log/salt/minion
,日志中通常会有详细的错误信息,比如无法解析主控主机名或连接被拒绝等。
*问题2:我已经接受了Minion的密钥,但在主控上执行`salt ‘‘ test.ping`时,该Minion没有响应,返回为空,这是为什么?**
解答: 这种情况说明密钥认证已经通过,但后续的命令执行通信出现了问题,排查方向如下:
- Minion ID不匹配: 确认您在执行命令时使用的通配符或具体的Minion ID是否与
salt-key -L
列表中显示的ID完全一致,ID是大小写敏感的。 - 时间同步: Salt的通信对时间非常敏感,如果主控和受控之间的时间差过大(通常超过几分钟),会导致消息签名验证失败,请确保两台服务器的时间已通过NTP服务同步。
- 检查Minion日志: 这是定位问题的最佳方式,登录到无响应的受控节点,查看
/var/log/salt/minion
日志文件的末尾内容,您很可能会看到类似The Salt Master has cached the public key for this node
或者Signature verification failed
之类的错误提示,根据错误信息可以更精确地定位问题,常见的还有权限问题,例如Minion进程没有权限读取某些文件或执行某些命令。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复