跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文档 / Geo 群集指南 / 跨所有站点和仲裁方同步配置文件
适用范围 SUSE Linux Enterprise High Availability Extension 15 SP2

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 设置”

Geo 群集的示例 Csync2 设置
图 5.1︰ Geo 群集的示例 Csync2 设置

身份验证密钥文件及其参照以红色显示。Csync2 配置文件的名称以蓝色显示,其参照以绿色显示。有关细节,请参见示例 Csync2 设置:配置文件

示例 Csync2 设置:配置文件
/etc/csync2/csync2.cfg

主要 Csync2 配置文件。我们特意精简了此文件,其中只包含以下信息:

  • 同步组 ha_local 的定义。该组包括两个节点(this-site-host-1this-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.keyha_global 同步组的配置文件,以及用于在组内部进行同步的身份验证密钥)。

  • /etc/booth/,用于保存 booth 配置的默认目录。如果您为多个租户使用 booth 设置,该设置将包含多个 booth 配置文件。如果为 booth 使用身份验证,则最好是也在此目录中放置密钥文件。

  • /etc/drbd.conf/etc/drbd.d(如果在群集设置中使用 DRBD)。DRBD 配置可全局同步,因为它从资源配置文件中包含的主机名派生配置。

  • /etc/zypp/repos.de。包储存库有可能在所有群集节点上相同。

显示的其他文件 (/etc/root/*) 是出于方便可以包含的示例(使群集管理员的工作变得更简单)。

注意
注意

文件 csync2.cfgha_local.key 特定于站点,这意味着,需要为每个群集站点创建不同的文件。这些文件在属于同一群集的节点上相同,但在其他群集上则不同。每个 csync2.cfg 文件需要包含属于站点的主机(群集节点)列表,加上站点特定的身份验证密钥。

仲裁方也需要 csync2.cfg 文件。不过,仲裁方只需参照 ha_global.cfg

5.2 使用 Csync2 同步更改

要成功地使用 Csync2 同步文件,必须满足以下先决条件:

  • 在属于同一个同步组的所有计算机上提供相同的 Csync2 配置。

  • 必须在该组的所有成员上提供每个同步组的 Csync2 身份验证密钥。

  • Csync2 必须在所有节点和仲裁方上运行。

因此,在首次运行 Csync2 之前,需要做好以下准备:

  1. 根据每个同步组登录到一台计算机,然后为相应的组生成身份验证密钥:

    root # csync2 -k NAME_OF_KEYFILE

    但是,不要在同一个组的其他任何成员上重复生成密钥文件。

    对于图 5.1 “Geo 群集的示例 Csync2 设置”,这会生成以下密钥文件:/etc/csync2/ha_global.key 以及每个站点的一个本地密钥 (/etc/csync2/ha_local.key)。

  2. 将每个密钥文件复制到相应同步组的所有成员。对于图 5.1 “Geo 群集的示例 Csync2 设置”

    1. /etc/csync2/ha_global.key 复制到所有各方(Geo 群集所有站点上的仲裁方和所有群集节点)。需要在 ha_global.cfg 中定义的 ha_global 组内所列的所有主机上提供密钥文件。

    2. 将每个站点的本地密钥文件 (/etc/csync2/ha_local.key) 复制到属于 Geo 群集相应站点的所有群集节点上。

  3. 将站点特定的 /etc/csync2/csync2.cfg 配置文件复制到属于 Geo 群集相应站点的所有群集节点,并复制到仲裁方。

  4. 在所有节点和仲裁方上执行以下命令,使 csync2 服务在引导时自动启动:

    root # systemctl enable csync2.socket
  5. 在所有节点和仲裁方上执行以下命令,以便立即启动服务:

    root # systemctl start csync2.socket
过程 5.1︰ 使用 Csync2 同步文件
  1. 要对所有文件执行一次初始同步,请在要从中复制配置的计算机上执行以下命令:

    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.
  2. 如果确信当前计算机上的文件版本是最佳版本,可以通过强制使用此文件并重新同步来解决冲突:

    root # csync2 -f /etc/corosync/corosync.conf
    root # csync2 -x

有关 Csync2 选项的更多信息,请运行 csync2  -help

注意
注意:在任何更改后推送同步

Csync2 仅推送更改。它不会在计算机之间连续同步文件。

每次更新需要同步的文件时,都必须将更改推送到同一个同步组的其他计算机:在执行更改的计算机上运行 csync2 -xv。如果对未更改文件的任何其他计算机运行此命令,则不会执行任何操作。