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

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

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

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

必要的相依性包括:

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

高可用性

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

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

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

複製和編輯 top 狀態檔案

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

複製和編輯協調組態檔:

  1. 在 Salt 主節點上,導覽至 sse-installer 目錄。
  2. 使用下列命令,將 pillar 和狀態檔案從 sse_installer 目錄複製到部屬節點的 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
    

將 highstate 套用至節點

  1. 在 Salt 主節點上,同步 Grain 屬性,以確認 Salt 主節點是否具有每個部屬節點所需的 Grain 資料。此步驟可確保為 SaltStack 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

    確認您看到與 SaltStack 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 時遇到任何其他錯誤,請參閱〈疑難排解〉