 |
» |
|
|
 |
您可使用分散式系統管理公用程式 (Distributed Systems Administration Utilities,DSAU)
工具將檔案與命令傳送至您叢集或網路中指定的系統。DSAU 工具提供下列功能: 同步配置
(configuration synchronization) 彙整登錄 (consolidated logging)
使用同步配置功能,您便可放心叢集或網路中的系統會維持您所採用的標準。變更您的配置主控者
(master) 時,這些變更會傳送到您所有的用戶端系統上。 使用彙整登錄功能,就能夠以時間戳記的順序檢查配置中所有系統包含之項目的單一日誌,而能輕鬆地找到特定的項目。 使用命令搧出功能,可以由指定的系統將相同的命令傳送至您定義之配置中的所有系統,免除巡查檢視配置中所有系統及許多手動作業的程序。 同步配置簡介 |  |
對系統管理員而言,管理一組分散式系統的配置及配置要旨一直是項難題。目前有許多工具可協助管理各種多系統的配置管理。例如,若要進行帳號管理,標準的解決方案包括網路資訊系統
(Network Information System,NIS) 及輕量級目錄存取協定 (Lightweight
Directory Access Protocol,LDAP);若要進行檔案層級的同步化,則可利用 rdist (請參閱 rdist(1) 線上援助頁) 及 rsync 等工具。HP 的 System Insight Manager 也可協助找尋、監控及管理系統群組。 此工具組提供一個新工具,Configuration
Engine (cfengine),cfengine 是進行同步配置最普遍的開放源碼工具,可進行以規則或目標為基礎的配置管理,讓管理者得以定義套用於系統群組的管理動作,讓這些系統能達到所需的狀態。 cfengine 是以用戶端/伺服器為基礎 (主從式架構) 的工具。中央配置主控者系統或規則伺服器掌控配置規則檔案,該檔案定義在每個管制用戶端上執行的管理動作。配置主控者同時掌控「golden
影像」檔或應配送至用戶端的參照檔案複本。管理者可利用 cfengine 執行如下的作業: 複製參照檔案或目錄以確認用戶端系統使用正確的配置檔案組。 檢查檔案權限、所有權,及追蹤
checksum 變更。
同步配置精靈
(Configuration Synchronization Wizard,csync_wizard) 可協助管理者迅速配置 cfengine,以管理分散式系統組,或將其配置為 Serviceguard 叢集中的高可用性服務。 管理者可先從定義中央系統或 Serviceguard 叢集,作為主控配置伺服器或規則伺服器開始。同步配置精靈
(csync_wizard) 為進行初始配置程序的便利前端工具,此中央系統會儲存主要的規則檔案
(例如 cfagent.conf),該檔案定義所需的配置規則,以及應配送至管制用戶端的參照或主要檔案複本。 每個管制用戶端會複製中央配置伺服器中的主要規則檔案複本,並評估目前的狀態與規則檔案所定義的所需狀態,若有任何差異將隨即執行配置規則,以重新同步化用戶端。 管理者可透過推送
(push) 或拉出 (pull) 作業在管制用戶端上開始進行同步化作業。 管理者可自主控配置伺服器利用
cfrun 命令 (若需相關資訊,請參閱 cfrun(1) 線上援助頁) 推送變更。cfrun 會讀取 cfrun.hosts 檔案以判斷管制用戶端的清單,接著會在每個管制用戶端上啟動
cfagent 命令以執行同步化工作。因此,推送作業實際上是要求管制用戶端立即執行拉出作業。 拉出作業透過 cron 或 cfengine
本身類似 cron 的 cfexecd 協助程式執行,這兩種方法皆可定期啟動 cfagent 命令,以執行用戶端起始的配置同步化。管理者可定義適用於每個管制用戶端群組的時間間隔,例如每隔
5 分鐘、一小時一次或一天一次。管理者也可直接啟動 cfagent 命令以隨選執行同步化。
cfengine 部署數種協助程式與命令來執行同步配置作業。下列清單說明主要的 cfengine 元件。 cfagent - cfagent 命令為 cfengine 的骨幹或主力,在每個管制用戶端上執行,並利用 update.conf 檔案自行啟動 (bootstrap),該檔案說明從主控伺服器傳送至本機管制用戶端的檔案組。傳送的檔案包括主要規則檔案、cfagent.conf,及任何相關的規則檔案。在此 DSAU 的實做施行中,cfagent.conf 會匯入具有許多 cfengine 功能範例的 cf.main 檔案。 配置檔傳送完成後,cfagent 會評估這些檔案中的配置指示。若用戶端系統目前的配置不符合所需配置,cfagent 會執行定義的動作使用戶端符合適當狀態。 cfservd - cfservd 協助程式扮演以下兩種角色: cfservd 在主控配置伺服器上執行,為管制用戶端之檔案傳送要求的結算或清算程式。管制用戶端上的 cfagent 會聯繫主控伺服器的 cfservd,並要求主要規則檔案及任何參照檔案的複本,這些檔案是進行定義之同步配置作業不可或缺的一部分。cfservd 主控命令透過公開/私密金鑰交換機制,並可選擇性加密傳送至管制用戶端的檔案,以負責認證遠端用戶端。 cfservd 可選擇性在每個管制用戶端上執行,以處理 cfrun 要求。cfrun 讓管理者將變更推送到管制用戶端中,而不需等候用戶端利用部分用戶端定義的時間間隔進行同步化。cfrun 命令必須由主控配置伺服器起始,它會與 cfrun.hosts 檔案中列出的每個管制用戶端聯繫,並連接管制用戶端的 cfservd,要求它啟動 cfagent 以執行同步化作業。 您可分別透過 cfservd.conf 和 /sbin/init.d/cfservd 配置及啟動 cfservd。
cfexecd - cfexecd 為排程及報告工具。若管理者使用 cron 定期執行同步化作業,則 crontab 檔案中會置入 cfexecd 命令,以包含啟動 cfagent 的啟動。它會將 cfagent 執行的輸出結果儲存於輸出目錄中 (若需詳細資訊,請參閱 cfagent.conf),並可選擇性寄送電子郵件。 cfexecd 本身具備以 cfengine 時間類別為基礎、類似 cron 的功能。管理者可選擇在協助程式模式中執行 cfexed,並依據定義的間隔利用它啟動 cfagent,而不需使用 cron。預設的間隔為每小時啟動 cfagent 一次。剛開始使用 cfengine 時,利用 cron 開始進行是最簡單的方式。 cfrun - cfrun 命令會與管制用戶端聯繫,要求每個用戶端立即執行同步化作業。換句話說,它會連接至每個管制用戶端上選用的 cfservd,接著啟動 cfagent。
圖 3-1 「cfengine 綜覽」說明
cfengine 命令與協助程式之間的關係,並顯示管理者使用 cfrun 的範例。圖中的虛線代表呼叫順序 (例如 A 呼叫 B);實線表示由配置檔讀取資料。 管理者登入主控配置同步伺服器,並使用 cfrun 命令將變更傳遞至管制用戶端。 cfrun 會檢查 cfrun.hosts 檔案以查看管制用戶端清單。請注意,主控伺服器本身可為用戶端。圖中共有兩個用戶端,即主控伺服器與遠端用戶端。 cfrun 會與每個管制用戶端上的 cfservd 聯繫,並接著啟動 cfagent。 cfagent 會先檢查主控伺服器是否有 update.conf 檔案的更新複本,然後視需要將其傳送至用戶端。 若獨立式系統為主控伺服器,則 update.conf 主要檔案複本預設將位於 /var/opt/dsau/cfengine_master/inputs/ 中。其他配置檔的主要複本 (例如 cfagent.conf、cfservd.conf 及 cfrun.hosts) 也位於此處。若主控伺服器為 Serviceguard 叢集,則主要配置檔位於與套件相關的裝載點中。例如,若此裝載點的名稱為 csync,其路徑將為 /csync/dsau/cfengine_master/inputs。 將配置檔複製到本機系統時,cfagent 會將其置於獨立式系統及叢集的 /var/opt/dsau/cfengine/inputs 中。cfagent 會先評估 update.conf 的內容,以更新任何變更的 cfengine 二進位檔 (若有的話),並取得最新版本的規則檔案 (cfagent.conf) 與相關檔案。 cfagent 接著會評估 cfagent.conf,以判斷用戶端是否處於所需狀態。若有差距,cfagent 會執行定義的動作以修正用戶端的配置。
cfengine 主控伺服器可為分散用戶端的一個獨立式的 HP-UX 系統以用來服務此一群組,而用戶端本身可為獨立式系統或
Serviceguard 叢集的成員。若已使用 Systems Insight Manager 中心管理伺服器,則此伺服器是作為 cfengine 主控伺服器最理想的系統。主控伺服器也可作為用戶端,並可在這些系統與遠端用戶端上執行同步配置作業。 若管理 Serviceguard 叢集,可嚴密部署 cfengine 以用於叢集內部來同步化單一叢集的成員。在此配置中,cfservd 配置為高可用性套件,但唯一的 cfengine 用戶端為叢集成員本身。套件的 DNS 名稱/IP 位址為 cfengine 主控伺服器的名稱。 除了提供同步配置作為叢集內部的服務外,另一種 Serviceguard
配置則讓叢集為遠端用戶端系統群組提供高可用性的同步配置服務。上述用戶端可為獨立式系統或
Serviceguard 叢集。提供 cfengine 服務的叢集可為用戶端本身,亦可使用 cfengine 的同步配置功能。 另一種可行但較不常見的配置是讓 Serviceguard
叢集中固定數目的成員作為主控伺服器,但不配置任何套件,因此 cfservd 將無法達到高可用性。此種配置雖然有效但不建議這樣做。 配置 cfengine |  |
下列各節將提供設定同步配置主控伺服器及其用戶端的詳細說明,最快速的方法是使用以下說明的同步配置精靈
(csync_wizard),同時亦說明完全手動的配置方法。 csync_wizard (請參閱 csync_wizard(1)) 可自動化同步配置主控伺服器及其管制用戶端的設定作業,支援設定獨立式系統或
Serviceguard 叢集作為主控伺服器。精靈會配置所有管制用戶端以執行 cfservd,使主控伺服器可使用 cfrun (請參閱 cfrun(8))。 若需詳細資訊,請參閱適用的章節。 若要配置獨立式系統作為同步伺服器,請在欲配置為主控同步伺服器的獨立式系統上執行 csync_wizard(1): # /opt/dsau/sbin/csync_wizard 精靈會顯示以下介紹畫面:  |
Querying the system <local hostname> for current status, one moment... This Configuration Synchronization Wizard helps you set up the Configuration Engine (cfengine) environment. Cfengine is a powerful tool for performing policy-based management for groups of systems and cluster environments. It is a client/server based utility. A standalone system or Serviceguard cluster can be configured as the cfengine 'master'. The master contains the configuration description and configuration files that will be used by all the clients. Clients copy the configuration description from the master and apply it to themselves. The configuration description supports a rich set of management actions such as copying configuration files from the master to the client, performing edits to files, checking file ownerships, permissions, and checksums, executing shell commands, checking for processes, etc. For a detailed description of the cfengine management actions, please refer to cfengine man page. This wizard will help you set up this system as a cfengine master or to add or remove a cfengine client, and to perform the required security setup. Press 'Return' to continue...
|
 |
請按下 return 繼續,並選取下列功能表的第一個選項以配置主控伺服器: Configuration Synchronization Wizard Menu ========================================= (1) Set up a cfengine master server (2) Add a client (3) Remove a client (4) Key management for cfengine users (9) Exit Enter choice: 1 The cfengine master server is being configured on: <local hostname>
|
精靈接著會詢問您是否在配置伺服器後立即另外配置管制用戶端。此例中請回答否,管制用戶端將於稍後新增。 You can optionally specify additional remote clients to manage at this time. If you are running in an HA environment, you do not need to specify the cluster members. Would you like to manage clients?[N]:n |
精靈會繼續將系統配置為主控伺服器: ******* WARNING!!!! ******** To protect against possible corruption of sensitive configuration files, control-c has been disabled for the remainder of this configuration. Configuration of the cfengine master server is starting. Verifying the master has an entry in the /etc/hosts file on each client... Keys are being created... Keys have been created, now distributing.... Starting cfengine on the master and any pertinent client machines. This may take a few minutes.... |
配置完成後,精靈會顯示下列摘要畫面,引導管理者至主要規則檔案 (/var/opt/dsau/cfengine_master/inputs/cf.main) 及此次精靈執行的記錄回應檔案。 The Configuration Synchronization Wizard has completed the configuration of cfengine: - The master configuration description template is here: </var/opt/dsau/cfengine_master/inputs/cf.main> This default template has examples of typical configuration synchronization actions performed in cfengine.For example, synchronizing critical files such as /etc/hosts, package scripts, etc. All the actions in the template are disabled by default (commented out). Uncomment the lines corresponding to the desired synchronization actions for this configuration. See the cfengine reference documentation for a description of additional cfengine features:/opt/dsau/doc/cfengine/ Press 'Return' to continue... The cfengine environment has been created with Master Host: <local hostname> and members:
|
請注意,在伺服器配置過程中,若配置主控伺服器卻未新增任何管制用戶端,則成員
(管制用戶端清單) 將如上列範例所示保持空白。 A file recording the answers for this run of the Configuration Synchronization Wizard is stored here... /var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt This configuration can be reestablished by issuing the command: /opt/dsau/sbin/csync_wizard \ -f /var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt |
利用精靈配置 Serviceguard 叢集同步伺服器配置 Serviceguard 叢集作為同步伺服器的方式有兩種: 建立 Serviceguard
套件提供配置服務以確保高可用性。 將叢集的單一成員視為獨立式系統進行配置。同步配置服務將無法達到高可用性,且此配置也無法與本節討論的
Serviceguard 自動化功能一同正常運作,因此不建議使用此種方式。
本節主要說明如何使用精靈配置高可用性同步配置服務。  |  |  |  |  | 附註: 請確認此叢集的 MAX_CONFIGURED_PACKAGES 值可容納額外的套件。若需此設定的相關資訊,請參閱隨附於
Serviceguard 文件組的《《管理 Serviceguard 》》手冊。此外,在啟動精靈前,應啟動並執行叢集中所有目前的成員。 |  |  |  |  |
先從執行 csync_wizard(1) 同步配置精靈開始: # /opt/dsau/sbin/csync_wizard |
 |
 |
Querying the system <local hostname> for current status, one moment... This Configuration Synchronization Wizard helps you set up the Configuration Engine (cfengine) environment. Cfengine is a powerful tool for performing policy-based management for groups of systems and cluster environments. It is a client/server based utility. A standalone system or Serviceguard cluster can be configured as the cfengine 'master'. The master contains the configuration description and configuration files that will be used by all the clients. Clients copy the configuration description from the master and apply it to themselves. The configuration description supports a rich set of management actions such as copying configuration files from the master to the client, performing edits to files, checking file ownerships, permissions, and checksums, executing shell commands, checking for processes, etc. For a detailed description of the cfengine management actions, please refer to cfengine man page. This wizard will help you set up this system as a cfengine master or to add or remove a cfengine client, and to perform the required security setup. Press 'Return' to continue...
|
 |
請按下 return 繼續,並選取下列功能表的第一個選項以配置主控伺服器: Configuration Synchronization Wizard Menu ========================================= (1) Set up a cfengine master server (2) Add a client (3) Remove a client (4) Key management for cfengine users (9) Exit Enter choice: 1
|
選取選項 1 並按下 return 後,精靈會顯示下列文字: This system is a member of a Serviceguard cluster. The cfengine configuration will be defined as a package for high availability unless you answer no to the below question. If you answer no, for the purposes of cfengine control, this machine will be treated as a single machine without failover capability for cfengine. If you accept the default answer of 'HA' to the below question, cfengine will be configured as a highly available Serviceguard package. This will ensure that your cfengine master server is available as long as one of the cluster members that can run the package is also available. You will need a free IP address for this package and you need to configure storage for the package before proceeding. For details on creating highly available file systems, please refer to 'Creating a Storage Infrastructure' chapters of the Managing Serviceguard documentation. Will this master server be Highly Available (HA) [Y]:
|
 |
精靈會將套件名稱命名為「csync」以進行同步配置,此特定的套件名稱為必要項目。繼續進行或執行精靈之前必須先設定套件的
LVM 儲存設備配置及網路配置,且所有叢集成員均應處於啟動及可用狀態。若需詳細資訊,請參閱《《管理 Serviceguard》》一書的「建構
HA 叢集配置」、「以 LVM 建立儲存設備基本架構」。  |  |  |  |  | 附註: 精靈僅支援建立以 LVM 容體群組為基礎的套件,使用 CFS
或 VxVM 時,必須進行手動配置。若需手動配置 csync 套件的詳細資訊,請參閱手動配置 Serviceguard 叢集一節。 |  |  |  |  |
精靈將提示設定下列項目,所有提示項目均應已完成配置: 容體群組中的邏輯群組 (例如
/dev/vgcsync/lvol1) 檔案系統的裝載選項 (例如
-o rw,largefiles)。在服務套件控制命令集的
FS_MOUNT_OPT[0] 欄位中逐一使用裝載選項。請注意,裝載選項必須與您在邏輯容體上建立的檔案系統一致。例如,若利用大型檔案支援功能建立檔案系統,則應指定大型檔案裝載選項。 套件 IP 位址。此 IP 位址同時應為註冊的
DNS 名稱,以方便在用戶端系統上進行同步配置。 套件的子網路。請使用 netstat -i 判斷適當的子網路。
配置儲存設備基本架構並取得 IP 位址後,請按下 return 存取預設的答案「yes」並繼續建立套件。此時精靈會出現下列套件資訊的提示: Configuring the csync Serviceguard package for a highly available cfengine master. The cfengine master server is being configured as a HA Serviceguard Package on this cluster. Please provide the following information for the package: Enter the Volume group?[]: vgcsync You need to enter a fully qualified Logical Volume, for example: /dev/vgname/lvol1 Enter the fully qualified Logical Volume?[]: /dev/vgcsync/lvol1 Enter the Filesystem (Mount Point)?[]: /csync Enter the Mount Options?[-o rw,largefiles]:<return> Enter the Filesystem Type?[vxfs]:<return> Enter the IP address? []: 12.345.6.78 Enter the Subnet? []: 12.345.7.8 |
此時精靈會詢問您是否管理額外的遠端用戶端,亦即叢集外的系統。精靈會自動配置目前的叢集成員,這也是執行精靈時所有成員均需處於啟動及可用狀態的原因。在下列範例中,管理者選擇回答「no」,因此一開始只有叢集成員會配置為用戶端。 請注意,您稍後可利用精靈輕鬆地新增額外的遠端用戶端。新增額外的叢集成員時,不一定要透過精靈才能新增新的用戶端。若需詳細資訊,請參閱 Serviceguard
自動化功能一節。 You can optionally specify additional remote clients to manage at this time. If you are running in an HA environment, you do not need to specify the cluster members. Would you like to manage clients?[N]: <return> |
此時精靈已取得所有配置叢集及繼續進行所需的資料: ******* WARNING!!!! ******** To protect against possible corruption of sensitive configuration files, control-c has been disabled for the remainder of this configuration. Configuring the 'csync' Serviceguard package. Applying the 'csync' Serviceguard package configuration file, this will take a moment. Starting the 'csync' Serviceguard package, this will take a few moments... The 'csync' Serviceguard package has been started on <local hostname>. Configuration of the cfengine master server is starting. Verifying the master has an entry in the /etc/hosts file on each client... Keys are being created... Keys have been created, now distributing.... Starting cfengine on the master and any pertinent client machines. This may take a few minutes.... |
配置完成後,精靈會顯示下列摘要畫面,引導管理者至主要規則檔案
(裝載_點/cfengine_master/inputs/cf.main) 及此次精靈執行的記錄回應檔案。請注意,規則檔案位於與套件相關的新配置檔案系統中。在我們的範例中,管理者選擇將套件檔案系統裝載為 /csync。若管理者先前曾配置 cfengine,則覆寫任何現有的配置檔前,精靈會在下列目錄中建立備份: /var/opt/dsau/cfengine/backups |
此目錄中最上層的檔案是最新的備份檔案,之前的任何配置皆儲存於名為 v_時間戳記的時間戳記子目錄中。  |
The Configuration Synchronization Wizard has completed the configuration of cfengine: - The master configuration description template is here: </csync/dsau/cfengine_master/inputs/cf.main> This default template has examples of typical configuration synchronization actions performed in a cluster. For example, synchronizing critical files such as /etc/hosts, package scripts, etc. All the actions in the template are disabled by default (commented out). Uncomment the lines corresponding to the desired synchronization actions for this cluster. See the cfengine reference documentation for a description of additional cfengine features:/opt/dsau/doc/cfengine/ Press 'Return' to continue... The cfengine environment has been created with Master Host: <package hostname> and members: <cluster member1>, <cluster member2>, ... A file recording the answers for this run of the Configuration Synchronization Wizard is stored here... /var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt This configuration can be reestablished by issuing the command: /opt/dsau/sbin/csync_wizard \ -f /var/opt/dsau/cfengine/tmpdir/csync_wizard_input.txt
|
 |
本節說明在 Serviceguard 叢集中進行高可用性 cfengine 配置的詳細資訊。若需各種 cfengine 協助程式及命令角色的相關資訊,請參閱「cfengine 協助程式與命令」。Serviceguard 套件可確保 cfengine 的 cfservd 協助程式維持高可用性,而 cfengine 配置檔 update.conf 及 cfagent.conf 會將主控同步配置伺服器定義為套件可重定位 IP 位址的註冊 DNS
名稱。當管制用戶端執行 cfagent (請參閱 cfagent(8)) 時,cfagent 會連接套件承接 (adoptive) 節點上的 cfservd,因此叢集成員本身皆為管制用戶端。主控套件的成員也可另外作為規則檔案的主控伺服器。 叢集開機時,每個成員都會啟動用戶端的 cfservd,此為回應 cfrun 要求的 cfservd。在成員上啟動套件時,此時 cfservd 可存取套件的檔案系統,並成為為所有管制用戶端提供規則檔案的主控 cfservd 命令。套件會監控此 cfservd。若 cfservd 失效,則套件會試圖在其他成員上重新啟動,該成員的 cfservd 會隨之成為主控 cfservd 命令。 請注意,由於預期此協助程式仍將回應日後出現的 cfrun 要求,因此中止套件並不會停止在承接成員上的 cfservd 協助程式。此外,不同於部份其他 HA 服務,若 csync 套件關閉或無法使用,遠端用戶端也不會受到影響。用戶端將持續以目前定義的配置執行。管理者需確認是否已啟動並執行套件,以便將任何新的配置指示配送至管制用戶端。 精靈會自動將 cfengine 金鑰配送至所有叢集成員。若需執行金鑰配送的詳細說明,請參閱「安全性需知」。 分散式系統管理公用程式需搭配 Serviceguard 11.17 版或更新版。利用
Serviceguard 11.17 版或更新版,自叢集新增或刪除成員時,同步配置工具會自動執行適當的配置動作,意即: 新增叢集成員時,會自動配置新的成員以參與同步配置。新增的成員會自動進行下列配置動作: 變更
etc/rc.config.d/cfservd,將 CSYNC_CONFIGURED 設為 1 為新成員建立適當的 cfengine 公開/私密金鑰,並將金鑰置於成員的 /var/opt/dsau/cfengine/ppkeys 目錄中。同時此成員的新金鑰也會配送至其他叢集成員的
/var/opt/dsau/cfengine/ppkeys 目錄中。 寫入新成員的 /var/opt/dsau/cfengine/inputs 目錄。 在新成員上啟動 cfservd。 將套件檔案複製到新成員的
/etc/cmcluster/csync/ 中。 在主控者上執行 cfagent 同步化作業,以寫入主控者的 /var/opt/dsau/cfengine/inputs 目錄。 在遠端用戶端上執行 cfagent 同步化作業。
自叢集中刪除成員時,隨即從整個叢集的 /var/opt/dsau/cfengine/ppkeys 目錄刪除已刪除成員的公開金鑰。
請注意,管理者可定義 cfengine 群組或類別,該群組或類別會列舉特定 Serviceguard 叢集的所有成員。這些類別定義不會自動更新,管理者必須手動更新 cfagent.conf 及相關檔案以變更叢集成員。 您可利用同步配置精靈,在現有的
cfengine 配置中新增管制用戶端。請在主控伺服器上執行配置精靈,不要在用戶端系統上執行。若 Serviceguard
叢集為主控伺服器,請在 csync 套件的承接節點上執行配置精靈。請注意,在「高可用性」設定中將新成員新增為用戶端的作業會自動完成。若需相關資訊,請參閱「Serviceguard 自動化功能」。 此外,為安全配送 cfengine 金鑰,必須經由主控伺服器的 root 帳號將用戶端配置為非互動式 ssh 存取。csshsetup 工具 (請參閱 csshsetup(1)) 可輕鬆配置 ssh 存取遠端系統。下列範例使用該工具。 精靈目前僅能管理位於相同的 DNS 網域之用戶端與主控伺服器。若為多網域配置的手動新增用戶端說明,請參閱「手動配置」。 請注意,若將 Serviceguard 叢集新增為管制用戶端,則必須個別新增每個叢集成員。 首先在主控伺服器上以 root 身份登入,並配置 ssh 存取遠端系統: # csshsetup <管制用戶端的主機名稱> csshsetup 會先測試 ssh 存取遠端系統,若發現尚未配置,ssh 會提示您輸入管制用戶端的密碼。 執行同步配置精靈並選取第 2 個選項以新增用戶端: Configuration Synchronization Wizard Menu ========================================= (1) Set up a cfengine master server (2) Add a client (3) Remove a client (4) Key management for cfengine users (9) Exit Enter choice: 2
|
出現提示畫面時,請輸入欲新增的用戶端名稱: This option will configure additional clients to the cfengine domain. Enter the name of the client to add: <new client>
|
配置精靈將繼續配置用戶端並報告進度: Verifying the master has an entry in the /etc/hosts file on each client... Keys are being created... Keys have been created, now distributing.... The client <new client> has been added to the cfengine domain
|
配置精靈會配置每個新的用戶端執行 cfservd,以便回應 cfrun 要求,並將用戶端新增至主控者的 cfrun.hosts 檔案中。 下列各節將說明手動配置 cfengine 主控同步配置伺服器或管制用戶端所需的步驟。請注意,使用 csync_wizard (請參閱 csync_wizard(1m)) 接著修改產生的配置通常會比從頭開始來得容易。在
Serviceguard 叢集中尤其如此,因為精靈會協助設定套件並負責將正確的配置檔傳遞至所有叢集成員。 執行手動配置時,可能會建立 csync_wizard 後續無法管理的配置。例如,精靈僅支援單一 DNS 網域配置。手動配置多網域時,便無法利用精靈新增及移除用戶端。  |  |  |  |  | 附註: 您可利用 csshsetup 配置主控伺服器與管制用戶端之間的信任關係,以便使用命令搧出命令,如 cexec 及 ccp (請參閱 cexec(1) 及 ccp(1))。需將檔案配送至管制用戶端時,利用這些命令可簡化如下的配置步驟。 |  |  |  |  |
請執行下列一次性步驟,將獨立式系統配置為 cfengine 主控伺服器: 先從建立 cfengine 的主要配置檔複本開始。這些檔案位於眾所皆知的目錄中,並配送至每個管制用戶端。預設的目錄是 /var/opt/dsau/cfengine_master/inputs,於預設的範本中參照。先建立目錄: # mkdir -p /var/opt/dsau/cfengine_master/inputs 將預設的範本檔案複製到下列目錄中: # cd /var/opt/dsau/cfengine_master/inputs # cp /opt/dsau/share/cfengine/templates/cf.main.template cf.main # cp /opt/dsau/share/cfengine/templates/update.conf.template update.conf # cp /opt/dsau/share/cfengine/templates/cfagent.conf.template cfagent.conf # cp /opt/dsau/share/cfengine/templates/cfrun.hosts.template cfrun.hosts # cp /opt/dsau/share/cfengine/templates/cfservd.conf.template cfservd.conf
|
接著編輯 update.conf。此檔案的格式與 cfengine 的主要配置檔 cfagent.conf 類似,用來更新 cfengine 二進位檔及任何已更新的配置定義檔案 (例如 cfagent.conf),並傳送至管制用戶端中。讓此檔案保持極簡格式並避免錯誤相當重要。檔案若有錯誤,需手動將新版檔案複製到每個管制用戶端。 檔案中包含 <%token 名稱%> 形式的 token,由 csync_wizard 依使用者回答問題的答案所取代。請如下取代 token: 以無條件 (限制)
的主控伺服器主機名稱取代 <%HOST_NAMER%>。 以主控伺服器的網域名稱取代 <%DOMAIN_NAMER%>。例如: host_name = ( 「master-server-name」 ) domain_name = ( 「abc.xyz.com」 ) |
請注意,此 update.conf 範本假定主控伺服器及其用戶端皆位於單一 DNS 網域中。您的主控伺服器若在多個
DNS 網域中擁有管制用戶端,請如下變更 update.conf: 以完全合格的主控伺服器主機名稱取代
<%HOST_NAMER%>。 刪除 <domain_name> 變數。 以下行取代「domain = ( "${domain_name}" )」一行: domain = ( ExecResult(/sbin/awk '/domain/ {print $2}' /etc/resolv.conf) ) |
如此便可在用戶端上正確設定網域變數。請注意,此方法假定已在每個管制用戶端上正確配置 /etc/resolve.conf。 同時也必須在 cf.main 及 cfservd.conf 中執行相同的網域編輯。請參閱接續步驟。利用 cfagent -p (或 --parse-only) 旗標驗證 update.conf 的語法。
將主要的 update.conf 配送至每個管制用戶端。若需此步驟的說明,請參閱「配置同步管制用戶端」。 建立主控伺服器的安全性金鑰。cfengine 使用公開/私密金鑰交換以認證遠端用戶端。公開/私密金鑰組在主控伺服器及所有管制用戶端上產生。每個管制用端的公開金鑰會複製到主控伺服器上,再由主控伺服器複製到管制用戶端中。利用如安全複製工具
(請參閱 scp(1))、磁帶或光碟安全地交換金鑰非常重要。首先先產生主控伺服器的金鑰: # /opt/dsau/sbin/cfkey # cd /var/opt/cfengine/ppkeys
隨即建立 localhost.pub 及 localhost.priv 檔案。 將公開金鑰複製到 root-主控伺服器 IP 位址.pub。例如,假設此系統的 IP 位址為 10.0.0.5,請使用下列命令: # cp localhost.pub root-10.0.0.5.pub
若需將用戶端金鑰複製到主控伺服器的詳細資訊,請參閱「配置同步管制用戶端」。 在主控伺服器上配置 cfservd 協助程式,以便在系統啟動時隨之啟動。編輯 /etc/rc.config.d/cfservd 並將 CSYNC_CONFIGURED=0 一行變更為 CSYNC_CONFIGURED=1。若希望使用 cfrun 將變更推送至管制用戶端,可選擇性地將此變更複製到所有管制用戶端。 cfrun 要求將管制用戶端列在 cfrun.hosts 檔案中。在預設配置中,此檔案位於 /var/opt/dsau/cfengine_master/inputs。請編輯該檔案並新增每個管制用戶端的主機名稱 (一行一個)。確認所有的主機名稱都完全合格是最簡單的方式。使用完全合格的主機名稱時,不需要
「domain =」一行且可加以刪除。若使用無條件 (無條件)
的主機名稱,請找出「domain = <%DOMAIN_NAMER%>」一行,並以用戶端系統的 DNS 網域取代 token,限制所有用戶端皆為該單一網域的成員。 /var/opt/dsau/cfengine_master/inputs/cfagent.conf 檔為主要規則檔案。預設的 cfagent.conf 包括預設範本 cf.main,該範本為說明的範本檔案,提供獨立式系統與 Serviceguard
叢集其前面加上 # 鈔恭峔靻雃赤`釋的同步化動作的範例。cf.main 包含與 update.conf 相同的 <%HOST_NAMER%> 及<%DOMAIN_NAMER%> token。請依上述步驟 3 的說明執行相同的編輯作業。 請注意,此預設 cf.main 檔案不會執行任何管理動作,所有動作行皆已被取消 (comment
out,即前面加上 # 字號)。此為建立管制用戶端之自訂 cfengine 規則與動作組的起始點。說明此檔案定義之語法及所有管理動作的 cfengine 參考手冊位於 /opt/dsau/doc/cfengine 中,其他包含在開放源碼 cfengine 配送的範例 cfengine 配置檔則位於 /opt/dsau/share/cfengine/examples 中。 /var/opt/dsau/cfengine_master/inputs/cfservd.conf 檔案可控制哪些管制用戶端能存取主控者上 cfservd 所提供的檔案。請執行下列 cfservd.conf 檔案編輯。 刪除下行: domain_name = ( "<%DOMAIN_NAMER%>" ) 將此行 domain = ( "${domain_name}" ) 變更為下行: domain = ( ExecResult(/sbin/awk '/domain/ {print $2}' /etc/resolve.conf) ) 「admit:」一段控制哪些遠端用戶端可存取伺服器上的檔案。將每段「*.${domain_name}」變更為以空格隔開的管制用戶端 DNS 網域清單。例如: /var/opt/dsau/cfengine_master/master_files *.abc.xyz.com *.cde.xyz.com
在主控伺服器上啟動 cfservd: # /sbin/init.d/cfservd start 針對每個管制用戶端重複進行上述步驟。 執行下列步驟以測試配置: 在管制用戶端上使用下列命令: # cfagent --no-lock --verbose --no-splay 冗長輸出會顯示用戶端檢查更新的主要規則檔案複本,視需要將檔案複製到 /var/opt/cfengine/inputs,然後執行 cfagent.conf/cf.main 的內容。 在主控伺服器上測試 cfrun 命令: # cfrun -- --inform --inform 語法指示遠端 cfagent 使用 --inform 旗標,該旗標會針對 cfengine 在系統上執行的所有變更產生訊息。若需相關資訊,--verbose 也可提供協助: # cfrun -v -- --verbose -v 指示 cfrun 本身應更為冗長,並將 --verbose 傳遞至遠端 cfagent。
若需疑難排解的相關資訊,請參閱「cfengine 疑難排解」。
手動配置 Serviceguard 叢集同步伺服器在 Serviceguard 叢集中配置高可用性 cfengine 與「利用精靈配置獨立式同步伺服器」一節說明的配置獨立式機器類似,主要差異在於建立
Serviceguard 套件及配送 cfengine 安全性金鑰的機制。請遵循下列說明的步驟。 Serviceguard 套件初始準備 首先先取得套件的
IP 位址。此位址通常會於 DNS 中註冊以簡化遠端用戶端的管理。若 cfengine 僅用於叢集內部,只要確定位址已新增至每個成員的 /etc/hosts 檔案即可。 接著建立新套件所需的儲存設備基本架構。執行上述動作的說明記載於《《管理 Serviceguard》》一書的「建構
HA 叢集配置」、「以 LVM 建立儲存設備基礎架構」。例如,若使用
LVM 儲存設備基本架構,將包括下列步驟: 建立 LVM 容體群組 (volume group,VG) 及邏輯容體
(logical volume,LV,例如 /dev/vgcsync/lvol1)。 以整個叢集為範圍匯出/匯入
VG。 在 LV 上設定檔案系統。 以整個叢集為範圍建立檔案系統的裝載點
(例如 /csync)。
預設範本假定您使用以 LVM 為基礎的儲存設備。若要使用 VxVM 或其他全叢集的儲存設備及檔案系統,請依下列說明適當變更套件範本。 確認套件的檔案系統已裝載於目前的成員上。例如,若使用
LVM,請執行下列命令: # vgchange -a e /dev/vgcsync # mount -o rw,largefiles /dev/vgcsync/lvol1 /csync
自訂起始規則檔案 建立主要規則檔案及參照檔案的子目錄。例如: # mkdir -p /csync/dsau/cfengine_master/master_files 這些範例目錄即為 csync_wizard 所使用的目錄。 將預設範本複製到主要 input 目錄中: # cd /csync/dsau/cfengine_master/inputs # cp /opt/dsau/share/cfengine/templates/update.conf.template update.conf # cp /opt/dsau/share/cfengine/templates/cfagent.conf.template cfagent.conf # cp /opt/dsau/share/cfengine/templates/cfrun.hosts.template cfrun.hosts # cp /opt/dsau/share/cfengine/templates/cfservd.conf.template cfservd.conf
|
編輯 update.conf。此檔案的格式與 cfengine 的主要配置檔 cfagent.conf 類似,用來更新 cfengine 二進位檔及任何已更新的配置定義檔案 (例如 cfagent.conf),並傳送至管制用戶端中。讓此檔案保持極簡格式並避免錯誤相當重要。檔案若有錯誤,需手動將新版檔案複製到每個管制用戶端。 檔案中包含 <%token 名稱%> 形式的 token,由 csync_wizard 依使用者回答問題的答案所取代。請如下取代 token: 以無條件 (限制) 的 Serviceguard
套件主機名稱取代 <%HOST_NAMER%>。 以套件的 DNS 網域名稱取代 <%DOMAIN_NAMER%>C�酥G host_name = ( 「package-hostname」) domain_name = ( 「abc.xyz.com」) |
請注意,此 update.conf 範本假定主控伺服器及其用戶端皆位於單一 DNS 網域中。您的主控伺服器若在多個
DNS 網域中擁有管制用戶端,請如下變更 update.conf:以完全合格的
Serviceguard 套件主機名稱取代 <%HOST_NAMER%>。 以下行取代 domain = ( "${domain_name}" ) 一行: domain = ( ExecResult(/sbin/awk '/domain/ {print $2}' /etc/resolv.conf) ) |
如此便可在用戶端上正確設定網域變數。
同時也必須在 cf.main 中執行相同的網域編輯。請參閱下文。利用 cfagent 的 -p (--parse-only) 旗標驗證 update.conf 的語法。
將管制用戶端列於 cfrun.hosts 中 cfrun 要求將所有管制用戶端列在 cfrun.hosts 檔案中。由於每個叢集成員皆視為用戶端,因此請確認每個成員都列於 /csync/dsau/cfengine_master/inputs/cfrun.hosts 中。 請編輯該檔案並新增每個成員的主機名稱 (一行一個)。確認所有的主機名稱都完全合格是最簡單的方式。使用完全合格的主機名稱時,不需要「domain =」一行且可加以刪除。若使用無條件 (限制) 的主機名稱,請找出「domain = <%DOMAIN_NAMER%>」一行,並以叢集成員的 DNS 網域取代 token,限制所有用戶端皆為該單一網域的成員。 編輯主要規則檔案 /var/opt/dsau/cfengine_master/inputs/cfagent.conf 檔為主要規則檔案。預設的 cfagent.conf 包括預設範本 cf.main,該範本為說明的範本檔案,提供獨立式系統與 Serviceguard
叢集其前面加上 # 字號使用其變成注釋的同步化動作的範例。編輯 cf.main 以取代下列 token:cf.main 包含與 update.conf 相同的 <%HOST_NAMER%> 及 <%DOMAIN_NAMER%> token。請依上述「自訂起始規則檔案」一點第 3 項的說明執行相同的編輯作業。 請注意,此預設範本不會執行任何管理動作,所有動作行皆已被取消 (comment
out,即前面加上 # 字號)。範本中確實包含許多在 Serviceguard 叢集中同步化檔案所特有的範例,此為建立叢集及其他管制用戶端之自訂 cfengine 規則與動作組的起始點。 說明此檔案定義之語法及所有可能管理動作的 cfengine 參考手冊位於 /opt/dsau/doc/cfengine/ 中。 其他包含在開放源碼 cfengine 配送的範例 cfengine 配置檔則位於 /opt/dsau/share/cfengine/examples 中。 編輯 cfservd.conf 檔案 /var/opt/dsau/cfengine_master/inputs/cfservd.conf 檔案可控制哪些管制用戶端能存取主控者上 cfservd 所提供的檔案。請執行下列 cfservd.conf 檔案編輯。 刪除下行: domain_name = ( "<%DOMAIN_NAMER%>") 將此行 domain = ( "{domain_name}") 變更為下行: domain = ( ExecResult(/sbin/awk '/domain/ {print $2}' /etc/resolve.conf) ) 「admit:」一段控制哪些遠端用戶端可存取伺服器上的檔案。將每段「*.${domain_name}」變更為以空格隔開的管制用戶端 DNS 網域清單。例如: /var/opt/dsau/cfengine_master/master_files *.abc.xyz.com *.cde.xyz.com
將主要的 update.conf 配送至每個叢集成員 請使用下列命令: # cd /var/opt/dsau/cfengine/master_files/inputs # ccp update.conf /var/opt/dsau/cfengine/inputs/ cfengine 本身會負責將剩餘的檔案配送至整個叢集及所有管制用戶端。 配送 cfengine 安全性金鑰 由於 cfengine 利用公開/私密金鑰交換模型驗證管制用戶端的身份,因此必須配置一個與套件可重定位
IP 位址相關的金鑰,該位址即為遠端用戶端視為主控伺服器的位址。由於任何叢集成員都可成為承接節點,因此所有叢集成員必須擁有相同的金鑰。cfengine 的 cfkey 會為目前的系統產生一組公開/私密金鑰。cfkey 會建立 localhost.priv 及 localhost.pub 檔案。 cfengine 預期金鑰將依下列方式命名: 使用者名稱-IP 位址.pub 例如: root-10.0.0.3.pub 管理者可根據系統的 IP 位址將 localhost.pub 金鑰複製成正確名稱。以叢集為例,可透過下列步驟利用目前成員的金鑰產生整個叢集的金鑰: 利用 cfkey 建立此叢集成員的公開及私密金鑰組: # mkdir -p /var/opt/dsau/cfengine/ppkeys # cd /var/opt/dsau/cfengine/ppkeys # /opt/dsau/sbin/cfkey |
此步驟會建立名為 localhost.priv 與 localhost.pub 的金鑰。 接著將公開金鑰 localhost.pub 複製到 root-套件 IP 位址.pub。例如, # cp localhost.pub root-10.116.9.74.pub |
其中 10.116.9.74 為 csync 套件的可重定位
IP 位址。 然後利用此成員的 localhost.pub 為每個成員建立其特定金鑰: # cp localhost.pub root-<member1 IP address>.pub # cp localhost.pub root-<member2 IP address>.pub # cp localhost.pub root-<member3 IP address>.pub ... # cp localhost.pub root-<memberN IP address>.pub |
最後,所有金鑰皆複製到每個成員中。 # ccp * /var/opt/dsau/cfengine/ppkeys |
附註:ccp 為命令搧出命令,會執行叢集複製,將命令複製到所有叢集成員。
配置並啟動 cfservd 配置 cfservd 協助程式,以便在系統啟動時隨之啟動。編輯 /etc/rc.config.d/cfservd 並將 CSYNC_CONFIGURED=0 一行變更為 CSYNC_CONFIGURED=1。 將此變更傳遞至整個叢集: # ccp /etc/rc.config.d/cfservd /etc/rc.config.d/cfservd |
在主控伺服器上啟動 cfservd: # /sbin/init.d/cfservd start |
針對其他叢集成員重複上述步驟。若已將叢集配置為使用
DSAU 命令搧出工具,請使用下列命令在整個叢集上啟動協助程式: # cexec /sbin/init.d/cfservd start |
建立 csync 套件 欲建立同步配置套件,請根據您的 Serviceguard 環境修改預設的套件範本檔案。請注意,需將套件命名為 csync,否則
Serviceguard 自動化作業會失敗。若需相關資訊,請參閱「Serviceguard 自動化功能」一節。 先進行下列說明的變更。 在整個叢集上建立套件目錄: # cexec mkdir /etc/cmcluster/csync |
將範本套件 ASCII 檔案及套件控制命令集複製到目前成員的 /etc/cmcluster/cysnc 目錄中: # cd /etc/cmcluster/csync # cp /opt/dsau/share/serviceguard/templates/csync.conf.template csync.conf # cp /dsau/share/serviceguard/templates/csync.script.template csync # chmod +x csync |
編輯 csync.conf 套件 ASCII 配置檔,將補位數字 (placeholder) token 取代為適當值。token
的形式為 <%token 名稱%>。找出「SUBNET <%SG_PKG_SUBNET%>」一行並以 csync 套件的子網路取代
token。請使用 netstat -i 協助識別子網路。 編輯套件控制命令集並以適當值取代補位數字 token。 附註:預設命令集範本假定您使用以 LVM 為基礎的儲存設備配置。若使用
VxVM 和 (或) CFS 且需利用上述技術配置套件的相關資訊,請參閱《《管理 Serviceguard 》》文件。您必須取消下列說明範本中的 LVM
部份,並以適當的 VxVM 或 CFS 一段替代。 找出「VG[0]="<%SG_PKG_VOL_GRP%>"」一行並以套件的 LVM 容體群組名稱取代 token。例如
VG[0]"vgcsync"。 找出「LV[0]="<%SG_PKG_LOG_VOL%>"」一行並以完整的邏輯容體名稱取代 token。例如
LV[0]="/dev/vgcsync/lvol1"。 找出「FS[0]="<%SG_PKG_FS%>"」一行並以此套件建立的檔案系統裝載點名稱取代
token。例如 FS[0]="/csync"。 請注意,上述說明的儲存設備配置應已在每個叢集成員上建立此裝載點。 找出「FS_MOUNT_OPT[0]="<%SG_PKG_MNT_OPT%>"」一行並以檔案系統的裝載選項取代 token。例如
FS_MOUNT_OPT[0]="-o rw,largefiles"。 找出「FS_TYPE[0]="<%SG_PKG_FS_TYPE%>"」一行並以檔案系統類型取代 token。例如
FS_TYPE[0]="vxfs"。 找出「FS_UMOUNT_OPT[0]="<%SG_PKG_FS_UMOUNT_OPT%>"」一行並以任何檔案系統的 umount 選項取代 token。若無特殊 umount 選項,則可移除 token 並將此選項保持空白。例如
FS_UMOUNT_OPT[0]=""。 找出「FS_FSCK_OPT[0]="<%SG_PKG_FS_FSCK_OPT%>"」一行並以任何檔案系統的特定 fsck 選項取代 token。如上所述,可刪除 token 並將選項保持空白。例如
FS_FSCK_OPT[0]=""。 找出「IP[0]="<%SG_PKG_IP%>"」一行並以 csync 套件的 IP 位址取代 token。例如 IP[0]= 123.456.789.3。 找出「SUBNET[0]="<%SG_PKG_SUBNET%>"」一行並以套件的 IP 位址子網路取代 token。請使用
netstat -i 協助判斷子網路。例如 SUBNET[0]= 123.456.789.0。
將套件控制命令集及套件 ASCII 配置檔配送至整個叢集: # ccp csync csync.conf /etc/cmcluster/csync/ 套用並啟動套件: # cmapplyconf -P csync.conf # cmmodpkg -e csync
測試 csync 套件配置 執行下列步驟以測試配置: 在管制用戶端上使用下列命令: # cfagent --no-lock --verbose --no-splay 冗長輸出會顯示用戶端檢查更新的主要規則檔案複本,視需要將檔案複製到 /var/opt/cfengine/inputs,然後執行 cfagent.conf/cf.main 的內容。 在主控伺服器上測試 cfrun 命令: # cfrun -- --inform --inform 指示遠端 cfagent 使用 --inform 旗標,該旗標會針對 cfengine 在系統上執行的所有變更產生訊息。若需相關資訊,--verbose 命令也可提供協助: # cfrun -v -- --verbose -v 指示 cfrun 本身應更為冗長,並將 --verbose 傳遞至遠端 cfagent。 若需疑難排解的相關資訊,請參閱「cfengine 疑難排解」。
手動配置管制用戶端時,其基本步驟如下: 交換安全性金鑰,以建立管制用戶端與主控伺服器之間的信任關係。 將 update.conf 從主控伺服器複製到管制用戶端。
欲將 Serviceguard 叢集配置為現有 cfengine 主控伺服器的用戶端,需將每個叢集成員視為獨立式系統並個別配置。若要新增叢集成員,必須適當配置每個成員。如果新增新成員至
Serviceguard 叢集且該叢集正在執行 csync 套件,則叢集成員會自動配置為 cfengine 管制的用戶端。在這種情形下,csync 套件將作為主控伺服器。新的成員會自動配置為管制用戶端,且可處理套件的故障轉移 (failover)。新增叢集成員前,應先配置套件的儲存設備基本架構和檔案系統。 欲新增新的管制用戶端,請先配置用戶端與主控伺服器之間的信任關係。這兩種系統會交換安全性金鑰以互相認證。需將主控伺服器的公開金鑰複製到用戶端,而用戶端的公開金鑰同樣需複製到主控伺服器中: 以 root 身份使用 cfkey 建立用戶端的安全性金鑰: # mkdir -p /var/opt/cfengine/ppkeys # cd /var/opt/cfengine/ppkeys # /opt/dsau/sbin/cfkey |
隨即建立此用戶端的 localhost.pub 與 localhost.priv 檔案。 將此用戶端的金鑰複製到主控伺服器。主控伺服器會使用下列命名慣例命令用戶端的金鑰:
<使用者名稱>-<用戶端_IP_位址>.pub。 利用下列命名慣例將用戶端的公開金鑰推送到主控伺服器的 ppkeys 目錄中: # scp localhost.pub 主控_伺服器:\ /var/opt/cfengine/ppkeys/root-用戶端_IP_位址.pub |
請注意,為保護其完整性,傳送金鑰時使用如安全複製公用程式 (請參閱 scp(1))
非常重要。 最後,將主控伺服器的金鑰複製到此管制用戶端: # scp 主控_伺服器:/var/opt/cfengine_master/ppkeys/localhost.pub \ root-主控_IP_位址.pub |
接著將主控伺服器的 update.conf 複製到管制用戶端: # mkdir -p /var/opt/dsau/cfengine/inputs # cd /var/opt/dsau/cfengine/master_files/inputs # cd /var/opt/dsau/cfengine/inputs # scp master_server:/var/opt/dsau/cfengine/inputs/update.conf ./update.conf |
欲允許此用戶端接受 cfrun 要求,請執行下列步驟: 編輯
/etc/rc.config.d/cfservd 並將 CSYNC_CONFIGURED 變數設為「1」,系統開機時會啟動 cfservd。 啟動 cfservd: # /sbin/init.d/cfservd start 利用 cfagent (請參閱 cfagent(8)) 測試配置: # cfagent --no-lock --verbose --no-splay 冗長輸出會顯示用戶端檢查更新的主要規則檔案複本,視需要將檔案複製到 /var/opt/cfengine/inputs,然後執行 cfagent.conf/cf.main 的內容。
若需疑難排解的相關資訊,請參閱「cfengine 疑難排解」一節。 管理者可利用 cfrun 命令 (請參閱 cfrun(8)) 將變更推送到用戶端。cfrun 會與每個管制用戶端的 cfservd 協助程式聯繫,而 cfservd 會啟動 cfagent 執行實際的同步化作業。 您也可以選擇讓 cfagent 在用戶端上定期執行,方法有兩種: 自 cron 工作執行 cfagent。 自 cron 執行 cfagent 時,請利用 cfexecd -F 啟動它。crontab 項目的範例如下: 0 * * * * /var/opt/dsau/cfengine/bin/cfexecd -F 此 crontab 項目將使 cfagent 每小時執行一次。 在此範例中,cfexecd (請參閱 cfexecd(8)) 作為 cfagent 的封裝 (wrapper) 並蒐集所有輸出,將其置於 /var/opt/dsau/cfengine/outputs 中。cfexecd 也可將郵件傳送給管理者 (若在 cfagent.conf 檔案中指定)。若需詳細資訊,請參閱 /opt/dsau/doc/cfengine 中的 cfengine 參考手冊。 請注意,預設的 cf.main 提供將上一行自動新增至每個管制用戶端之 crontab 檔案的範例。 在協助程式模式中執行 cfexecd。 cfexecd 具有以 cfengine 時間類別為基礎、類似 cron 的功能,可取代 cron 以執行 cfagent。cfexecd 預設為每小時執行一次 cfengine。首次啟動 cfengine 時,利用 cron 排程用戶端的同步化作業可能是最簡單的方式。若需在協助程式模式中使用 cfexecd 的詳細資訊,請參閱 /opt/dsau/doc/cfengine/ 的 cfengine 教學文件。
cfengine 具有許多安全性功能,包括控制阻斷式服務 (denial-of-service)
攻擊的參數,以及防止管制用戶端存取伺服器之參照檔案目錄的存取控制清單等功能。若需 cfengine 安全性功能的詳細資訊,請參閱 /opt/dsau/doc/cfengine/ 中的參考手冊。 下列討論的安全性主題包括: 金鑰交換目前為止所有顯示的金鑰交換範例皆利用 scp,以安全地來回傳送主控伺服器及管制用戶端的公開金鑰。此類機制提供最高階的安全性,但在某些情況下卻不甚方便。其他可選擇的金鑰配送方法如下: 連接新的用戶端時,cfrun 具有類似 ssh 的互動模式,該模式可提示管理者接受遠端系統的金鑰。例如: cfrun(0):.......... [ Hailing remote-host.abc.xyz.com ] .......... WARNING - You do not have a public key from host remote-host.abc.xyz.com = 12.345.678.90 Do you want to accept one on trust?(yes/no) -> yes cfrun:<master server name>:Trusting server identity and willing to accept key from remote-host.abc.xyz.com=12.345.678.90 |
若有大量的新用戶端,則此互動模式可能不是很有效率。
cfrun 支援 -T 選項,該選項會告知 cfengine 信任所有 cfrun.hosts 中列出的新主機金鑰。 cfservd.conf 支援 TrustKeysFrom 控制項目。例如: control: TrustKeysFrom = ( 128.39.89.76 ) # A trust host TrustKeysFrom = ( 128.39.89.76/24 ) # A trusted subnet 列舉的主機或子網路位址將間接獲得信任,同時將自動接受其金鑰。
以上所有的金鑰交換替代方法均應格外謹慎使用,且只能在信任區域網路及遠端主機的安全環境下使用。接受公開金鑰後,除非從主控伺服器的 /var/opt/dsau/cfengine/ppkeys 目錄中加以手動刪除或手動改由新金鑰取代,否則無法進行更新。 網路連接埠的使用 方法cfservd 預設會使用 TCP 連接埠 5308。您可在 cfrun.hosts 檔案中指定連接埠,指示 cfagent 透過不同的連接埠連接 cfservd。例如: host1.abc.xyz.com # Use standard port host2.abc.xyz.com # Use standard port host3.abc.xyz.com:4444 # Use port 4444 此外,cfengine 會認可 /etc/services 中定義的 cfengine tcp 連接埠。 加密一般而言,主控伺服器與管制用戶端之間的檔案傳輸流量並未加密,對許多系統管理相關的配置檔而言可以接受,但對某些檔案而言則需要檔案傳輸加密。cfagent.conf 的複製動作提供「encrypt = true」選項以加密指定的檔案。若需加密的相關資訊,請參閱 /opt/dsau/doc/cfengine 中的 cfengine 參考手冊。 Checksum 警示cfengine 具有類似 Tripwire 的 checksum 警示功能。欲監控檔案的
checksum 變更,請進行下列步驟: 將下段新增至 /var/opt/dsau/cfengine_master/inputs/cfagent.conf: ChecksumUpdates = ( "on" ) 在 cfagent.conf 的「files」動作序列中,新增檔案欲監控的 checksum = md5 或 checksum = sha 選項。例如: files: class:: /etc/example mode = 644 checksum = md5
請注意,此 checksum 選項與複製動作序列中使用的 checksum = true 選項不同。決定是否需要複製檔案時,後者選項會告知 cfengine 使用 checksum 取代時間戳記。
cfagent 會在用戶端上建立 checksum 資料庫 (若尚未存在)。ChecksumUpdates 設為「on」或「true」時,會在
checksum 資料庫中新增或更新監控檔案目前的 checksum。初次執行此作業以填入
checksum 資料庫後,請將 ChecksumUpdates 變更為「off」。此時任何對監控檔案的
checksum 所進行的變更都會出現安全性警告訊息。例如: host1: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! host1: SECURITY ALERT:Checksum for /etc/example changed! host1: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! csync_wizard 並沒有解除配置選項可阻止系統成為主控伺服器。欲停用主控伺服器,只要停止 cfservd 即可: # /sbin/init.d/cfservd stop 欲避免 cfservd 在系統啟動時隨之啟動,請編輯 /etc/rc.config.d/cfservd 並將 CSCYN_CONFIGURED 變更為「0」。 若使用 csync_wizard 建立 cfengine 配置及新增管制用戶端,則同時也可用它來移除管制用戶端。請執行主控伺服器上的精靈並選取「Remove
a client」用戶端。精靈要求配置管制用戶端的非互動式 ssh 存取,如「配置同步用戶端」一節所述。指定的用戶端會自
cfrun.hosts 中刪除,其公開金鑰會自主要 ppkeys 目錄中刪除,而主控者的金鑰則會自用戶端的 ppkeys 目錄中刪除。 cfengine 會蓄意忽視大部分的配置變更之登錄,但有些配置選項可增加 cfengine 輸出的冗長度,如下所示: 大部分的 cfagent.conf 動作,如「copy」、「editfiles」及
「processes」皆支援 syslog = true 選項,將特定動作登錄至 syslog。 同樣地,大多數的動作皆支援
「inform = true」選項,讓 cfagent 報告任何變更。 cfagent.conf 的控制部分支援「inform = (true)」及「syslog = true」全域性選項。 cfagent (請參閱 cfagent(8)) 支援在命令行上進行 --inform 切換。若需相關資訊,請參閱 /opt/dsau/doc/cfengine 中的 cfengine 參考手冊。
cfengine 疑難排解 |  |
下列為處理 cfengine 的部分疑難排解秘訣。 利用 --no-fork
(-F) 及 --verbose (-v) 選項在主控伺服器上執行 cfservd,即提供任何疑難排解的實用資訊。 您可能會發現認證錯誤。執行「cfagent -K」作業時,會顯示下列訊息: cfengine:: BAD: key could not be accepted on trust cfengine:: Authentication dialogue with <master server>.abc.xyz.com failed cfengine:client:/var/opt/dsau/cfengine/inputs/update.conf:194: Warning: actionsequence is empty cfengine:client:/var/opt/dsau/cfengine/inputs/update.conf:194: Warning: perhaps cfagent.conf/update.conf have not yet been set up? |
上述問題最可能是由 cfengine 安全性設定所引起。欲解決此問題,需交換管制用戶端與主控伺服器之間的 cfengine 公開金鑰。新增用戶端時,csync_wizard (請參閱 csync_wizard(8)) 會自動執行此程序。若需手動將金鑰配送至管制用戶端的指示,請參閱「配置同步管制用戶端」一節。 「Warning: actionsequence is empty」錯誤 利用 cfagent -v 選項以取得更多資訊。造成此訊息的一個可能原因在於 update.conf 尚未新增至用戶端的 /var/opt/dsau/cfengine/inputs 目錄。 由於遺失空白空格所造成的語法錯誤 # cfagent -K cfengine::/var/opt/dsau/cfengine/inputs/update.conf:39: syntax error cfengine::/var/opt/dsau/cfengine/inputs/update.conf: Execution terminated after parsing due to errors in program |
請檢查配置檔內的空白空格。一般而言,使用空白空格可增加可讀性。常見的問題之一是括弧中漏掉空白空格。例如,函式名稱及前面的括弧之間不應有空格,但外括弧內的函式本身前後都需加上空格。以下顯示前後都需加上空格的範例。 control: my_variable = ( ExecResult(/bin/ls -l) ) |
剖析程式指出的 update.conf 行問題 (前一範例的第 39 行) 最有可能是上一行或敘述發生錯誤。 無法連接 cfengine 用戶端或主控者。 # cfruncfrun(0): .......... [ Hailing host1 ] .......... cfrun(0): .......... [ Hailing host2 ] .......... cfrun:host2: Couldn't open a socket cfrun:host2: socket: Connection refused |
檢查 host2 上的 cfservd 協助程式是否已配置並執行,若未執行,請利用 /sbin/init.d/cfservd start 來啟動 cfservd。 「Can't stat」訊息 透過 cfrun 或 cfagent 執行時,可能會出現「can't stat」錯誤。例如: host1: Can't stat /var/opt/dsau/cfengine_master/master_files/etc/test in copy |
請檢查 master 檔案儲存庫 (repository),確認有疑慮的檔案是否可使用並具有正確權限。 「Couldn't open a socket 」或「unable
to establish connection:」錯誤 cfagent 及 cfrun 會顯示以下錯誤: cfengine:: Couldn't open a socket cfengine:: Unable to establish connection with host1 (failover) host2: Couldn't open a socket |
若主控伺服器 cfservd 正在執行,則此錯誤指出由於有防火牆或連接埠問題,因此用戶端無法連結主控伺服器上的
TCP 5308 連接埠。使用 cfrun 時,主控伺服器亦必須能夠連結遠端用戶端上的 TCP 5308 連接埠。請確認所有防火牆規則皆允許存取上述連接埠。 cfengine 命令行引數會區分大小寫。例如,cfagent 同時支援具有不同意義的 -k 及 -K 選項: 如何讓 cfengine 更加冗長? 大多數的 cfengine 工具與協助程式均接受冗長選項及數個除錯選項。例如: cfagent -d, -d1, -d2, -d3, or -d4 # for debug output cfservd -v cfrun -v
syslog 簡介 |  |
syslogd (請參閱 syslogd(1M)) 為 UNIX 系統中最普遍的元件,負責執行系統登錄活動。syslogd 會讀取一組日誌來源,如 /dev/log 及 /dev/klog,並依 /etc/syslog.conf 的指示處理日誌訊息。應用程式會利用 syslog() 呼叫 (請參閱 syslog(3C)) 將訊息登錄至 syslog。 syslog 訊息的標準格式包括選用的優先權層級與工具。優先權層級指出訊息的緊急程度;工具則指出發佈訊息的子系統。表 3-1 「syslog 優先權層級」 列出 /usr/include/syslog.h 定義的優先權層級與工具。 表 3-1 syslog 優先權層級 | 訊息 | 說明 |
|---|
| LOG_EMERG | 當機情況,通常會廣播至所有使用者。 | LOG_ALERT | 應立即更正的情況,如系統資料庫毀損。 | LOG_CRIT | 關鍵情況,如硬體裝置發生錯誤。 | | LOG_ERR | 一般錯誤。 | LOG_WARNING | 警告訊息。 | | LOG_NOTICE | 非錯誤但需特別注意的情況。 | LOG_INFO | 資訊性訊息。 | LOG_DEBUG | 包含通常僅於程式除錯時使用之資訊的訊息。 |
表 3-2 「syslog 工具訊息」 說明 syslog 工具訊息。 表 3-2 syslog 工具訊息 | 訊息 | 說明 |
|---|
LOG_KERN | 核心程式產生的訊息,這些訊息無法由使用者處理程序產生。 | LOG_USER | 隨機使用者處理程序產生的訊息。若未指定,則此訊息為預設的工具識別碼。 | LOG_MAIL | 郵件系統發出的訊息。 | LOG_DAEMON | 系統協助程式發出的訊息,如 inetd、ftpd (請參閱 inetd(1M)、ftpd(1M))。 | LOG_AUTH | 授權系統發出的訊息,包括 login、su、getty (請參閱 login(1)、su(1)、 getty(1M))。 | LOG_SYSLOG | syslogd 協助程式內部產生的訊息。 | LOG_LPR | 印表機多工緩衝系統發出的訊息,如 lp、lpsched
(請參閱 lp(1)、 lpsched(1M))。 | LOG_NEWS | 新聞系統發出的訊息。 | | LOG_UUCP | UUCP 系統發出的訊息。 | LOG_CRON | CRON 協助程式發出的訊息。 | LOG_LOCAL0 - LOC_LOCAL7 | 保留供本機使用。 |
利用 /etc/syslog.conf 可依據訊息的優先權層級與工具篩選訊息,可將訊息送至: |