下面定义了 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/。
可用于在群集中的所有节点间(甚至在 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
。
该协议支持使用多个冗余局域网来从部分或整体网络故障中恢复。这样,只要一个网络运行正常,群集通讯就仍可继续。Corosync 支持 Totem Redundant Ring Protocol。所有参与节点上都强制实施逻辑令牌传递环以确保可靠且有序地传递消息。只有拥有令牌的节点才允许广播消息。
在 Corosync 中定义了冗余通讯通道后,使用 RRP 告知群集如何使用这些接口。RRP 可具有三种模式 (rrp_mode
):
如果设置为 active
,则 Corosync 将主动使用这两个接口。但是,此模式已弃用。
如果设置为 passive
,Corosync 将选择性地通过可用网络发送消息。
如果设置为 none
,将会禁用 RRP。
一种将消息发送到单个网络目标的技术。Corosync 支持多路广播和单路广播。在 Corosync 中,单路广播作为 UDP 单路广播 (UDPU) 实施。
启动 YaST 并选择
› 。也可以从命令行启动模块:sudo yast2 cluster
下面的列表显示了 YaST 群集模块中可用屏幕的概述。它还指出了屏幕是否包含成功设置群集必需的参数,或其参数是否可选。
允许您定义用于在群集节点之间进行通讯的一个或两个通讯通道。对于传输协议,请使用多路广播 (UDP) 或单路广播 (UDPU)。有关细节,请参见第 4.3 节 “定义通讯通道”。
允许您定义群集的身份验证设置。HMAC/SHA1 身份验证需要使用共享机密来保护和验证讯息。有关细节,请参见第 4.4 节 “定义身份验证设置”。
Csync2 将帮助您跟踪配置更改,并在群集节点之间保持文件同步。有关细节,请参见第 4.5 节 “将配置传送到所有节点”。
可让您配置用户空间 conntrackd
。使用 conntrack 工具为 iptables 进行有状态包检测。有关细节,请参见第 4.6 节 “同步群集节点间的连接状态”。
允许您配置服务以使群集节点联机。定义是否在引导时启动 Pacemaker 服务,以及是否在防火墙中打开节点间通讯所需的端口。有关细节,请参见第 4.7 节 “配置服务”。
如果是首次启动群集模块,它会显示为向导,引导您完成进行基本设置所需的所有步骤。否则,请单击左侧面板上的类别,以访问每个步骤的配置选项。
YaST 群集模块中的一些设置仅适用于当前节点。其他设置可以通过 Csync2 自动传送到所有节点。可在以下各部分中找到有关此配置的详细信息。
为实现群集节点间的成功通讯,请定义至少一个通讯通道。对于传输协议,请分别按过程 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。
使用多路广播时,将对所有群集节点使用相同的 bindnetaddr
、mcastaddr
和 mcastport
。通过使用相同的多路广播地址,群集中的所有节点都将知晓彼此。对于不同的群集,请使用不同的多路广播地址。
启动 YaST 群集模块,然后切换到
类别。
将多路广播
。
定义
。将此值设置为要用于群集多路广播的子网。定义
。定义
。要为每个群集节点自动生成唯一的 ID,请将
保留为启用状态。定义
。
输入法定票数。默认情况下,每个节点有 1
张投票。 必须与群集中的节点数匹配。
确认更改。
如果需要,请按过程 4.3 “定义冗余通讯通道”中所述在 Corosync 中定义冗余通讯通道。
如果要使用单路广播(而非多路广播)进行群集通讯,请按如下所述继续操作。
启动 YaST 群集模块,然后切换到
类别。
将单路广播
。
定义
。对于单路广播通讯,Corosync 需要知道群集中所有节点的 IP 地址。对于将要加入群集的每个节点,单击
并输入以下细节:
(仅当在 Corosync 中使用了第二个通讯通道时才需要指定)
(仅当禁用了 选项时才需要指定)
要修改或删除群集成员的任何地址,请使用
或 按钮。要为每个群集节点自动生成唯一的 ID,请将
保留为启用状态。定义
。
输入法定票数。默认情况下,每个节点有 1
张投票。 必须与群集中的节点数匹配。
确认更改。
如果需要,请按过程 4.3 “定义冗余通讯通道”中所述在 Corosync 中定义冗余通讯通道。
如果由于任何原因不能使用网络设备绑定,第二个最佳选择就是在 Corosync 中定义冗余通讯通道(次环)。这样就可使用两个物理上分隔的网络进行通讯。如果一个网络发生故障,群集节点仍可通过另一个网络进行通讯。
Corosync 中的另一个通讯通道将会形成另一个令牌传递环。在 /etc/corosync/corosync.conf
中,您配置的第一个通道就是主环,其环编号为 0
。第二个环(冗余通道)的环编号为 1
。
在 Corosync 中定义了冗余通讯通道后,使用 RRP 告知群集如何使用这些接口。有了 RRP,就可以使用两个物理位置分开的网络进行通讯。如果一个网络发生故障,群集节点仍可通过另一个网络进行通讯。
RRP 可以有三种模式:
如果设置为 active
,则 Corosync 将主动使用这两个接口。但是,此模式已弃用。
如果设置为 passive
,Corosync 将选择性地通过可用网络发送消息。
如果设置为 none
,将会禁用 RRP。
/etc/hosts
如果 Corosync 中配置了多个环,则每个节点都可具有多个 IP 地址。这需要在所有节点的 /etc/hosts
文件中反映出来。
启动 YaST 群集模块,然后切换到
类别。请激活
。冗余通道必须使用与所定义的第一个通讯通道相同的协议。如果使用多路广播,请输入以下参数:要使用的
,冗余通道的 和 。如果使用单路广播,请定义以下参数:要使用的
及 。输入将加入群集的所有节点的 IP 地址。要告知 Corosync 如何以及何时使用其他通道,请选择要使用的
: 如果只定义了一个通讯通道,none
)。
如果设置为 active
,则 Corosync 将主动使用这两个接口。但是,此模式已弃用。
如果设置为 passive
,Corosync 将选择性地通过可用网络发送消息。
使用 RRP 时,High Availability Extension 会监视当前环的状态,并在发生故障后自动重新启用冗余环。
或者,使用 corosync-cfgtool
手动检查环状态。使用 -h
查看可用选项。
确认更改。
要定义群集的身份验证设置,您可以使用 HMAC/SHA1 身份验证。此方式需要使用共享机密来保护和验证讯息。指定的身份验证密钥(密码)将用于群集中的所有节点。
启动 YaST 群集模块,然后切换到
类别。激活
。 对于新创建的群集,请单击/etc/corosync/authkey
。
如果希望当前计算机加入现有群集,则不用生成新的密钥文件。而是将 /etc/corosync/authkey
从一个节点复制到当前计算机(手动或使用 Csync2 皆可)。
确认更改。YaST 会将此配置写入 /etc/corosync/corosync.conf
。
如果不想将生成的配置文件手动复制到所有节点,可使用 csync2
工具在群集中的所有节点间进行复制。
这需要以下基本步骤:
Csync2 将帮助您跟踪配置更改,并在群集节点之间保持文件同步。
可以定义对操作至关重要的文件列表。
可以显示这些文件的更改(对于其他群集节点)。
可以使用单个命令同步配置的文件。
使用 ~/.bash_logout
中的一个简单外壳脚本,您可以在从系统注销之前获得更改未同步的提醒。
http://oss.linbit.com/csync2/ 和 http://oss.linbit.com/csync2/paper.pdf 上提供了有关 Csync2 的详细信息。
启动 YaST 群集模块,然后切换到
类别。 要指定同步组,请在hostname
命令返回的确切字符串。
如果您的网络中无法正常进行主机名解析,您也可以为每个群集节点指定主机名与 IP 地址的组合。为此,请使用字符串 HOSTNAME@IP,例如 alice@192.168.2.100
。这样,Csync2 将在连接时使用 IP 地址。
单击/etc/csync2/key_hagroup
。创建后,必须将其手动复制到群集的所有成员。
要使用通常需要在所有节点间同步的文件填充
列表,请单击 。如果要从待同步的文件列表
、 或 文件,请使用相应按钮。必须为每个文件输入绝对路径名。通过单击
激活 Csync2。随后会执行以下命令,以在引导时自动启动 Csync2:root #
systemctl
enable csync2.socket
确认更改。YaST 会将 Csync2 配置写入 /etc/csync2/csync2.cfg
。
要立即启动同步过程,请继续第 4.5.2 节 “使用 Csync2 同步更改”。
要成功使用 Csync2 同步文件,必须满足以下要求:
同一 Csync2 配置在所有群集节点上均可用。
同一 Csync2 身份验证密钥在所有群集节点上均可用。
所有群集节点上都必须正在运行 Csync2。
因此,在首次运行 Csync2 之前,需要做好以下准备:
如所述配置后,将文件
/etc/csync2/csync2.cfg第 4.5.1 节 “使用 YaST 配置 Csync2” 手动复制到所有节点。
将执行第 4.5.1 节 的步骤 3 时在一个节点上生成的 /etc/csync2/key_hagroup
文件复制到群集中的所有节点。它是 Csync2 在进行身份验证时需要使用的文件。但请勿在其他节点上重新生成该文件,因为所有节点上的文件都必须相同。
在所有节点上执行以下命令,以便立即启动服务:
root #
systemctl
start csync2.socket
要对所有文件执行一次初始同步,请在要从中复制配置的计算机上执行以下命令:
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.
如果确信当前节点上的文件版本是“最佳”版本,可以通过强制使用此文件并重新同步来解决冲突:
root #
csync2
-f
/etc/corosync/corosync.confroot #
csync2
-x
有关 Csync2 选项的更多信息,请运行
csync2 -help
Csync2 仅推送更改。它不会在计算机之间连续同步文件。
每次更新需要同步的文件时,都必须将更改推送到其他计算机:在您进行了更改的计算机上运行 csync2
-xv
。如果对未更改文件的任何其他计算机运行此命令,则不会执行任何操作。
要对 iptables 启用有状态包检测,请配置并使用 conntrack 工具。这需要以下基本步骤:
为 conntrackd
配置一个资源(类:ocf
,提供程序:heartbeat
)。如果使用 Hawk2 添加资源,请使用 Hawk2 推荐的默认值。
配置 conntrack 工具后,可对 Linux 虚拟服务器使用这些工具,请参见负载平衡。
conntrackd
#
使用 YaST 群集模块配置用户空间 conntrackd
。这需要未用于其他通讯通道的专用网络接口。守护程序可随后通过资源代理启动。
启动 YaST 群集模块,然后切换到
类别。选择
来同步连接状态。会自动检测所选接口的 IPv4 地址并显示在 YaST 中。该地址必须已经配置并且必须支持多路广播。定义要用于同步连接状态的
。在
中,定义要将连接状态同步到其中的组的数字 ID。
单击conntrackd
的配置文件。
如果修改了现有群集的任何选项,请确认更改并关闭群集模块。
有关进一步群集配置,请单击第 4.7 节 “配置服务”。
并继续conntrackd
#在 YaST 群集模块中,定义是否在引导节点时启动其上的特定服务。也可使用模块手动启动和停止服务。为使群集节点联机并启动群集资源管理器,Pacemaker 必须作为服务运行。
在 YaST 群集模块中,切换到
类别。要在每次引导此群集节点时启动 Pacemaker,请在
组中选择相应选项。如果在 组中选择 ,则必须在每次引导此节点时手动启动 Pacemaker。要手动启动 Pacemaker,请使用以下命令:root #
systemctl
start pacemaker
要立即启动或停止 Pacemaker,请单击相应按钮。
要在防火墙中打开所需的端口以在当前计算机上进行群集通讯,请激活/etc/sysconfig/SuSEfirewall2.d/services/cluster
。
确认更改。请注意,该配置仅应用于当前计算机,而不是所有群集节点。
完成初始群集配置后,在每个群集节点上启动 Pacemaker 服务,以使堆栈联机:
登录到现有节点。
检查服务是否已在运行。
root #
systemctl
status pacemaker
如果尚未启动,立即启动 Pacemaker:
root #
systemctl
start pacemaker
对每个群集节点重复上述步骤。
在某个节点上,使用 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 章 “配置和管理群集资源(命令行)”。