安裝 Automation Config 時,將執行 Automation Config 安裝程式中提供的 orchestration highstate。highstate 於 Salt 主節點上執行,並設定多節點環境。它會在將要主控 PostgreSQL、Redis 和 RaaS 節點的其他三個節點上安裝核心 Automation Config 架構。

小心: 不支援也不建議在容器中部署 Automation Config

安裝的最終目標是具有四個節點,每個節點具有不同的主機功能。每個節點也是 Salt 主節點的部屬節點:

  • Salt 主節點
  • PostgreSQL 資料庫節點
  • Redis 資料庫節點
  • RaaS 節點 (亦稱為 Automation Config 節點)
注意:

執行〈在節點上安裝 Salt〉中列出的所有步驟尤為重要。尤其是,必須在安裝中的所有四個節點上安裝 Automation Config 安裝程式所需的相依性。否則,多節點安裝將失敗。

必要的相依性包括:

  • OpenSSL
  • Enterprise Linux 的其他套件 (EPEL)
  • Python 密碼編譯
  • Python OpenSSL 程式庫

高可用性

可以設定多個 Salt 主節點或多個 RaaS 節點。也可以在一個節點上執行 Salt 主節點服務,並且在單獨的節點上組合執行兩個或更多個其他服務。本指南未完整說明設定此類系統架構的步驟。

高可用性或自訂架構需求可能需要諮詢服務。不過,在設定相同類型的多個節點之前,通常會先從多節點安裝案例開始,稍後再設定其他架構。

如需有關高可用性的詳細資訊,請參閱所需的 Automation Config 相依性

記錄四個節點的關鍵資料

開始標準安裝之前,請記錄有關安裝中涉及的四個節點中每個節點的關鍵資料。您將在安裝過程中的幾個時間點輸入此資料。

記錄有關安裝中涉及的四個節點中每個節點的以下關鍵資料:

  • IP 位址或 DNS 名稱
  • 部屬節點識別碼

請務必明確指出哪個 IP 位址和部屬節點識別碼屬於哪個主機 (Salt 主節點、RaaS 節點、PostgreSQL 資料庫節點、Redis 資料庫節點)。

最佳做法是確認您的 IP 位址或 DNS 名稱是否正確無誤,因為 IP 位址或 DNS 名稱錯誤可能會導致多節點安裝失敗。

將此資料保留在易於存取的記錄中,以供您自己參考。設定協調時,需要將此資料輸入到組態檔中的多個設定和變數中。基於此原因,在整個安裝過程中保存此記錄會非常有用。

備註:

如果您位於虛擬化環境中,請注意指定內部位址,而非公用位址。

靜態 IP 位址與動態 IP 位址

Redis 和 PostgreSQL 主機需要組態檔參考的靜態 IP 位址或 DNS 名稱。根據 RaaS 節點的部署方式,也可能需要靜態 IP 位址或 DNS 名稱。依賴組態中的動態 IP 位址可能會變更和破壞您的環境。

設定自訂部屬節點識別碼 (可選)

部屬節點識別碼是為 Salt 主節點所管理的每個部屬節點指定的唯一名稱。依預設,部屬節點透過系統的主機名稱向 Salt 主節點識別其自身。但是,可以指派說明其在網路內的功能或位置的自訂識別碼。

如果您決定自訂部屬節點識別碼,請盡量保持識別碼簡短,但需要說明其角色。例如,可以使用 apache-server-1 命名其中一個 Web 伺服器,也可以使用 datacenter-3-rack-2,以其在資料中心內的位置命名。其目的使這些名稱具有說明性,並且有助於日後參考。

宣告部屬節點識別碼:

  1. 在部屬節點的終端機中,導覽至包含部屬節點之 minion.conf 檔案的目錄。依預設,目錄位置為 etc/salt/minion.d
  2. 在編輯器中開啟 minion.conf 檔案。將 id 設定變更為慣用的部屬節點識別碼。例如:
    id: postgres-database-1
  3. 變更部屬節點識別碼後,Salt 主節點必須接受 (或重新接受) 部屬節點的金鑰。如需有關設定金鑰的特定指示,請參閱〈接受主節點上的部屬節點金鑰〉

複製和編輯 top 狀態檔案

在此安裝工作期間,將隨 Automation Config 安裝程式一起提供的協調檔案複製到 Salt 主節點。然後,編輯檔案以參考 RaaS、Redis 資料庫和 PostgreSQL 資料庫這三個節點。

複製和編輯協調組態檔:

  1. 在 Salt 主節點上,導覽至 sse-installer 目錄。
  2. 使用下列命令,將 pillar 和狀態檔案從 sse_installer 目錄複製到 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 主節點定義部屬節點識別碼 (而非 IP 位址或 DNS 名稱) 的清單。使用之前記錄的識別碼。

    例如:

    {# 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 包含與四個節點相對應的四個變數。將四個變數的值變更為對應節點的部屬節點識別碼 (而非 IP 位址或 DNS 名稱)。使用之前記錄的部屬節點識別碼。

    例如:

    # 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 名稱 (而非部屬節點識別碼)。如果您位於虛擬化環境中,請注意指定內部位址,而非公用位址。
    • pg_port - 提供了標準 PostgreSQL 連接埠,但如果需要,可將其覆寫。
    • pg_usernamepg_password - 輸入 API (RaaS) 將用於向 PostgreSQL 進行驗證之使用者的認證。此使用者是在您執行組態 orchestration highstate 時建立的。
    備註: 此變數指定為 pg_endpoint,因為某些安裝可能設定了不受此安裝程序管理的單獨 PostgreSQL 伺服器 (或叢集)。如果發生這種情況,請排除該動作。在此程序的後續「將 highstate 套用至節點」步驟中,請勿將 highstate 套用至 PostgreSQL 伺服器。
  4. 重複上一個步驟以編輯此檔案的區段 3,但改為編輯對應變數以指定 Redis 節點的端點和連接埠。
  5. 在此檔案的區段 4 中,編輯與 RaaS 節點相關的變數:
    • 如果這是全新安裝,請勿變更 eapi_usernameeapi_password 變數的預設值。在組態協調期間,安裝程序會使用這些預設認證建立資料庫。需要這些認證才能透過 eAPI 服務進行連線,從而在 Automation Config 中建立預設目標和工作。您將在後續的安裝後步驟中變更預設密碼。
    • 對於 eapi_endpoint 變數,將值變更為 RaaS 節點的 IP 位址或 DNS (而非部屬節點識別碼)。
      備註: 此變數指定為 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 主節點定義識別碼。此識別碼可防止在 Automation Config 內多次報告向多個 Salt 主節點報告的部屬節點。

將 highstate 套用至節點

  1. 在 Salt 主節點上,同步 Grain 屬性,以確認 Salt 主節點是否具有每個部屬節點所需的 Grain 資料。此步驟可確保為 Automation Config 功能正確產生了 pillar 資料。

    在同步粒紋的命令中,可以將目標設定為所有部屬節點,也可以傳入節點的特定部屬節點識別碼 (包括 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 資料的命令中,可以將目標設定為所有部屬節點,也可以傳入節點的特定部屬節點識別碼 (包括 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. 執行將 orchestration highstate 套用至 PostgreSQL 伺服器的命令。使用之前為 PostgreSQL 伺服器記錄的部屬節點識別碼。

    例如:

    sudo salt postgres-database-1 state.highstate
  5. 針對以下每個伺服器重複上一個步驟,以取代每個伺服器的部屬節點識別碼:
    • Redis 節點
    • RaaS 節點
    • Salt 主節點
    備註:

    初次將 highstate 套用至 Salt 主節點期間,您可能會看到下列錯誤訊息:Authenticationerroroccurred。顯示此錯誤的原因是,Salt 主節點尚未向 RaaS 節點進行驗證,但主節點外掛程式安裝狀態會重新啟動 Salt 主節點服務,此問題將會自動解決。

如果在執行 highstate 時遇到任何其他錯誤,請參閱〈疑難排解〉