安裝 Automation Config 時,將執行 Automation Config 安裝程式中提供的 orchestration highstate。highstate 於 Salt 主節點上執行,並設定多節點環境。它會在將要主控 PostgreSQL、Redis 和 RaaS 節點的其他三個節點上安裝核心 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 名稱錯誤可能會導致多節點安裝失敗。
將此資料保留在易於存取的記錄中,以供您自己參考。設定協調時,需要將此資料輸入到組態檔中的多個設定和變數中。基於此原因,在整個安裝過程中保存此記錄會非常有用。
如果您位於虛擬化環境中,請注意指定內部位址,而非公用位址。
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 狀態檔案
在此安裝工作期間,將隨 Automation 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
編輯 Automation Config 設定 pillar 檔案
在此安裝工作期間,您需要在 Automation Config 設定 pillar 對應檔案中編輯五個不同的區段,以提供適用於您環境的值。組態狀態檔案使用這些設定來部署和管理您的 Automation Config 部署。
複製和編輯 Automation Config 設定狀態檔案:
- 在 Salt 主節點上,導覽至
/srv/pillar/sse/
目錄。 - 在編輯器中開啟
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_server
和redis_server
變數是單一變數,因為大多數網路組態只有一個 PostgreSQL 和 Redis 資料庫。相較之下,eapi_servers
和salt-masters
的變數以清單形式格式化,因為可以包含多個 RaaS 節點和 Salt 主節點。 - 在此檔案的區段 2 中,編輯變數以指定 PostgreSQL 節點的端點和連接埠:
-
pg_endpoint
- 將值變更為 PostgreSQL 伺服器的 IP 位址或 DNS 名稱 (而非部屬節點識別碼)。如果您位於虛擬化環境中,請注意指定內部位址,而非公用位址。 -
pg_port
- 提供了標準 PostgreSQL 連接埠,但如果需要,可將其覆寫。 -
pg_username
和pg_password
- 輸入 API (RaaS) 將用於向 PostgreSQL 進行驗證之使用者的認證。此使用者是在您執行組態 orchestration highstate 時建立的。
備註: 此變數指定為pg_endpoint
,因為某些安裝可能設定了不受此安裝程序管理的單獨 PostgreSQL 伺服器 (或叢集)。如果發生這種情況,請排除該動作。在此程序的後續「將 highstate 套用至節點」步驟中,請勿將 highstate 套用至 PostgreSQL 伺服器。 -
- 重複上一個步驟以編輯此檔案的區段 3,但改為編輯對應變數以指定 Redis 節點的端點和連接埠。
- 在此檔案的區段 4 中,編輯與 RaaS 節點相關的變數:
- 如果這是全新安裝,請勿變更
eapi_username
和eapi_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
- 如果這是全新安裝,請勿變更
- 在此檔案的區段 5 中,編輯變數以新增唯一的客戶識別碼:
customer_id
變數用於唯一識別 SaltStack 部署。它成為了 PostgreSQL 中raas_*
(API (RaaS)) 資料庫架構名稱的後置詞。提供了預設值,但可以在編輯器之外的單獨終端機中執行以下命令來產生自訂金鑰:cat /proc/sys/kernel/random/uuid
- 在主動或容錯移轉多主節點模式下設定時,
cluster_id
變數會為一組 Salt 主節點定義識別碼。此識別碼可防止在 Automation Config 內多次報告向多個 Salt 主節點報告的部屬節點。
將 highstate 套用至節點
- 在 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
- 重新整理並確認每個部屬節點已收到
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
確認您看到與 Automation 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 時遇到任何其他錯誤,請參閱〈疑難排解〉。