作為安裝後程序的一部分,需要安裝、設定和升級主節點外掛程式。透過主節點外掛程式,Salt 主節點能夠與 SaltStack Config 進行通訊。主節點外掛程式包括各種設定,您可以調整這些設定以改進效能,這對於大型環境或忙碌環境特別有用。
通常,會在環境中與 SaltStack Config 進行通訊的每個 Salt 主節點上安裝主節點外掛程式。例如,如果您使用具有多個 Salt 主節點的組態 (有時稱為多主節點設定),則每個主節點都需要安裝主節點外掛程式。
如需有關更新與效能相關的設定的詳細資訊,請參閱 SaltStack Config 產品說明文件中主節點外掛程式頁面。
開始之前
安裝並設定主節點外掛程式是一系列步驟中的一個安裝後步驟,這些步驟應按特定順序執行。首先,完成其中一個安裝案例,然後閱讀〈安裝授權金鑰〉安裝後頁面。
何時需要安裝主節點外掛程式?
SaltStack Config 全新安裝完成後,需要在所有主節點上安裝主節點外掛程式。在不需要與 SaltStack Config 進行通訊的主節點上,主節點外掛程式不是必要的。
如果使用單一節點安裝安裝案例,則無需在已安裝 SaltStack Config 及其相關架構的節點上安裝主節點外掛程式。安裝程式會自動在 Salt 主節點上安裝主節點外掛程式。但是,僅在執行此安裝程式的 Salt 主節點上安裝主節點外掛程式。如果您有多個主節點,則仍需要在其他主節點上安裝主節點外掛程式。
如果近期升級到了更新版本的 SaltStack Config,還應重新安裝主節點外掛程式。如需有關在升級後升級和安裝主節點外掛程式的完整指示,請參閱從舊版升級。
如果您要手動安裝 SaltStack Config (不建議),應在安裝主節點外掛程式前完成以下步驟:
- 安裝和設定 PostgreSQL 資料庫
- 安裝和設定 Redis 資料庫
- 啟用 SSL (可選)
安裝主節點外掛程式
在 Salt 主節點上安裝主節點外掛程式:
- 登入主節點。
- 如有必要,請從 Customer Connect 下載主節點外掛程式 wheel。
- 手動安裝更新的 Python wheel 以安裝主節點外掛程式。使用以下範例命令,取代 wheel 檔案的確切名稱:
RHEL/CentOS
sudo pip3 install SSEAPE-file-name.whl --prefix /usr
Ubuntu
sudo pip3 install SSEAPE-file-name.whl
備註: 某些使用者可能需要將其作業系統的語法更改為pip3.6
或pip36
。
設定主節點外掛程式
在安裝主節點外掛程式後設定主節點:
- 登入主節點並確認
/etc/salt/master.d
目錄是否存在,或建立該目錄。 - 產生主節點組態設定。
注意: 如果您要在升級安裝時保留設定,請備份現有主節點外掛程式組態檔後再執行此步驟。然後,將現有組態中的相關設定複製到新產生的檔案。
sudo sseapi-config --all > /etc/salt/master.d/raas.conf
如果執行此命令導致出現錯誤,這可能與最初安裝 Salt 時所使用的方法相關。如果已透過 SaltStack Config 安裝程式安裝 Salt,則您的安裝可能包括一個名為 Salt Crystal 的離線套件,此套件需要特殊的升級指示。如需詳細資訊,請參閱疑難排解頁面。
- 編輯產生的
raas.conf
檔案並按如下所示更新值,以驗證 API (RaaS) 使用的憑證並設定其 IP 位址。值 說明 sseapi_ssl_validate_cert
驗證 API (RaaS) 使用的憑證。預設值為
True
。如果使用的是自己的 CA 核發憑證,請將此值設定為
True
,然後設定sseapi_ssl_ca
、sseapi_ssl_cert
和sseapi_ssl_cert:
設定。否則,請將此值設定為
False
,從而不驗證憑證。sseapi_ssl_validate_cert:False
sseapi_server
RaaS 節點的 HTTP IP 位址,例如
http://example.com
或https://example.com
(如果 SSL 已啟用)。sseapi_command_age_limit
設定略過可能失效的舊工作之前的存留期 (以秒為單位)。例如,若要略過超過一天的工作,請設定為:
sseapi_command_age_limit:86400
略過的工作將繼續存在於資料庫中,並且在 SaltStack Config 使用者介面中顯示
Completed
狀態。某些環境可能需要 Salt 主節點長時間處於離線狀態,並且需要 Salt 主節點在重新上線後執行已排入佇列的任何工作。如果您的環境適用此情況,請將存留期限制設定為
0
。 - 可選:僅手動安裝需要執行此步驟。若要確認在連線主節點外掛程式前可以連線至 SSL,請編輯產生的
raas.conf
檔案以更新下列值。如果不更新這些值,主節點外掛程式會使用預設產生的憑證。值 說明 sseapi_ssl_ca
CA 檔案的路徑。 sseapi_ssl_cert
憑證的路徑。預設值為 /etc/pki/raas/certs/localhost.crt
。sseapi_ssl_key
憑證私密金鑰的路徑。預設值為 /etc/pki/raas/certs/localhost.key
。id
透過在開頭處新增 #
,註解此行標記。這不是必要的。 - 可選:更新與效能相關的設定。對於大型或忙碌的環境,可以透過調整以下設定來提升 Salt 主節點與 SaltStack Config 之間的通訊效能。
- 啟用事件佇列 (在 Salt 2019.2.2 及更新版本中可用)。事件可在 Salt 主節點上排入佇列,並針對多個事件使用單一交易以批次方式將事件傳送至事件傳回程式。依預設,此佇列機制已停用。若要啟用事件佇列,請在 Salt 主節點外掛程式組態檔中設定以下內容:
event_return_queue:2500 event_return_queue_max_seconds:5
建議的事件佇列大小上限為 2500,如文中所示。當佇列已滿時,將會排清佇列,以將事件轉送至事件傳回程式。值越小,越適合小型或不太忙碌的環境。
在某些情況下,Salt 事件匯流排可能不夠忙碌,使得佇列定期達不到其大小上限。如果佇列中最早的事件早於設定的值,則無論佇列中有多少事件,設定
event_return_queue_max_seconds
後都將排清佇列。 - 啟用並設定
eventqueue
和rpcqueue
引擎:這些引擎會將與 SaltStack Config 的某些通訊從效能關鍵代碼路徑卸載至專用程序。當引擎正在等待與 SaltStack Config 通訊時,會將裝載儲存在 Salt 主節點的本機檔案系統中,以便資料能夠在 Salt 主節點重新啟動過程中保持不變。
若要啟用引擎,請在 Salt 主節點外掛程式組態檔 (
raas.conf
) 中取消以下設定的註解:engines: - sseapi: {} - eventqueue: {} - rpcqueue: {} - jobcompletion: {}
若要設定
eventqueue
引擎,請取消以下設定的註解並進行更新:sseapi_event_queue: name: sseapi-events strategy: always push_interval: 5 batch_limit: 2000 age_limit: 86400 size_limit: 35000000 vacuum_interval: 86400 vacuum_limit: 350000 forward: []
可以根據佇列參數的共同運作方式來調整這些參數。例如,假設 Salt 事件匯流排上每秒平均有 400 個事件,上述設定允許在最早事件因大小或存留期限制而遭到捨棄之前,在 Salt 主節點上收集大約 24 小時的已排入佇列的事件流量。
若要設定
rpcqueue
引擎,請取消以下設定的註解並進行更新:sseapi_rpc_queue: name: sseapi-rpc strategy: always push_interval: 5 batch_limit: 500 age_limit: 3600 size_limit: 360000 vacuum_interval: 86400 vacuum_limit: 100000
- 啟用負載快取:
sseapi_local_cache: load:3600
備註: 如果rpcqueue
引擎已啟用,還必須啟用負載快取,Salt 主節點才能正確處理工作。 - 限制部屬節點粒紋裝載大小:
sseapi_max_minion_grains_payload:2000
- 啟用略過早於定義時間 (以秒為單位) 的工作。例如,使用
86400
會設定為略過一天前的工作。如果設定為0
,將停用此功能:sseapi_command_age_limit:0
備註:此功能在升級期間非常有用,可防止資料庫中儲存的舊命令意外執行。
Salt 中的事件佇列以及 Salt 主節點外掛程式中的佇列引擎、負載快取、粒紋裝載大小限制和命令存留期限制共同增加了輸送量,並減少了在對效能最敏感的代碼路徑中 Salt 主節點與 SaltStack Config 之間的通訊延遲。
- 啟用事件佇列 (在 Salt 2019.2.2 及更新版本中可用)。事件可在 Salt 主節點上排入佇列,並針對多個事件使用單一交易以批次方式將事件傳送至事件傳回程式。依預設,此佇列機制已停用。若要啟用事件佇列,請在 Salt 主節點外掛程式組態檔中設定以下內容:
- 重新啟動主節點服務。
sudo systemctl restart salt-master
- 可選:您可能想要執行測試工作,以確保主節點外掛程式現已啟用主節點與 RaaS 節點之間的通訊。
salt -v '*' test.ping
即使未顯示任何活動,例如未連線部屬節點,也可能表示組態正確無誤。
組態設定參考
組態檔中的這些設定可讓每個 Salt 主節點連線至 API (RaaS)。您可以在 /etc/salt/master.d/raas.conf
組態檔中找到這些設定。
raas.conf 檔案中的 Salt 主節點設定優先於 /etc/salt/master
中的現有設定。如果已自訂 /etc/salt/master
中的 fileserver_backend
或 ext_pillar
設定,則需要手動合併這些設定,以便這些設定僅顯示在一個檔案中。可以選擇性地對後端進行重新排序,以變更優先順序。
下表說明了一般組態設定:
選項 | 說明 |
---|---|
id |
Salt 主節點識別碼,如果未設定,則自動產生 |
sseapi_server |
SSEAPI 伺服器的 URL,例如 https://sse.example.com:443 |
engines |
要啟用的 Salt 引擎,建議使用 sseapi 、jobcompletion 、eventqueue 和 jobcompletion |
master_job_cache |
使用 sseapi ,以使用 SaltStack Config 主節點工作快取 |
event_return |
Salt 事件傳回程式,建議使用 sseapi ,以使用 SaltStack Config 事件傳回程式 |
ext_pillar |
外部 pillar 來源,建議使用 sseapi |
fileserver_backend |
檔案伺服器後端,建議使用 sseapi 和 roots |
sseapi_update_interval |
從檔案伺服器更新的頻率 (以秒為單位,預設為 60) |
sseapi_poll_interval |
輪詢 SaltStack Config 以取得新資料的頻率 (以秒為單位,預設為 30) |
sseapi_timeout |
API (RaaS) 呼叫逾時 (以秒為單位,預設為 200) |
sseapi_pubkey_path |
用於向 SaltStack Config 驗證 Salt 主節點的公開金鑰檔案的路徑 |
sseapi_key_rotation |
Salt 主節點 SaltStack Config 驗證金鑰輪替間隔 (以秒為單位,預設為 86400) |
sseapi_cache_pillar |
是否在 SaltStack Config 內快取 pillar 資料 (True 或 False,預設為 False) |
sseapi_cluster_id |
(可選) Salt 主節點叢集名稱,用於在 SaltStack Config 中將 Salt 主節點分組到叢集 |
sseapi_failover_master |
此 Salt 主節點是否為容錯移轉 Salt 主節點 (True 或 False,預設為 False) |
sseapi_command_age_limit |
是否略過早於定義時間的 API (RaaS) 命令 (以秒為單位,0 表示停用,預設為 0) |
下表說明了 SSL 設定:
選項 | 說明 |
---|---|
sseapi_ssl_key |
憑證私密金鑰的路徑 |
sseapi_ssl_cert |
憑證的路徑 |
sseapi_ssl_validate_cert |
是否驗證 SaltStack Config SSL 憑證 (True 或 False,預設為 True) |
下表說明了顯示在 sseapi_event_queue
標題下的事件佇列引擎設定:
選項 | 說明 |
---|---|
name |
事件佇列名稱 (預設為 sseapi-events ,無需變更此項) |
strategy |
將事件排入佇列的時間 (always 、on_failure 或 never ,預設為 never ) |
push_interval |
將事件推送至 SaltStack Config 的頻率 (以秒為單位,預設為 5) |
batch_limit |
每個間隔推送至 SaltStack Config 的事件數目上限 (預設為 2000) |
age_limit |
已排入佇列的事件存留期上限;捨棄最早的事件 (以秒為單位,預設為 86400) |
size_limit |
佇列大小上限;捨棄最早的事件 (事件數,預設為 35000000) |
vacuum_interval |
對佇列資料庫執行 vacuum 操作的頻率 (以秒為單位,預設為 86400) |
vacuum_limit |
對佇列資料庫執行 vacuum 操作時的佇列大小上限 (事件數,預設為 350000) |
forward |
排清佇列時要向其傳送事件的其他 Salt 傳回程式 (預設為無)
sseapi_event_queue: # ...other queue settings... forward: - rawfile_json # rawfile_json returner configuration rawfile_json.filename: /var/log/salt/events.json |
下表說明了顯示在 sseapi_rpc_queue
標題下 RPC 佇列引擎設定:
選項 | 說明 |
---|---|
name |
事件佇列名稱 (預設為 sseapi-rpc ,無需變更此項) |
strategy |
將事件排入佇列的時間 (always 、on_failure 或 never ,預設為 never ) |
push_interval |
將呼叫傳送至 SaltStack Config 的頻率 (以秒為單位,預設為 5) |
batch_limit |
每個間隔推送至 SaltStack Config 的呼叫數目上限 (預設為 500) |
age_limit |
已排入佇列的呼叫存留期上限;捨棄最早的項目 (以秒為單位,預設為 3600) |
size_limit |
佇列大小上限;捨棄最早的項目 (事件數,預設為 360000) |
vacuum_interval |
對佇列資料庫執行 vacuum 操作的頻率 (以秒為單位,預設為 86400) |
vacuum_limit |
對佇列資料庫執行 vacuum 操作時的佇列大小上限 (項目數,預設為 100000) |
下表說明了路徑設定。產生初始組態後,請謹慎變更這些設定。模組將透過安裝程序複製到這些目錄中。但是,新增額外路徑不會造成不利影響。
選項 | 說明 |
---|---|
beacons_dirs |
指標外部模組路徑 |
engines_dirs |
引擎外部模組路徑 |
fileserver_dirs |
檔案伺服器外部模組路徑 |
pillar_dirs |
pillar 外部模組路徑 |
returner_dirs |
傳回程式外部模組路徑 |
roster_dirs |
名冊外部模組路徑 |
runner_dirs |
執行器外部模組路徑 |
module_dirs |
Salt 外部模組路徑 |
proxy_dirs |
Proxy 外部模組路徑 |
metaproxy_dirs |
中繼 Proxy 外部模組路徑 |
states_dirs |
狀態外部模組路徑 |
後續步驟
安裝並設定主節點外掛程式後,必須完成其他安裝後步驟。下一步是設定 RaaS 節點。若要繼續執行安裝後程序,請參閱檢查 RaaS 組態檔。