安裝 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 名稱錯誤可能會導致多節點安裝失敗。
將此資料保留在易於存取的記錄中,以供您自己參考。設定協調時,需要將此資料輸入到組態檔中的多個設定和變數中。基於此原因,在整個安裝過程中保存此記錄會非常有用。
如果您位於虛擬化環境中,請注意指定內部位址,而非公用位址。
Redis 和 PostgreSQL 主機需要組態檔參考的靜態 IP 位址或 DNS 名稱。根據 RaaS 節點的部署方式,也可能需要靜態 IP 位址或 DNS 名稱。依賴組態中的動態 IP 位址可能會變更和破壞您的環境。
設定自訂部屬節點識別碼 (可選)部屬節點識別碼是為 Salt 主節點所管理的每個部屬節點指定的唯一名稱。依預設,部屬節點透過系統的主機名稱向 Salt 主節點識別其自身。但是,可以指派說明其在網路內的功能或位置的自訂識別碼。
如果您決定自訂部屬節點識別碼,請盡量保持識別碼簡短,但需要說明其角色。例如,可以使用 apache-server-1
命名其中一個 Web 伺服器,也可以使用 datacenter-3-rack-2
,以其在資料中心內的位置命名。其目的使這些名稱具有說明性,並且有助於日後參考。
宣告部屬節點識別碼:
- 在部屬節點的終端機中,導覽至包含部屬節點之
minion.conf
檔案的目錄。依預設,目錄位置為etc/salt/minion.d
。 - 在編輯器中開啟
minion.conf
檔案。將id
設定變更為慣用的部屬節點識別碼。例如:id: postgres-database-1
- 變更部屬節點識別碼後,Salt 主節點必須接受 (或重新接受) 部屬節點的金鑰。如需有關設定金鑰的特定指示,請參閱〈接受主節點上的部屬節點金鑰〉。
複製和編輯 top 狀態檔案
在此安裝工作期間,將隨 SaltStack Config 安裝程式一起提供的協調檔案複製到 Salt 主節點。然後,編輯檔案以參考 RaaS、Redis 資料庫和 PostgreSQL 資料庫這三個節點。
複製和編輯協調組態檔:
- 在 Salt 主節點上,導覽至
sse-installer
目錄。 - 使用下列命令,將 pillar 和狀態檔案從
sse_installer
目錄複製到 Salt 主節點的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 主節點定義部屬節點識別碼 (而非 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 %}
- 在
/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 資料。
在同步粒紋的命令中,可以將目標設定為所有部屬節點,也可以傳入節點的特定部屬節點識別碼 (包括 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 資料的命令中,可以將目標設定為所有部屬節點,也可以傳入節點的特定部屬節點識別碼 (包括 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 資料是否已重新整理。
- 執行將 orchestration highstate 套用至 PostgreSQL 伺服器的命令。使用之前為 PostgreSQL 伺服器記錄的部屬節點識別碼。
例如:
sudo salt postgres-database-1 state.highstate
- 針對以下每個伺服器重複上一個步驟,以取代每個伺服器的部屬節點識別碼:
- Redis 節點
- RaaS 節點
- Salt 主節點
備註:初次將 highstate 套用至 Salt 主節點期間,您可能會看到下列錯誤訊息:
Authenticationerroroccurred
。顯示此錯誤的原因是,Salt 主節點尚未向 RaaS 節點進行驗證,但主節點外掛程式安裝狀態會重新啟動 Salt 主節點服務,此問題將會自動解決。
如果在執行 highstate 時遇到任何其他錯誤,請參閱〈疑難排解〉。