 |
» |
|
|
 |
可以使用 DSAU(Distributed Systems Administration Utilities,分布式系统管理实用程序)工具向群集或网络中的指定系统发送文件和命令。DSAU
工具可提供下列功能: 利用配置同步,可以确保按照所采用的标准维护群集或网络中的系统。对配置主机进行更改时,这些更改将传播到所有客户端系统。 利用日志整合,可以在一个日志中按时间戳顺序检查来自配置中所有系统的条目,这样可以轻松地找到特定条目。 利用命令扇出,可以将同一命令从一个指定系统发送到已定义配置中的所有系统。这样便不用对配置中的所有系统进行访问,并省去了许多手动操作。 配置同步简介 |  |
管理一组分布式系统的配置及配置更改,是系统管理员要长期面临的挑战。可以使用多种工具来协助管理多系统配置管理的方方面面。例如,对于帐户管理,标准的解决方案包括
Network Information System (NIS) 和 Lightweight Directory Access
Protocol (LDAP)。对于文件级别的同步,可以使用 rdist(请参阅 rdist (1) 联机帮助页)和 rsync 等工具。借助 HP System Insight Manager 可以发现、监视和管理多组系统。 此工具包中的一个新增工具是配置引擎
(cfengine)。cfengine 是一种常用的开放源工具,可用于进行配置同步。通过它,可以进行基于策略或基于目标的配置管理,这样,管理员便可以定义要对多组系统实施的管理操作,以便这些系统可以达到所需的状态。 cfengine 是一种基于客户端/服务器的工具。中央配置主系统或策略服务器托管一个配置策略文件,该文件定义要对每个受管客户端执行的管理操作。该配置主系统还托管“黄金映像”文件,即应该分发到客户端的文件的参考副本。管理员可以使用
cfengine 来执行如下任务: 通过复制参考文件或目录,确保客户端系统使用的是一组正确的配置文件。
配置同步向导
(csync_wizard) 可用于协助管理员快速配置 cfengine 以便管理一组分布式系统,或者将其配置为 Serviceguard 群集中的高可用性服务。 管理员首先定义中央系统或 Serviceguard 群集来充当主配置服务器或策略服务器。对于初始配置过程来说,配置同步向导
(csync_wizard) 是便于用户使用的前期阶段。此中央系统将托管主策略文件(例如 cfagent.conf),这些文件定义所需的配置策略,还定义应该分发到受管客户端的文件的参考副本或主副本。 每个受管客户端从中央配置服务器复制策略文件的主副本,然后评估其当前状态,并将当前状态与策略文件定义的所需状态进行对比。如果有任何差异,均会导致运行配置规则,以便重新同步客户端。管理员可以采用两种方法对受管客户端启动同步操作:即使用推出操作或拉进操作。 管理员在主配置服务器上使用
cfrun 命令(有关详细信息,请参阅 cfrun (1) 联机帮助页),可以向外推出更改。
cfrun 读取 cfrun.hosts 文件来确定受管客户端的列表。然后在每个受管客户端上调用
cfagent 命令,来执行同步操作。因此,推出操作实际上是向受管客户端发出请求,要求它们立即执行拉进操作。 拉进操作是使用 cron 或 cfengine
自身的类似 cron 的 cfexecd 守护程序来执行的。任意一种方法都能以固定间隔调用 cfagent 命令,以便执行客户端启动的配置同步。管理员定义适用于每一组受管客户端的间隔。例如,每五分钟一次、一小时一次,或一天一次。管理员也可以为“按需”同步运行直接调用
cfagent。
cfengine 使用若干个守护程序和命令来执行配置同步操作。以下列表介绍了 cfengine 的主要组成部分。 cfagent - cfagent 命令是 cfengine 的重要部分。它在每个受管客户端上运行,并使用 update.conf 文件引导其自身,该文件说明了要从主服务器向本地受管客户端传输的文件集。传输的文件包括主策略文件、cfagent.conf 和所有相关的策略文件。在 DSAU 实现方案中,cfagent.conf 导入 cf.main 文件,该文件包含许多 cfengine 功能的示例。 传输配置文件后,cfagent 对这些文件中的配置指令进行计算。如果客户端系统的当前配置与所需配置发生偏离,则 cfagent 执行已定义的操作,使客户端恢复到正确的状态。 cfservd - cfservd 守护程序拥有两个角色: cfservd 在主配置服务器上运行,它是来自受管客户端的文件传输请求的交流中心。作为已定义的配置同步操作的一部分,受管客户端上的 cfagent 与主服务器的 cfservd 进行通信,请求主策略文件的副本和任何所需的参考文件的副本。主服务器的 cfservd 通过使用公用密钥/专用密钥交换机制以及对传输到受管客户端的文件进行加密(可选),负责对远程客户端进行身份验证。 cfservd 可以有选择地运行在每个受管客户端上,以便处理 cfrun 请求。通过
cfrun,管理员可以将更改推出到受管客户端,而不是等待客户端使用一些客户端定义的时间间隔进行同步。必须从主配置服务器启动 cfrun 命令。它与 cfrun.hosts 文件中列出的每个受管客户端进行通信,然后连接到受管客户端的
cfservd,要求 cfservd 调用 cfagent 以执行同步任务。 cfservd 是使用 cfservd.conf 配置的,并使用 /sbin/init.d/cfservd 启动。
cfexecd - cfexecd 是一种调度和报告工具。如果管理员使用 cron 以固定间隔执行同步操作,那么
cfexecd 便是位于 crontab 文件中用来对 cfagent 调用进行包装的命令。它将运行 cfagent 的输出存储在输出目录中(有关详细信息,请参阅 cfagent.conf),也可以发送电子邮件(可选)。 cfexecd 具有自己的类似 cron 的功能,这些功能基于 cfengine 时间类。管理员可以选择在守护程序模式下运行 cfexed,并使用它以定义的间隔调用 cfagent 而不是 cron。缺省设置是每小时调用
cfagent 一次。开始使用 cfengine 时,最简单的方法是从使用 cron 开始。 cfrun - cfrun 命令与受管客户端进行通信,要求每个客户端立即执行同步操作。具体地说,它将连接到每个受管客户端上的可选 cfservd,进而启动 cfagent。
图 3-1 “cfengine 概述” 显示了
cfengine 命令和守护程序的关系,还显示了管理员使用 cfrun 的示例。此图中的虚线表示调用顺序(例如,A 调用 B)。实线表示正在从配置文件读取数据。 管理员登录到主配置同步服务器,做出更改,该更改稍后将使用 cfrun 命令传播到受管客户端。 cfrun 检查 cfrun.hosts 文件以获得受管客户端的列表。请注意,主服务器可以自行充当客户端。在此图中,有两个客户端:主服务器和远程客户端。 cfrun 与每个受管客户端上依次调用 cfagent 的 cfservd 进行通信。 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 键继续,然后从以下菜单中选择第 1 项来配置主服务器: 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: 1The 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.txtThis 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 自动化功能(在 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 键继续,然后从以下菜单中选择第 1 项来配置主服务器: 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] 字段中,需要按原义使用挂接选项。请注意,挂接选项必须与您在逻辑卷上创建的文件系统相适合。例如,如果创建的文件系统支持大型文件,那么应该指定
largefiles 挂接选项。 程序包 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? []: vgcsyncYou need to enter a fully qualified Logical Volume, for example:/dev/vgname/lvol1 |
Enter the fully qualified Logical Volume?[]: /dev/vgcsync/lvol1Enter the Filesystem (Mount Point)? []: /csyncEnter the Mount Options? [-o rw,largefiles]:<return>Enter the Filesystem Type? [vxfs]:<return>Enter the IP address? []: 12.345.6.78Enter 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.txtThis 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 会连接到程序包代管节点上的 cfservd。这样,群集成员自身就是所有受管客户端。托管程序包的成员另外又充当供策略文件使用的主服务器。 引导群集时,每个成员会启动一个客户端的 cfservd。这就是对 cfrun 请求作出响应的 cfservd。当程序包在群集成员上启动时,该 cfservd 此时有权访问程序包的文件系统,并成为向所有受管客户端提供策略文件的主 cfservd。此 cfservd 是由程序包监视的。如果 cfservd 失败,程序包会尝试在另一群集成员上重新启动。该成员的 cfservd 随后会成为主 cfservd。 请注意,暂停程序包不会停止备用成员上的 cfservd 守护程序,因为预期行为是提供该守护程序来响应后续的 cfrun 请求。此外,与其他一些 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 目录中删除。
请注意,管理员可以定义能枚举特定 Serviceguard 群集所有成员的 cfengine 组或类。这些类定义不会自动更新,管理员必须手动更新 cfagent.conf 及相关文件来反映群集成员更改。 可以使用配置同步向导,将受管客户端添加到现有的
cfengine 配置。请在主服务器上运行该向导,不要在客户端系统上运行。当
Serviceguard 群集是主服务器时,请在 csync 程序包的代管节点上运行该向导。请注意,在高可用性设置中将新群集成员作为客户端添加是自动进行的。有关详细信息,请参阅“Serviceguard
自动化功能”。 另外,为了安全地分发 cfengine 密钥,必须将客户端配置为由主服务器的超级用户帐户进行非交互式 ssh 访问。通过 csshsetup 工具(请参阅 csshsetup (1)),可以轻松地对远程系统进行 ssh 访问配置。该工具将在下列示例中使用。 当客户端与主服务器位于同一 DNS 域时,该向导当前只能管理客户端。对于多域配置,请参考“手动配置”以获得手动添加客户端的说明。 请注意,如果将 Serviceguard 群集作为受管客户端添加,那么必须单独添加每个群集成员。 首先以超级用户身份登录主服务器,然后对远程系统进行 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)传输到受管客户端,并进行更新。让这个文件保持高度简单并避免错误是至关重要的。如果此文件中出现错误,则需要向每个受管客户端手动复制新版本。 此文件中包含的格式为 <%标记名称%> 的标记将在 csync_wizard 运行过程中用管理员对问题的回答来替换。将按如下方式替换标记: 用主服务器的非限定主机名替换
<%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 使用公用密钥/专用密钥交换机制对远程客户端进行身份验证。公用密钥/专用密钥对是在主服务器及所有受管客户端上生成的。每个受管客户端的公用密钥将复制到主服务器,然后从主服务器复制到多个受管客户端。使用
Secure Copy(请参阅 scp (1))等工具或者使用磁带或
CD-ROM 来安全地交换密钥是非常重要的。先生成主服务器的密钥: # /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 域替换该标记。这就限制了所有要成为该单个域的成员的客户端。 文件 /var/opt/dsau/cfengine_master/inputs/cfagent.conf 是主策略文件。缺省的 cfagent.conf 包含缺省模板 cf.main,后者是一个带注释的模板文件,其中含有适用于独立系统和
Serviceguard 群集的常用同步操作的示例。cf.main 还含有与 update.conf 中一样的 <%HOST_NAMER%> 和 <%DOMAIN_NAMER%> 标记。执行与上述步骤 3 相同的编辑操作。 请注意,此缺省 cf.main 文件不执行任何管理操作。所有操作行将被注释掉。这就是开始为受管客户端创建 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 以获得高可用性类似于针对独立计算机配置 cfengine,后者在 “使用向导配置独立同步服务器”一节中进行了介绍。主要差异在于创建
Serviceguard 程序包以及用于分发 cfengine 的安全密钥的机制。请按照如下所述的所有步骤进行操作。 初始 Serviceguard
程序包准备 首先获得程序包的
IP 地址。此地址通常以 DNS 形式注册,以便简化远程客户端的管理。如果使用
cfengine 供群集内使用,那么只要确保将该地址添加到每个成员的 /etc/hosts 文件中就足够了。 接下来,为新程序包创建所需的存储基础结构。执行此操作的说明记录在《《管理
Serviceguard》》一书中“建立 HA 群集配置”下的“创建存储基础结构”中。例如,如果使用
LVM 存储基础结构,那么应该包括下列步骤: 创建 LVM 卷组 (VG) 和逻辑卷 (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 使用的目录。 将缺省模板复制到主输入目录: # cd /csync/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)传输到受管客户端,并进行更新。让这个文件保持高度简单并避免错误是至关重要的。如果此文件中出现错误,则需要向每个受管客户端手动复制新版本。 此文件中包含的格式为
<%标记名称%> 的标记将在 csync_wizard 运行过程中用管理员对问题的回答来替换。将按如下方式替换标记: 用 Serviceguard
程序包的非限定主机名替换 <%HOST_NAMER%>。 用程序包的 DNS 域名替换 <%DOMAIN_NAMER%>?涣� 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 域替换该标记。这就限制了所有要成为该单个域的成员的客户端。 编辑主策略文件 文件 /var/opt/dsau/cfengine_master/inputs/cfagent.conf 是主策略文件。缺省的 cfagent.conf 包含缺省模板 cf.main,后者是一个带注释的模板文件,其中含有适用于独立系统和
Serviceguard 群集的常用同步操作的示例。编辑 cf.main 以替换以下标记: cf.main 中含有与 update.conf 中一样的 <%HOST_NAMER%> 和 <%DOMAIN_NAMER%> 标记。执行前面的带项目符号的“初始策略文件定制”的第
3 项中所述的相同编辑操作。 请注意,此缺省模板不执行任何管理操作。所有操作行将被注释掉。它包含许多专用于在
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 管理员将 localhost.pub 密钥复制到基于系统 IP 地址的正确名称。在使用群集的情况下,可通过下列步骤利用当前成员的密钥在群集范围内生成密钥: 使用 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-<成员 1 IP 地址>.pub # cp localhost.pub root-<成员 2 IP 地址>.pub # cp localhost.pub root-<成员 3 IP 地址>.pub ... # cp localhost.pub root-<成员 N IP 地址>.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
配置文件,以便用适当的值替换占位符标记。这些标记采用 <%标记名称%> 格式。找到“SUBNET <%SG_PKG_SUBNET%>”行,并用 csync 程序包的子网替换该标记。使用
netstat -i 有助于确定子网。 编辑程序包控制脚本,并用适当的值替换占位符标记。 注意: 缺省脚本模板假定您使用的是基于 LVM 的存储配置。如果要使用
VxVM 和(或)CFS,请参考《《管理 Serviceguard》》文档以获得有关使用这些技术配置程序包的详细信息。您必须注释掉如下所述的模板的
LVM 部分,并替换相应的 VxVM 或 CFS 节。 找到“VG[0]=“<%SG_PKG_VOL_GRP%>””行,并用程序包的 LVM 卷组的名称替换该标记。例如,
VG[0]“vgcsync”。 找到“LV[0]=“<%SG_PKG_LOG_VOL%>””行,并用逻辑卷的全名替换该标记。例如,
LV[0]=“/dev/vgcsync/lvol1”。 找到“FS[0]=“<%SG_PKG_FS%>””行,并用为此程序包创建的文件系统挂接点的名称替换该标记。例如,FS[0]=“/csync”。 请注意,此挂接点应该已在每个群集成员上作为如上所述的存储配置的一部分创建。 找到“FS_MOUNT_OPT[0]=“<%SG_PKG_MNT_OPT%>””行,并用文件系统的挂接选项替换该标记。例如,
FS_MOUNT_OPT[0]=“-o rw,largefiles”。 找到“FS_TYPE[0]=“<%SG_PKG_FS_TYPE%>””行,并用文件系统类型替换该标记。例如,
FS_TYPE[0]=“vxfs”。 找到“FS_UMOUNT_OPT[0]=“<%SG_PKG_FS_UMOUNT_OPT%>””行,并用任何文件系统 umount 选项替换该标记。如果没有专用的 umount 选项,可以删除该标记,并将此选项保留为空。例如,
FS_UMOUNT_OPT[0]=“”。 找到“FS_FSCK_OPT[0]=“<%SG_PKG_FS_FSCK_OPT%>””行,并用任何文件系统特定的 fsck 选项替换该标记。与上面一样,可以删除该标记,并将此选项保留为空。例如,
FS_FSCK_OPT[0]=“”。 找到“IP[0]=“<%SG_PKG_IP%>””行,并用 csync 程序包的 IP 地址替换该标记。例如,IP[0]= 123.456.789.3。 找到“SUBNET[0]=“<%SG_PKG_SUBNET%>””行,并用程序包 IP 地址的子网替换该标记。使用
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 从主服务器复制到受管客户端。 设置一个 cfagent 要按其执行同步操作的日程安排。
要将 Serviceguard 群集配置为现有 cfengine 主服务器的客户端,就如同每个群集成员是独立系统一样对其进行处理,并单独配置。如果向群集添加新成员,则必须适当地配置每个成员。如果要将新成员添加到
Serviceguard 群集,而群集正在运行 csync 程序包,那么群集成员会自动配置为 cfengine 管理的客户端。这种情况下,csync 程序包充当主服务器。新成员会自动配置为受管客户端,同时还能为程序包实施故障切换。在向群集添加成员之前,应该已配置程序包的存储基础结构和文件系统。要添加新的受管客户端,首先在客户端和主服务器之间配置信任关系。两个系统交换安全密钥来相互进行验证。主服务器的公用密钥需要复制到客户端,客户端的公用密钥将复制到主服务器: 以超级用户身份,使用 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 |
请注意,为了在传输密钥时保持其完整性,使用 Secure Copy(请参阅 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 主服务器:/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 的包装程序,并收集所有输出,将其放在 /var/opt/dsau/cfengine/outputs 中。cfexecd 还可以使邮件发送到管理员(如果在 cfagent.conf 文件中指定)。有关详细信息,请参考 /opt/dsau/doc/cfengine 中的 cfengine 参考手册。 请注意,缺省 cf.main 中包含将以上行自动添加到每个受管客户端的 crontab 文件的示例。 在守护程序模式下运行 cfexecd。 cfexecd 具有类似 cron 的功能,这些功能基于 cfengine 时间类,可以使用这些功能代替 cron 来运行 cfagent。cfexecd 缺省为每小时运行 cfengine 一次。开始使用 cfengine 时,最简单的方法大概是使用 cron 来调度客户端同步。有关在守护程序模式下使用 cfexecd 的详细信息,请参考 /opt/dsau/doc/cfengine/ 中的 cfengine 教程。
cfengine 有许多安全功能,从参数(用于控制拒绝服务攻击)到访问控制列表(用于阻止受管客户端访问服务器上的参考文件目录)不等。有关 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 列举的主机或子网地址将是隐式信任的,会自动接受它们的密钥。
所有这些密钥交换备选方法在使用时都应当极为小心,并且仅应在
LAN 和远程主机均受信任的安全环境中使用。一旦接受了公用密钥,就无法对其进行更新,除非从主服务器的 /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 参考手册。 校验和警报cfengine 有一个与 Tripwire 类似的校验和警报功能。要监视文件校验和的变化,请执行下列操作: 将以下节添加到 /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 = true 选项。在确定是否需要复制文件时,该选项告知 cfengine 使用校验和而不是时间戳。
如果客户端上没有校验和数据库,那么 cfagent 会创建该数据库。如果将 ChecksumUpdates 设置为“on”或“true”,则被监视文件的当前校验和将添加到校验和数据库或在该数据库中更新。首次运行
ChecksumUpdates 以填充校验和数据库后,请将 ChecksumUpdates 更改为“off”。此时,被监视文件的任何校验和变化都会导致出现安全警告。例如: 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))支持3在命令行上使用
--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 socketcfrun: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 |
检查主文件数据库,并确保有问题的文件可用且拥有正确的权限。 “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 outputcfservd -vcfrun -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)、 |
|