安装 SaltStack Config 时,将运行 SaltStack Config 安装程序中提供的编排 highstate。Highstate 在 Salt 主节点上运行并设置多节点环境。将在托管 PostgreSQL、Redis 和 RaaS 节点的其他三个节点上安装核心 SaltStack Config 架构。
安装的最终目标是具有四个节点,每个节点具有不同的主机功能。每个节点也是 Salt 主节点的工作节点:
- Salt 主节点
- PostgreSQL 数据库节点
- Redis 数据库节点
- RaaS 节点,也称为 SaltStack Config 节点
执行在节点上安装 Salt 中列出的所有步骤尤为重要。特别需要注意的是,必须在安装的所有四个节点上安装 SaltStack Config 安装程序所需的依赖项。否则,多节点安装将失败。
必要的依赖项包括:
- OpenSSL
- 企业版 Linux 附加软件包 (EPEL)
- Python 加密
- Python OpenSSL 库
高可用性
可以设置多个 Salt 主节点或多个 RaaS 节点。还可以在一个节点上运行 Salt 主节点服务,在一个单独的节点上组合运行两个或更多个其他服务。本指南未详细介绍配置这种系统架构的步骤。
高可用性或自定义架构要求可能需要咨询服务。但是,在设置相同类型的多个节点之前,通常先从多节点安装方案开始,然后再配置其他架构。
有关高可用性的详细信息,请参见所需的 SaltStack Config依赖关系。
记录四个节点的关键数据
在开始标准安装之前,请记录有关安装中所涉及的四个节点中每个节点的密钥数据。您需要在安装过程中的几个阶段输入这些数据。
记录有关安装中涉及的四个节点中每个节点的以下密钥数据:
- IP 地址或 DNS 名称
- 工作节点 ID
确保明确指明哪个 IP 地址和工作节点 ID 属于哪个主机(Salt 主节点、RaaS 节点、PostgreSQL 数据库节点、Redis 数据库节点)。
最佳做法是,确认 IP 地址或 DNS 名称正确无误,因为 IP 地址或 DNS 名称不正确可能会导致多节点安装失败。
将这些数据保存在易于访问的记录中,便于自己参考。配置编排时,需要将这些数据输入到配置文件中的多个设置和变量中。因此,在整个安装过程中保管好此记录非常有帮助。
如果您位于虚拟化环境中,请注意指定内部地址,而不是公用地址。
Redis 和 PostgreSQL 主机需要配置文件引用的静态 IP 地址或 DNS 名称。根据 RaaS 节点的部署方式,也可能需要静态 IP 地址或 DNS 名称。在配置中依赖动态 IP 地址可能会更改和破坏您的环境。
设置自定义工作节点 ID(可选)工作节点 ID 是为由 Salt 主节点管理的每个工作节点提供的唯一名称。默认情况下,工作节点通过系统的主机名向 Salt 主节点标识自身。但是,可以分配自定义 ID,以描述它们在网络中的功能或位置。
如果决定自定义工作节点 ID,请尽量保持 ID 简短,但要描述其角色。例如,可以使用 apache-server-1
命名一个 Web 服务器,也可以使用 datacenter-3-rack-2
,以其在数据中心内的位置命名。目标是使这些名称具有描述性并有助于将来参考。
要声明工作节点 ID,请执行以下操作:
- 在工作节点的终端中,导航到包含工作节点的
id.conf
文件的目录。默认情况下,目录位置为etc/salt/minion.d/id.conf
。 - 在编辑器中打开
id.conf
文件。将id
设置更改为首选工作节点 ID。例如:id: postgres-database-1
- 更改工作节点 ID 后,Salt 主节点必须接受(或重新接受)工作节点的密钥。有关设置密钥的具体说明,请参见接受主节点上的工作节点密钥。
复制和编辑顶部状态文件
在此安装任务期间,会将随 SaltStack Config 安装程序提供的编排文件复制到 Salt 主节点。然后,编辑这些文件以引用 RaaS、Redis 数据库和 PostgreSQL 数据库这三个节点。
要复制和编辑编排配置文件,请执行以下操作:
- 在 Salt 主节点上,导航到
sse-installer
目录。 - 使用以下命令将
sse_installer
目录中的 pillar 文件和状态文件复制到工作节点的pillar_roots
和file_roots
中:sudo mkdir /srv/salt sudo cp -r salt/sse /srv/salt/ sudo mkdir /srv/pillar sudo cp -r pillar/sse /srv/pillar/ sudo cp -r pillar/top.sls /srv/pillar/ sudo cp -r salt/top.sls /srv/salt/
重要说明:这些说明进行了一些假设,可能不适用于您的目录结构,尤其是您已经安装了 Salt。这些说明假设:
- Salt 主节点使用默认目录结构。如果修改了目录结构,您可能需要为自定义目录结构修改这些说明。
- 在 pillar 和配置状态根目录下还没有名为
sse
的文件夹。如果此文件夹存在,可能需要手动进行合并。 - 在 pillar 或 salt 目录中还没有名为
top.sls
的文件。如果此文件存在,可能需要手动将其与现有文件合并。
- 在
/srv/pillar/
目录中,现在拥有一个名为top.sls
的文件,该文件是在上一步从安装文件复制过来的。在编辑器中打开此文件。 - 编辑此文件,定义 PostgreSQL、Redis、RaaS 和 Salt 主节点的工作节点 ID(不是 IP 地址或 DNS 名称)列表。使用之前记录的 ID。
例如:
{# Pillar Top File #} {# Define SSE Servers #} {% load_yaml as sse_servers %} - postgres-database-1 - redis-database-1 - saltstack-enterprise-api-server-1 - saltmaster-1 {% endload %} base: {# Assign Pillar Data to SSE Servers #} {% for server in sse_servers %} '{{ server }}': - sse {% endfor %}
- 在
/srv/salt/
目录中,现在拥有一个名为top.sls
的文件,该文件是在步骤 2 中复制过来的。在编辑器中打开此文件,并验证是否与以下内容一致:base: {# Target SSE Servers, according to Pillar data #} # SSE PostgreSQL Server 'I@sse_pg_server:{{ grains.id }}': - sse.eapi_database # SSE Redis Server 'I@sse_redis_server:{{ grains.id }}': - sse.eapi_cache # SSE eAPI Servers 'I@sse_eapi_servers:{{ grains.id }}': - sse.eapi_service # SSE Salt Masters 'I@sse_salt_masters:{{ grains.id }}': - sse.eapi_plugin
将 highstate 应用于节点
- 在 Salt 主节点上,同步 Grain 属性以确认 Salt 主节点具有每个工作节点所需的 Grain 数据。此步骤可确保为 SaltStack Config 功能正确生成 pillar 数据。
在同步颗粒的命令中,可以针对所有工作节点,也可以传入节点的特定工作节点 ID 列表(包括 Salt 主节点本身)并将它们括在一起。例如:
针对所有工作节点
sudo salt \* saltutil.refresh_grains
针对工作节点列表
sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_grains
- 刷新并确认每个工作节点已收到在
sse_settings.yaml
文件中定义的 pillar 数据并按预期显示。在刷新 pillar 数据的命令中,可以针对所有工作节点,也可以传入节点的特定工作节点 ID 列表(包括 Salt 主节点本身)并将它们括在一起。例如:
针对所有工作节点
sudo salt \* saltutil.refresh_pillar
针对工作节点列表
sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_pillar
- 确认 pillar 的返回数据正确无误:
sudo salt \* pillar.items
确认您看到了与 SaltStack Config 相关的 pillar 数据。
注:还可以针对特定工作节点的 pillar 数据以验证 pillar 数据是否已刷新。
- 运行将编排 highstate 应用于 PostgreSQL 服务器的命令。使用之前为 PostgreSQL 服务器记录的工作节点 ID。
例如:
sudo salt postgres-database-1 state.highstate
- 对以下每个服务器重复上述步骤,并替换为每个服务器的工作节点 ID:
- Redis 节点
- RaaS 节点
- Salt 主节点
注:将 highstate 初步应用于 Salt 主节点期间,可能会显示以下错误消息:
Authenticationerroroccurred
。显示此错误的原因是,Salt 主节点尚未向 RaaS 节点进行身份验证,但主节点插件安装状态将重新启动 Salt 主节点服务,该问题将自动解决。
如果在运行 highstate 时遇到任何其他错误,请参阅故障排除。