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

注意: 不支持也不建议在容器中部署 Automation Config

安装的最终目标是具有四个节点,每个节点具有不同的主机功能。每个节点也是 Salt 主节点的工作节点:

  • Salt 主节点
  • PostgreSQL 数据库节点
  • Redis 数据库节点
  • RaaS 节点,也称为 Automation Config 节点
小心:

执行在节点上安装 Salt 中列出的所有步骤尤为重要。特别需要注意的是,必须在安装的所有四个节点上安装 Automation Config 安装程序所需的依赖项。否则,多节点安装将失败。

必要的依赖项包括:

  • OpenSSL
  • 企业版 Linux 附加软件包 (EPEL)
  • Python 加密
  • Python OpenSSL 库

高可用性

可以设置多个 Salt 主节点或多个 RaaS 节点。还可以在一个节点上运行 Salt 主节点服务,在一个单独的节点上组合运行两个或更多个其他服务。本指南未详细介绍配置这种系统架构的步骤。

高可用性或自定义架构要求可能需要咨询服务。但是,在设置相同类型的多个节点之前,通常先从多节点安装方案开始,然后再配置其他架构。

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

复制和编辑顶部状态文件

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

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

  1. 在 Salt 主节点上,导航到 sse-installer 目录。
  2. 使用以下命令将 sse_installer 目录中的 pillar 文件和状态文件复制到 Salt 主节点的 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
    

编辑 Automation Config 设置 pillar 文件

在此安装任务期间,将编辑 Automation Config 设置 pillar 映射文件中的五个不同部分,以提供适用于您环境的值。配置状态文件使用这些设置部署和管理 Automation Config 部署。

要复制和编辑 Automation Config 设置状态文件,请执行以下操作:

  1. 在 Salt 主节点上,导航到 /srv/pillar/sse/ 目录。
  2. 在编辑器中打开 sse_settings.yaml 文件。此文件的第 1 部分包含四个变量,分别对应于四个节点。将四个变量的值更改为相应节点的工作节点 ID(不是 IP 地址或 DNS 名称)。使用之前记录的工作节点 ID。

    例如:

    # PostgreSQL Server (Single value)
    pg_server: postgres-database-1
    
    # Redis Server (Single value)
    redis_server: redis-database-1
    
    # SaltStack Enterprise Servers (List one or more)
    eapi_servers:
      - saltstack-enterprise-api-server-1
    
    # Salt Masters (List one or more)
    salt_masters:
      - saltmaster-1
    注: pg_serverredis_server 变量是单个变量,因为大多数网络配置只有一个 PostgreSQL 和 Redis 数据库。相比之下, eapi_serverssalt-masters 的变量设置为列表格式,因为可能具有多个 RaaS 节点和 Salt 主节点。
  3. 在此文件的第 2 部分中,编辑变量,指定 PostgreSQL 节点的端点和端口:
    • pg_endpoint - 将值更改为 PostgreSQL 服务器的 IP 地址或 DNS 名称(不是工作节点 ID)。如果您位于虚拟化环境中,请注意指定内部地址,而不是公用地址。
    • pg_port - 提供标准 PostgreSQL 端口,但如果需要,可以进行覆盖。
    • pg_usernamepg_password - 输入 API (RaaS) 将用于向 PostgreSQL 进行身份验证的用户的凭据。此用户在运行配置编排 highstate 时创建。
    注: 变量指定为 pg_endpoint,因为某些安装可能配置了不由此安装过程管理的单独 PostgreSQL 服务器(或集群)。如果是这种情况,则不执行此操作。在稍后的“将 highstate 应用于节点”过程步骤中,不要将 highstate 应用于 PostgreSQL 服务器。
  4. 重复上一步骤,编辑此文件的第 3 部分,但此时,编辑相应的变量以指定 Redis 节点的端点和端口。
  5. 在此文件的第 4 部分中,编辑与 RaaS 节点相关的变量:
    • 如果这是全新安装,不要更改 eapi_usernameeapi_password 变量的默认值。在配置编排过程中,安装过程会使用这些默认凭据建立数据库。需要使用这些凭据通过 eAPI 服务进行连接,以在 Automation Config 中建立默认目标和作业。您将在后面的安装后步骤中更改默认密码。
    • 对于 eapi_endpoint 变量,将值更改为 RaaS 节点的 IP 地址或 DNS(不是工作节点 ID)。
      注: 变量指定为 eapi_endpoint,因为某些安装在一个负载均衡器后面托管多个 eAPI 服务器。
    • 默认情况下,eapi_ssl_enabled 变量设置为 True。设置为 True 时,SSL 处于启用状态。强烈建议保持启用状态。安装程序不需要 SSL 验证,但在托管自己的证书颁发机构的环境中,可能是一项安全要求。
    • 默认情况下,eapi_standalone 变量设置为 False。如果在单节点安装方案中使用 Pillar 数据,此变量为配置状态提供了指导。在这种情况下,所有 IP 通信都将定向到环回地址。在多安装方案中,应将此值设置为 False
    • 默认情况下,eapi_failover_master 变量设置为 False。此变量支持在故障切换模式下运行 Salt 主节点(和工作节点)的部署。
    • eapi_key 变量定义 Automation Config 用于管理 PostgreSQL 数据库中加密数据的加密密钥。此密钥对于每个安装应是唯一的。提供了一个默认值,但可以通过在编辑器外部的单独终端中运行以下命令生成自定义密钥:
      openssl rand -hex 32
  6. 在此文件的第 5 部分中,编辑变量,添加唯一客户标识符:
    • customer_id 变量唯一地标识 SaltStack 部署。它将成为 PostgreSQL 中 raas_* (API (RaaS)) 数据库模式名称的后缀。提供了一个默认值,但可以通过在编辑器外部的单独终端中运行以下命令生成自定义密钥:
      cat /proc/sys/kernel/random/uuid
    • 在主动或故障切换多主节点模式下配置时,cluster_id 变量为一组 Salt 主节点定义了 ID。此 ID 可防止向多个 Salt 主节点报告的工作节点在 Automation Config 中报告多次。

将 highstate 应用于节点

  1. 在 Salt 主节点上,同步 Grain 属性以确认 Salt 主节点具有每个工作节点所需的 Grain 数据。此步骤可确保为 Automation 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

    确认您看到了与 Automation 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 时遇到任何其他错误,请参阅故障排除