5 跨所有站点和仲裁方同步配置文件 #
要跨群集中的所有节点和跨 Geo 群集复制重要配置文件,可以使用 Csync2。Csync2 可处理排入同步组的任意数量的主机。每个同步组都有自己的成员主机列表及其包含/排除模式,包含/排除模式定义了在同步组中应同步哪些文件。同步组、属于每个组的主机名以及每个组的包含/排除规则均在 Csync2 配置文件 /etc/csync2/csync2.cfg
中指定。
对于身份验证,Csync2 使用 IP 地址和同步组中的预共享密钥。需要为每个同步组生成一个密钥文件,并将其复制到所有组成员。
Csync2 将通过 TCP 端口(默认为 6556
)访问其他服务器,并启动远程 Csync2 实例。有关 Csync2 的详细信息,请参见 http://oss.linbit.com/csync2/paper.pdf。
5.1 Geo 群集的 Csync2 设置 #
第 4.5 节 “将配置传输到所有节点”中介绍了如何使用 YaST 为单个群集设置 Csync2。但是,如同无法处理 Geo 群集所需的设置一样,YaST 无法处理较复杂的 Csync2 设置。对于图 5.1 “Geo 群集的示例 Csync2 设置”中所示的以下设置,可以通过编辑配置文件来手动配置 Csync2。
要调整 Csync2,以便不仅能够在本地群集内部同步文件,而且还能跨地理分散的站点同步文件,您需要在 Csync2 配置中定义两个同步组:
全局组
ha_global
(适用于需要跨 Geo 群集中的所有站点和仲裁方全局同步的文件)。用于本地群集站点的组
ha_local
(适用于需要在本地群集内部同步的文件)。
有关这两个同步组的多个 Csync2 配置文件的概述,请参见图 5.1 “Geo 群集的示例 Csync2 设置”。
身份验证密钥文件及其参照以红色显示。Csync2 配置文件的名称以蓝色显示,其参照以绿色显示。有关细节,请参见示例 Csync2 设置:配置文件。
/etc/csync2/csync2.cfg
主要 Csync2 配置文件。我们特意精简了此文件,其中只包含以下信息:
同步组
ha_local
的定义。该组包括两个节点(this-site-host-1
和this-site-host-2
),使用/etc/csync2/ha_local.key
进行身份验证。要为此组同步的文件列表只在另一个 Csync2 配置文件/etc/csync2/ha_local.cfg
中做了定义。config
语句包含了此定义。对另一个 Csync2 配置文件
/etc/csync2.cfg/ha_global.cfg
的参照包含在config
语句中。
/etc/csync2/ha_local.cfg
此文件仅与本地群集相关。它指定只在
ha_local
同步组内部同步的文件列表,因为这些文件特定于每个群集。最重要的文件如下:/etc/csync2/csync2.cfg
,此文件包含本地群集节点的列表。/etc/csync2/ha_local.key
,用于在本地群集内部进行 Csync2 同步的身份验证密钥。/etc/corosync/corosync.conf
,此文件定义本地群集节点之间的通讯通道。/etc/corosync/authkey
,Corosync 身份验证密钥。
文件列表中的其余文件取决于特定的群集设置。图 5.1 “Geo 群集的示例 Csync2 设置”中所列的文件只是示例。如果还要同步任何站点特定应用程序的文件,请同时将这些文件包含在
ha_local.cfg
中。尽管ha_local.cfg
面向属于 Geo 群集站点之一的节点,但其内容在所有站点上可以相同。如果需要不同的主机集或不同的密钥,可能需要添加额外的组。/etc/csync2.cfg/ha_global.cfg
此文件定义 Csync2 同步组
ha_global
。该组跨越多个站点中的所有群集节点(包括仲裁方)。由于我们建议针对每个 Csync2 同步组使用不同的密钥,此组使用/etc/csync2/ha_global.key
进行身份验证。include
语句定义要在ha_global
同步组内部同步的文件列表。最重要的文件如下:/etc/csync2/ha_global.cfg
和/etc/csync2/ha_global.key
(ha_global
同步组的配置文件,以及用于在组内部进行同步的身份验证密钥)。/etc/booth/
,用于保存投票间配置的默认目录。如果您为多个租户使用投票间设置,该设置将包含多个投票间配置文件。如果为投票间使用身份验证,则最好是也在此目录中放置密钥文件。/etc/drbd.conf
和/etc/drbd.d
(如果在群集设置中使用 DRBD)。DRBD 配置可全局同步,因为它从资源配置文件中包含的主机名派生配置。/etc/zypp/repos.de
。包储存库有可能在所有群集节点上相同。
显示的其他文件 (
/etc/root/*
) 是出于方便可以包含的示例(使群集管理员的工作变得更简单)。
文件 csync2.cfg
和 ha_local.key
特定于站点,这意味着,需要为每个群集站点创建不同的文件。这些文件在属于同一群集的节点上相同,但在其他群集上则不同。每个 csync2.cfg
文件需要包含属于站点的主机(群集节点)列表,加上站点特定的身份验证密钥。
仲裁方也需要 csync2.cfg
文件。不过,仲裁方只需参照 ha_global.cfg
。
5.2 使用 Csync2 同步更改 #
要成功地使用 Csync2 同步文件,必须满足以下先决条件:
在属于同一个同步组的所有计算机上提供相同的 Csync2 配置。
必须在该组的所有成员上提供每个同步组的 Csync2 身份验证密钥。
Csync2 必须在所有节点和仲裁方上运行。
因此,在首次运行 Csync2 之前,需要做好以下准备:
根据每个同步组登录到一台计算机,然后为相应的组生成身份验证密钥:
root #
csync2
-k NAME_OF_KEYFILE但是,不要在同一个组的其他任何成员上重复生成密钥文件。
对于图 5.1 “Geo 群集的示例 Csync2 设置”,这会生成以下密钥文件:
/etc/csync2/ha_global.key
以及每个站点的一个本地密钥 (/etc/csync2/ha_local.key
)。将每个密钥文件复制到相应同步组的所有成员。对于图 5.1 “Geo 群集的示例 Csync2 设置”:
将
/etc/csync2/ha_global.key
复制到所有各方(Geo 群集所有站点上的仲裁方和所有群集节点)。需要在ha_global.cfg
中定义的ha_global
组内所列的所有主机上提供密钥文件。将每个站点的本地密钥文件 (
/etc/csync2/ha_local.key
) 复制到属于 Geo 群集相应站点的所有群集节点上。
将站点特定的
/etc/csync2/csync2.cfg
配置文件复制到属于 Geo 群集相应站点的所有群集节点,并复制到仲裁方。在所有节点和仲裁方上执行以下命令,使 csync2 服务在引导时自动启动:
root #
systemctl
enable csync2.socket在所有节点和仲裁方上执行以下命令,以便立即启动服务:
root #
systemctl
start csync2.socket
要对所有文件执行一次初始同步,请在要从中复制配置的计算机上执行以下命令:
root #
csync2
-xv
这会将所有文件推送到同步组的其他成员,从而同步所有文件一次。如果所有文件都成功同步,则 Csync2 将完成,不会报错。
如果在其他计算机(而不仅是当前节点)上对要同步的一个或多个文件进行了修改,Csync2 将报告冲突。您将得到类似以下内容的输出:
While syncing file /etc/corosync/corosync.conf: ERROR from peer site-2-host-1: File is also marked dirty here! Finished with 1 errors.
如果确信当前计算机上的文件版本是“最佳”版本,可以通过强制使用此文件并重新同步来解决冲突:
root #
csync2
-f
/etc/corosync/corosync.confroot #
csync2
-x
有关 Csync2 选项的更多信息,请运行 csync2
-help
。
Csync2 仅推送更改。它不会在计算机之间连续同步文件。
每次更新需要同步的文件时,都必须将更改推送到同一个同步组的其他计算机:在执行更改的计算机上运行 csync2
-xv
。如果对未更改文件的任何其他计算机运行此命令,则不会执行任何操作。