centos 7.0如何详细安装saltstack并解决常见配置问题?

在现代IT运维领域,自动化和配置管理是提升效率、保障系统稳定性的核心,SaltStack(简称Salt)作为一款开源的、功能强大的自动化工具,凭借其高速的通信架构和灵活的扩展性,赢得了广泛的赞誉,它采用主控-受控架构,能够轻松管理成千上万台服务器,本文将详细、清晰地介绍在经典的CentOS 7.0系统上安装和配置Salt主控与受控的完整流程,帮助您快速搭建起一个功能完备的自动化管理平台。

centos 7.0如何详细安装saltstack并解决常见配置问题?

准备工作

在开始安装之前,我们需要做好一些基本的准备工作,以确保安装过程顺利进行。

您需要至少两台安装了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服务了,并将其设置为开机自启。

centos 7.0如何详细安装saltstack并解决常见配置问题?

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会收到一个待接受的密钥请求,这是一种安全机制,防止未经授权的节点加入管理网络。

centos 7.0如何详细安装saltstack并解决常见配置问题?

第一步:在主控上查看待接受的密钥

在主控服务器上,运行以下命令来列出所有已知的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也看不到它的密钥,应该如何排查?

解答: 这是一个常见问题,通常由以下几个原因导致,请按顺序排查:

  1. 网络连通性: 在受控节点上,使用ping <master_ip>确认能否ping通主控,再使用telnet <master_ip> 4505telnet <master_ip> 4506确认端口是否可达,如果telnet失败,说明是防火墙或网络策略问题。
  2. 防火墙: 再次检查主控服务器的防火墙规则,确保4505和4506端口已对受控节点的IP开放,检查受控节点自身的防火墙是否阻止了外发连接。
  3. Minion配置: 仔细检查受控节点的/etc/salt/minion文件,确保master:后面的IP地址或主机名完全正确,且没有多余的空格或语法错误。
  4. 服务状态: 在受控节点上,运行systemctl status salt-minion查看服务是否在正常运行,如果服务异常,可以查看其日志/var/log/salt/minion,日志中通常会有详细的错误信息,比如无法解析主控主机名或连接被拒绝等。

*问题2:我已经接受了Minion的密钥,但在主控上执行`salt ‘‘ test.ping`时,该Minion没有响应,返回为空,这是为什么?**

解答: 这种情况说明密钥认证已经通过,但后续的命令执行通信出现了问题,排查方向如下:

  1. Minion ID不匹配: 确认您在执行命令时使用的通配符或具体的Minion ID是否与salt-key -L列表中显示的ID完全一致,ID是大小写敏感的。
  2. 时间同步: Salt的通信对时间非常敏感,如果主控和受控之间的时间差过大(通常超过几分钟),会导致消息签名验证失败,请确保两台服务器的时间已通过NTP服务同步。
  3. 检查Minion日志: 这是定位问题的最佳方式,登录到无响应的受控节点,查看/var/log/salt/minion日志文件的末尾内容,您很可能会看到类似The Salt Master has cached the public key for this node或者Signature verification failed之类的错误提示,根据错误信息可以更精确地定位问题,常见的还有权限问题,例如Minion进程没有权限读取某些文件或执行某些命令。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-12 16:47
下一篇 2025-10-12 16:52

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信