适用于 SUSE Linux Enterprise High Availability Extension 12 SP5

4 使用 YaST 群集模块

摘要

YaST 群集模块可让您手动从头开始设置群集,或修改现有群集的选项。

不过,如果您希望采用自动方式设置群集,请参见安装和设置快速入门。该指南介绍了如何安装所需的包并会引导您创建基本的双节点群集,该群集是使用 ha-cluster-bootstrap 脚本设置的。

您还可结合使用这两种设置方法,例如,使用 YaST 群集设置一个节点,然后使用其中一个引导脚本集成更多节点(或反之)。

4.1 术语定义

下面定义了 YaST 群集模块和本章中使用的多个关键术语。

绑定网络地址 (bindnetaddr)

Corosync 管理器应绑定的网络地址。为方便在群集间共享配置文件,Corosync 使用网络接口网络掩码来仅屏蔽用于路由网络的地址位。例如,如果本地接口是 192.168.5.92 并且网络掩码是 255.255.255.0,则 bindnetaddr 将设置为 192.168.5.0。例如,如果本地接口是 192.168.5.92 并且网络掩码是 255.255.255.192,则 bindnetaddr 将设置为 192.168.5.64

注意
注意:所有节点的网络地址

由于所有节点将使用相同的 Corosync 配置,请务必使用 bindnetaddr 之类的网络地址,而不是特定网络接口地址。

conntrack 工具

可与内核内连接跟踪系统交互,以便对 iptables 启用有状态包检测。High Availability Extension 使用此工具来同步群集节点之间的连接状态。有关详细信息,请参见 http://conntrack-tools.netfilter.org/

Csync2

可用于在群集中的所有节点间(甚至在 Geo 群集间)复制配置文件的同步工具。Csync2 可处理排入同步组的任意数量的主机。每个同步组都有自己的成员主机列表及其包含/排除模式,包含/排除模式定义了在同步组中应同步哪些文件。同步组、属于每个组的主机名以及每个组的包含/排除规则均在 Csync2 配置文件 /etc/csync2/csync2.cfg 中指定。

对于身份验证,Csync2 使用 IP 地址和同步组中的预共享密钥。需要为每个同步组生成一个密钥文件,并将其复制到所有组成员。

有关 Csync2 的更多信息,请参见 http://oss.linbit.com/csync2/paper.pdf

现有群集

术语现有群集指的是任何包括至少一个节点的群集。现有群集具有定义通讯通道的基本 Corosync 配置,但它们不一定已有资源配置。

多路广播

一种用于网络内一对多通讯的技术,可用于群集通讯。Corosync 支持多路广播和单路广播。如果多路广播不符合公司 IT 策略,则改为使用单路广播。

注意
注意:交换机和多路广播

要使用多路广播进行群集通讯,请确保交换机支持多路广播。

多路广播地址 (mcastaddr)

Corosync 管理器使用 IP 地址进行多路广播。IP 地址可以为 IPv4 或 IPv6。如果使用 IPv6 网络,则必须指定节点 ID。可以使用专用网内的任何多路广播地址。

多路广播端口 (mcastport)

用于群集通讯的端口。Corosync 使用两个端口:一个用于接收多路广播的指定 mcastport 和一个用于发送多路广播的 mcastport -1

Redundant Ring Protocol (RRP)

该协议支持使用多个冗余局域网来从部分或整体网络故障中恢复。这样,只要一个网络运行正常,群集通讯就仍可继续。Corosync 支持 Totem Redundant Ring Protocol。所有参与节点上都强制实施逻辑令牌传递环以确保可靠且有序地传递消息。只有拥有令牌的节点才允许广播消息。

在 Corosync 中定义了冗余通讯通道后,使用 RRP 告知群集如何使用这些接口。RRP 可具有三种模式 (rrp_mode):

  • 如果设置为 active,则 Corosync 将主动使用这两个接口。但是,此模式已弃用。

  • 如果设置为 passive,Corosync 将选择性地通过可用网络发送消息。

  • 如果设置为 none,将会禁用 RRP。

单路广播

一种将消息发送到单个网络目标的技术。Corosync 支持多路广播和单路广播。在 Corosync 中,单路广播作为 UDP 单路广播 (UDPU) 实施。

4.2 YaST 群集模块

启动 YaST 并选择高可用性 › 群集。也可以从命令行启动模块:

sudo yast2 cluster

下面的列表显示了 YaST 群集模块中可用屏幕的概述。它还指出了屏幕是否包含成功设置群集必需的参数,或其参数是否可选

通讯通道(必需)

允许您定义用于在群集节点之间进行通讯的一个或两个通讯通道。对于传输协议,请使用多路广播 (UDP) 或单路广播 (UDPU)。有关细节,请参见第 4.3 节 “定义通讯通道”

重要
重要:冗余通讯路径

对于受支持的群集设置,要求有两个或更多冗余通讯路径。最好使用网络设备绑定,如第 13 章 “网络设备绑定中所述。

如果不可行,则您需要在 Corosync 中定义另一个通讯通道。

安全性(可选但建议使用)

允许您定义群集的身份验证设置。HMAC/SHA1 身份验证需要使用共享机密来保护和验证讯息。有关细节,请参见第 4.4 节 “定义身份验证设置”

配置 Csync2(可选但建议使用)

Csync2 将帮助您跟踪配置更改,并在群集节点之间保持文件同步。有关细节,请参见第 4.5 节 “将配置传送到所有节点”

配置 conntrackd(可选)

可让您配置用户空间 conntrackd。使用 conntrack 工具为 iptables 进行有状态包检测。有关细节,请参见第 4.6 节 “同步群集节点间的连接状态”

服务(必需)

允许您配置服务以使群集节点联机。定义是否在引导时启动 Pacemaker 服务,以及是否在防火墙中打开节点间通讯所需的端口。有关细节,请参见第 4.7 节 “配置服务”

如果是首次启动群集模块,它会显示为向导,引导您完成进行基本设置所需的所有步骤。否则,请单击左侧面板上的类别,以访问每个步骤的配置选项。

注意
注意:YaST 群集模块中的设置

YaST 群集模块中的一些设置仅适用于当前节点。其他设置可以通过 Csync2 自动传送到所有节点。可在以下各部分中找到有关此配置的详细信息。

4.3 定义通讯通道

为实现群集节点间的成功通讯,请定义至少一个通讯通道。对于传输协议,请分别按过程 4.1过程 4.2 中所述使用多路广播 (UDP) 或单路广播 (UDPU)。如果要定义另一个冗余通道(过程 4.3),则这两个通讯通道必须使用相同的协议。

YaST 通讯通道屏幕中定义的所有设置都会写入到 /etc/corosync/corosync.conf 中。/usr/share/doc/packages/corosync/ 中提供了一些多路广播和单路广播设置的示例文件。

如果您使用的是 IPv4 地址,则节点 ID 可以选填。如果使用的是 IPv6 地址,则必须填写节点 ID。YaST 群集模块提供了一个自动为每个群集节点生成唯一 ID 的选项,用户无需手动为每个节点指定 ID。

过程 4.1︰ 定义第一个通讯通道(多路广播)

使用多路广播时,将对所有群集节点使用相同的 bindnetaddrmcastaddrmcastport。通过使用相同的多路广播地址,群集中的所有节点都将知晓彼此。对于不同的群集,请使用不同的多路广播地址。

  1. 启动 YaST 群集模块,然后切换到通讯通道类别。

  2. 传输协议设为多路广播

  3. 定义绑定网络地址。将此值设置为要用于群集多路广播的子网。

  4. 定义多路广播地址

  5. 定义端口

  6. 要为每个群集节点自动生成唯一的 ID,请将自动生成节点 ID 保留为启用状态。

  7. 定义群集名称

  8. 输入预期投票数。此值非常重要,Corosync 将使用它来为分区的群集计算法定票数。默认情况下,每个节点有 1 张投票。预期投票数必须与群集中的节点数匹配。

  9. 确认更改。

  10. 如果需要,请按过程 4.3 “定义冗余通讯通道”中所述在 Corosync 中定义冗余通讯通道。

YaST 群集 - 多路广播配置
图 4.1︰ YaST 群集 - 多路广播配置

如果要使用单路广播(而非多路广播)进行群集通讯,请按如下所述继续操作。

过程 4.2︰ 定义第一个通讯通道(单路广播)
  1. 启动 YaST 群集模块,然后切换到通讯通道类别。

  2. 传输协议设为单路广播

  3. 定义端口

  4. 对于单路广播通讯,Corosync 需要知道群集中所有节点的 IP 地址。对于将要加入群集的每个节点,单击添加并输入以下细节:

    • IP 地址

    • 冗余 IP 地址(仅当在 Corosync 中使用了第二个通讯通道时才需要指定)

    • 节点 ID(仅当禁用了自动生成节点 ID 选项时才需要指定)

    要修改或删除群集成员的任何地址,请使用编辑删除按钮。

  5. 要为每个群集节点自动生成唯一的 ID,请将自动生成节点 ID 保留为启用状态。

  6. 定义群集名称

  7. 输入预期投票数。此值非常重要,Corosync 将使用它来为分区的群集计算法定票数。默认情况下,每个节点有 1 张投票。预期投票数必须与群集中的节点数匹配。

  8. 确认更改。

  9. 如果需要,请按过程 4.3 “定义冗余通讯通道”中所述在 Corosync 中定义冗余通讯通道。

YaST 群集 - 单路广播配置
图 4.2︰ YaST 群集 - 单路广播配置

如果由于任何原因不能使用网络设备绑定,第二个最佳选择就是在 Corosync 中定义冗余通讯通道(次环)。这样就可使用两个物理上分隔的网络进行通讯。如果一个网络发生故障,群集节点仍可通过另一个网络进行通讯。

Corosync 中的另一个通讯通道将会形成另一个令牌传递环。在 /etc/corosync/corosync.conf 中,您配置的第一个通道就是主环,其环编号为 0。第二个环(冗余通道)的环编号为 1

在 Corosync 中定义了冗余通讯通道后,使用 RRP 告知群集如何使用这些接口。有了 RRP,就可以使用两个物理位置分开的网络进行通讯。如果一个网络发生故障,群集节点仍可通过另一个网络进行通讯。

RRP 可以有三种模式:

  • 如果设置为 active,则 Corosync 将主动使用这两个接口。但是,此模式已弃用。

  • 如果设置为 passive,Corosync 将选择性地通过可用网络发送消息。

  • 如果设置为 none,将会禁用 RRP。

过程 4.3︰ 定义冗余通讯通道
重要
重要:冗余环和 /etc/hosts

如果 Corosync 中配置了多个环,则每个节点都可具有多个 IP 地址。这需要在所有节点的 /etc/hosts 文件中反映出来。

  1. 启动 YaST 群集模块,然后切换到通讯通道类别。

  2. 请激活冗余通道。冗余通道必须使用与所定义的第一个通讯通道相同的协议。

  3. 如果使用多路广播,请输入以下参数:要使用的绑定网络地址,冗余通道的多路广播地址端口

    如果使用单路广播,请定义以下参数:要使用的绑定网络地址端口。输入将加入群集的所有节点的 IP 地址。

  4. 要告知 Corosync 如何以及何时使用其他通道,请选择要使用的 rrp_mode

    • 如果只定义了一个通讯通道,rrp_mode 将自动禁用(值 none)。

    • 如果设置为 active,则 Corosync 将主动使用这两个接口。但是,此模式已弃用。

    • 如果设置为 passive,Corosync 将选择性地通过可用网络发送消息。

    使用 RRP 时,High Availability Extension 会监视当前环的状态,并在发生故障后自动重新启用冗余环。

    或者,使用 corosync-cfgtool 手动检查环状态。使用 -h 查看可用选项。

  5. 确认更改。

4.4 定义身份验证设置

要定义群集的身份验证设置,您可以使用 HMAC/SHA1 身份验证。此方式需要使用共享机密来保护和验证讯息。指定的身份验证密钥(密码)将用于群集中的所有节点。

过程 4.4︰ 启用安全性身份验证
  1. 启动 YaST 群集模块,然后切换到安全性类别。

  2. 激活启用安全身份验证

  3. 对于新创建的群集,请单击生成身份验证密钥文件。将创建身份验证密钥并将其写入 /etc/corosync/authkey

    如果希望当前计算机加入现有群集,则不用生成新的密钥文件。而是将 /etc/corosync/authkey 从一个节点复制到当前计算机(手动或使用 Csync2 皆可)。

  4. 确认更改。YaST 会将此配置写入 /etc/corosync/corosync.conf

YaST 群集 - 安全性
图 4.3︰ YaST 群集 - 安全性

4.5 将配置传送到所有节点

如果不想将生成的配置文件手动复制到所有节点,可使用 csync2 工具在群集中的所有节点间进行复制。

这需要以下基本步骤:

Csync2 将帮助您跟踪配置更改,并在群集节点之间保持文件同步。

  • 可以定义对操作至关重要的文件列表。

  • 可以显示这些文件的更改(对于其他群集节点)。

  • 可以使用单个命令同步配置的文件。

  • 使用 ~/.bash_logout 中的一个简单外壳脚本,您可以在从系统注销之前获得更改未同步的提醒。

http://oss.linbit.com/csync2/http://oss.linbit.com/csync2/paper.pdf 上提供了有关 Csync2 的详细信息。

4.5.1 使用 YaST 配置 Csync2

  1. 启动 YaST 群集模块,然后切换到 Csync2 类别。

  2. 要指定同步组,请在同步主机组中单击添加,然后输入群集中所有节点的本地主机名。对于每个节点,必须使用 hostname 命令返回的确切字符串。

    提示
    提示:主机名解析

    如果您的网络中无法正常进行主机名解析,您也可以为每个群集节点指定主机名与 IP 地址的组合。为此,请使用字符串 HOSTNAME@IP,例如 alice@192.168.2.100。这样,Csync2 将在连接时使用 IP 地址。

  3. 单击生成预共享密钥以创建同步组的密钥文件。密钥文件将写入 /etc/csync2/key_hagroup。创建后,必须将其手动复制到群集的所有成员。

  4. 要使用通常需要在所有节点间同步的文件填充同步文件列表,请单击添加建议的文件

  5. 如果要从待同步的文件列表编辑添加删除文件,请使用相应按钮。必须为每个文件输入绝对路径名。

  6. 通过单击打开 Csync2 激活 Csync2。随后会执行以下命令,以在引导时自动启动 Csync2:

    root # systemctl enable csync2.socket
  7. 确认更改。YaST 会将 Csync2 配置写入 /etc/csync2/csync2.cfg

  8. 要立即启动同步过程,请继续第 4.5.2 节 “使用 Csync2 同步更改”

YaST 群集 - Csync2
图 4.4︰ YaST 群集 - Csync2

4.5.2 使用 Csync2 同步更改

要成功使用 Csync2 同步文件,必须满足以下要求:

  • 同一 Csync2 配置在所有群集节点上均可用。

  • 同一 Csync2 身份验证密钥在所有群集节点上均可用。

  • 所有群集节点上都必须正在运行 Csync2。

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

过程 4.5︰ 使用 Csync2 准备初始同步
  1. 所述配置后,将文件 /etc/csync2/csync2.cfg第 4.5.1 节 “使用 YaST 配置 Csync2” 手动复制到所有节点。

  2. 将执行第 4.5.1 节步骤 3 时在一个节点上生成的 /etc/csync2/key_hagroup 文件复制到群集中的所有节点。它是 Csync2 在进行身份验证时需要使用的文件。但请在其他节点上重新生成该文件,因为所有节点上的文件都必须相同。

  3. 在所有节点上执行以下命令,以便立即启动服务:

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

    root # csync2 -xv

    这会将文件推送到其他节点,从而一次同步所有文件。如果所有文件都成功同步,则 Csync2 将完成,不会报错。

    如果在其他节点(不仅在当前节点)上对要同步的一个或多个文件进行了修改,则 Csync2 会报告冲突。您将得到类似以下内容的输出:

    While syncing file /etc/corosync/corosync.conf:
    ERROR from peer hex-14: 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。如果对未更改文件的任何其他计算机运行此命令,则不会执行任何操作。

4.6 同步群集节点间的连接状态

要对 iptables 启用有状态包检测,请配置并使用 conntrack 工具。这需要以下基本步骤:

  1. 使用 YaST 配置 conntrackd

  2. conntrackd 配置一个资源(类:ocf,提供程序:heartbeat)。如果使用 Hawk2 添加资源,请使用 Hawk2 推荐的默认值。

配置 conntrack 工具后,可对 Linux 虚拟服务器使用这些工具,请参见负载平衡

过程 4.7︰ 使用 YaST 配置 conntrackd

使用 YaST 群集模块配置用户空间 conntrackd。这需要未用于其他通讯通道的专用网络接口。守护程序可随后通过资源代理启动。

  1. 启动 YaST 群集模块,然后切换到配置 conntrackd 类别。

  2. 选择专用接口来同步连接状态。会自动检测所选接口的 IPv4 地址并显示在 YaST 中。该地址必须已经配置并且必须支持多路广播。

  3. 定义要用于同步连接状态的多路广播地址

  4. 组号中,定义要将连接状态同步到其中的组的数字 ID。

  5. 单击生成 /etc/conntrackd/conntrackd.conf 来创建 conntrackd 的配置文件。

  6. 如果修改了现有群集的任何选项,请确认更改并关闭群集模块。

  7. 有关进一步群集配置,请单击下一步并继续第 4.7 节 “配置服务”

YaST 群集 - conntrackd
图 4.5︰ YaST 群集 - conntrackd

4.7 配置服务

在 YaST 群集模块中,定义是否在引导节点时启动其上的特定服务。也可使用模块手动启动和停止服务。为使群集节点联机并启动群集资源管理器,Pacemaker 必须作为服务运行。

过程 4.8︰ 启用 Pacemaker
  1. 在 YaST 群集模块中,切换到服务类别。

  2. 要在每次引导此群集节点时启动 Pacemaker,请在引导组中选择相应选项。如果在引导组中选择,则必须在每次引导此节点时手动启动 Pacemaker。要手动启动 Pacemaker,请使用以下命令:

    root # systemctl start pacemaker
  3. 要立即启动或停止 Pacemaker,请单击相应按钮。

  4. 要在防火墙中打开所需的端口以在当前计算机上进行群集通讯,请激活打开防火墙中的端口。该配置将写入 /etc/sysconfig/SuSEfirewall2.d/services/cluster

  5. 确认更改。请注意,该配置仅应用于当前计算机,而不是所有群集节点。

YaST 群集 - 服务
图 4.6︰ YaST 群集 - 服务

4.8 使群集联机

完成初始群集配置后,在每个群集节点上启动 Pacemaker 服务,以使堆栈联机:

过程 4.9︰ 启动 Pacemaker 并检查状态
  1. 登录到现有节点。

  2. 检查服务是否已在运行。

    root # systemctl status pacemaker

    如果尚未启动,立即启动 Pacemaker:

    root # systemctl start pacemaker
  3. 对每个群集节点重复上述步骤。

  4. 在某个节点上,使用 crm status 命令检查群集状态。如果所有节点都联机,则输出应类似于如下内容:

    root # crm status
    Last updated: Thu Jul  3 11:07:10 2014
    Last change: Thu Jul  3 10:58:43 2014
    Current DC: alice (175704363) - partition with quorum
    2 Nodes configured
    0 Resources configured
    
    Online: [ alice bob ]

    此输出表示群集资源管理器已启动,可以管理资源了。

完成基本配置并使节点处于联机状态后,可以开始配置群集资源。使用某种群集管理工具,例如 crm 外壳 (crmsh) 或 HA Web Konsole。有关更多信息,请参见第 7 章 “使用 Hawk2 配置和管理群集资源第 8 章 “配置和管理群集资源(命令行)

打印此页