安装 SaltStack Config 时,将运行 SaltStack Config 安装程序中提供的编排 highstate。Highstate 在 Salt 主节点上运行并设置多节点环境。将在托管 PostgreSQL、Redis 和 RaaS 节点的其他三个节点上安装核心 SaltStack Config 架构。

注意: 不支持也不建议在容器中部署 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 名称不正确可能会导致多节点安装失败。

将这些数据保存在易于访问的记录中,便于自己参考。配置编排时,需要将这些数据输入到配置文件中的多个设置和变量中。因此,在整个安装过程中保管好此记录非常有帮助。

注:

如果您位于虚拟化环境中,请注意指定内部地址,而不是公用地址。

静态 IP 地址与动态 IP 地址

Redis 和 PostgreSQL 主机需要配置文件引用的静态 IP 地址或 DNS 名称。根据 RaaS 节点的部署方式,也可能需要静态 IP 地址或 DNS 名称。在配置中依赖动态 IP 地址可能会更改和破坏您的环境。

设置自定义工作节点 ID(可选)

工作节点 ID 是为由 Salt 主节点管理的每个工作节点提供的唯一名称。默认情况下,工作节点通过系统的主机名向 Salt 主节点标识自身。但是,可以分配自定义 ID,以描述它们在网络中的功能或位置。

如果决定自定义工作节点 ID,请尽量保持 ID 简短,但要描述其角色。例如,可以使用 apache-server-1 命名一个 Web 服务器,也可以使用 datacenter-3-rack-2,以其在数据中心内的位置命名。目标是使这些名称具有描述性并有助于将来参考。

要声明工作节点 ID,请执行以下操作:

  1. 在工作节点的终端中,导航到包含工作节点的 id.conf 文件的目录。默认情况下,目录位置为 etc/salt/minion.d/id.conf
  2. 在编辑器中打开 id.conf 文件。将 id 设置更改为首选工作节点 ID。例如:
    id: postgres-database-1
  3. 更改工作节点 ID 后,Salt 主节点必须接受(或重新接受)工作节点的密钥。有关设置密钥的具体说明,请参见接受主节点上的工作节点密钥

复制和编辑顶部状态文件

在此安装任务期间,会将随 SaltStack Config 安装程序提供的编排文件复制到 Salt 主节点。然后,编辑这些文件以引用 RaaS、Redis 数据库和 PostgreSQL 数据库这三个节点。

要复制和编辑编排配置文件,请执行以下操作:

  1. 在 Salt 主节点上,导航到 sse-installer 目录。
  2. 使用以下命令将 sse_installer 目录中的 pillar 文件和状态文件复制到工作节点的 pillar_rootsfile_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 的文件。如果此文件存在,可能需要手动将其与现有文件合并。
  3. /srv/pillar/ 目录中,现在拥有一个名为 top.sls 的文件,该文件是在上一步从安装文件复制过来的。在编辑器中打开此文件。
  4. 编辑此文件,定义 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 %}
  5. /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 应用于节点

  1. 在 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
  2. 刷新并确认每个工作节点已收到在 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
  3. 确认 pillar 的返回数据正确无误:
    sudo salt \* pillar.items

    确认您看到了与 SaltStack Config 相关的 pillar 数据。

    注:

    还可以针对特定工作节点的 pillar 数据以验证 pillar 数据是否已刷新。

  4. 运行将编排 highstate 应用于 PostgreSQL 服务器的命令。使用之前为 PostgreSQL 服务器记录的工作节点 ID。

    例如:

    sudo salt postgres-database-1 state.highstate
  5. 对以下每个服务器重复上述步骤,并替换为每个服务器的工作节点 ID:
    • Redis 节点
    • RaaS 节点
    • Salt 主节点
    注:

    将 highstate 初步应用于 Salt 主节点期间,可能会显示以下错误消息:Authenticationerroroccurred。显示此错误的原因是,Salt 主节点尚未向 RaaS 节点进行身份验证,但主节点插件安装状态将重新启动 Salt 主节点服务,该问题将自动解决。

如果在运行 highstate 时遇到任何其他错误,请参阅故障排除