37.5 群集配置

您必须配置群集软件,以便将每个群集节点注册为群集的成员。在此配置过程中,您还可以设置隔离和逐出其他节点 (STONITH) 资源,以确保群集的一致性。

重要说明:本部分程序使用了 rcopenais 和 openais 命令,这两个命令只适用于 SLES 11 SP4。对于 SLES 12 SP2 及更高版本,使用 systemctl pacemaker.service 命令。

例如,对于 /etc/rc.d/openais start 命令,使用 systemctl start pacemaker.service 命令。

按下列步骤配置群集:

对于本解决方案,必须使用专用 IP 地址进行内部群集通讯,并使用单播以最大程度地减少从网络管理员请求多路广播地址的需要。您还必须使用在托管共享储存的同一个 SLES 虚拟机上配置的 iSCSI 目标,将其作为实现隔离目的的节点分裂检测 (SBD) 设备。

SBD 设置

  1. 连接到 storage03 并启动控制台会话。运行以下命令,以便按照需要创建一个任意大小的空文件:

    dd if=/dev/zero of=/sbd count=<文件大小> bs=<位大小>

    例如,运行以下命令,创建一个 1MB 的文件,其中填充有从 /dev/zero 伪设备复制的零:

    dd if=/dev/zero of=/sbd count=1024 bs=1024
  2. 从命令行或图形用户界面运行 YaST:/sbin/yast

  3. 选择网络服务 > iSCSI 目标。

  4. 单击目标并选择现有目标。

  5. 选择编辑。UI 将显示可用 LUN(驱动器)的列表。

  6. 选择添加以添加新的 LUN。

  7. 将 LUN 编号保留为 2。在路径对话框中浏览,并选择已创建的 /sbd 文件。

  8. 将其他选项保留为默认值,依次选择确定和下一步,然后再次单击下一步,以选择默认的鉴定选项。

  9. 单击完成以退出配置。根据需要重新启动服务。退出 YaST。

注:以下步骤要求每个群集节点都能够解析所有其他群集节点的主机名(否则,文件同步服务 csync2 将会失败)。如果 DNS 未设置或不可用,请在列出每个 IP 地址及其主机名(由 hostname 命令报告)的 /etc/hosts 文件中添加每个主机的项。另外,请确保未为回环 IP 地址指派主机名。

执行以下步骤可在 IP 地址为 10.0.0.3 的服务器上公开 SBD 设备的 iSCSI 目标 (storage03)。

节点配置

连接到群集节点 (node01) 并打开控制台:

  1. 运行 YaST.

  2. 打开网络服务 > iSCSI 发起程序。

  3. 选择已连接的目标,然后选择您在前面配置的 iSCSI 目标。

  4. 选择注销选项,并从目标中注销。

  5. 切换到已发现的目标选项卡,选择目标,然后重新登录以刷新设备列表(保留自动启动选项并取消选择无鉴定)。

  6. 选择确定以退出 iSCSI 发起程序工具。

  7. 打开系统 > 分区程序,然后将 SBD 设备标识为 1MB IET-VIRTUAL-DISK。该设备将以 /dev/sdd 或类似的形式列出 - 请记下具体的标识。

  8. 退出 YaST。

  9. 执行命令 ls -l /dev/disk/by-id/,并记下已链接到您前面找到的设备名称的设备 ID。

  10. (有条件)执行以下命令之一:

    • 如果您使用的是 SLES 11 SP4:

      sleha-init

    • 如果您使用的是 SLES 12 SP1 或更高版本:

      ha-cluster-init

  11. 当系统提示输入要绑定的目标网络地址时,请指定外部 NIC IP 地址 (172.16.0.1)。

  12. 接受默认的多播地址和端口。稍后我们将覆盖这些信息。

  13. 输入“y”以启用 SBD,然后指定 /dev/disk/by-id/<设备 ID>,其中,<设备 ID> 是您前面找到的 ID(可以使用 Tab 键自动填写路径)。

  14. (有条件)出现下列提示时输入 N:

    Do you wish to configure an administration IP? [y/N]

    要配置管理 IP 地址,在资源配置期间提供虚拟 IP 地址

  15. 完成向导并确保未报告任何错误。

  16. 启动 YaST。

  17. 选择高可用性 > 群集(在某些系统上只需直接选择“群集”)。

  18. 在左侧的框中,确保已选择通讯通道。

  19. 按 Tab 切换到配置的首行,并将所选的 udp 更改为 udpu(这会禁用多播并选择单播)。

  20. 选择添加成员地址并指定此节点 (172.16.0.1),然后重复此步骤并添加其他群集节点:172.16.0.2。

  21. 选择完成以完成配置。

  22. 退出 YaST。

  23. 运行命令 /etc/rc.d/openais restart,以使用新的同步协议重新启动群集服务。

连接到每个附加的群集节点 (node02) 并打开控制台:

  1. 运行 YaST.

  2. 打开网络服务 > iSCSI 发起程序。

  3. 选择已连接的目标,然后选择您在前面配置的 iSCSI 目标。

  4. 选择注销选项,并从目标中注销。

  5. 切换到已发现的目标选项卡,选择目标,然后重新登录以刷新设备列表(保留自动启动选项并取消选择无鉴定)。

  6. 选择确定以退出 iSCSI 发起程序工具。

  7. (有条件)执行以下命令之一:

    • 如果您使用的是 SLES 11 SP4:

      sleha-join

    • 如果您使用的是 SLES 12 SP1 或更高版本:

      ha-cluster-join

  8. 输入第一个群集节点的 IP 地址。

(有条件)如果群集未正常启动,请执行以下步骤:

  1. 运行 crm status 命令查看节点是否已加入。如果节点未加入,重启动群集中的所有节点。

  2. 手动将 /etc/corosync/corosync.conf 文件从 node01 复制到 node02,在 node01 上运行 csync2 -x -v,或者通过 YaST 在 node02 上手动设置群集。

  3. (有条件)如果您在步骤 1 中运行的 csync2 -x -v 命令无法同步所有文件,请执行以下过程:

    1. 清除所有节点 /var/lib/csync2 目录中的 csync2 数据库。

    2. 在所有节点上更新 csync2 数据库以匹配文件系统,无需将任何项目标记为需要同步至其他服务器:

      csync2 -cIr /

    3. 在活动节点上,执行下列操作:

      1. 找出活动节点与被动节点之间的所有区别,标记这些区别以进行同步:

        csync2 -TUXI

      2. 重设置数据库以强制活动节点覆盖任意冲突:

        csync2 -fr /

      3. 开始同步至所有其他节点:

        csync2 -xr /

    4. 在所有节点上校验所有文件均同步:

      csync2 -T

      此命令将仅列出未同步的文件。

  4. 在 node02 上运行以下命令:

    对于 SLES 11 SP4:

    /etc/rc.d/openais start

    对于 SLES 12 SP1 及更高版本:

    systemctl start pacemaker.service

    (有条件)如果 xinetd 服务未正确添加新的 csync2 服务,该脚本将无法正常运行。为了使其他节点能够将群集配置文件一直同步到此节点,需要 xinetd 服务。如果显示诸如 csync2 运行失败之类的错误,则表明您可能遇到此问题。

    要解决此问题,请执行 kill -HUP `cat /var/run/xinetd.init.pid 命令,然后重新运行 sleha-join 脚本。

  5. 在每个群集节点上运行 crm_mon,以校验该群集是否正常运行。此外,还可以使用“hawk”(Web 控制台)来校验群集。默认登录名是 hacluster,口令是 linux。

(有条件)根据您的环境,请执行以下任务来修改其他参数:

  1. 要确保双节点群集中的单个节点出现故障不会使整个群集意外停止,请将全局群集选项 no-quorum-policy 设为 ignore:

    crm configure property no-quorum-policy=ignore

    注:如果您的群集包含两个以上的节点,请勿设置此选项。

  2. 要确保资源管理器允许资源就地运行和移动,请将全局群集选项 default-resource-stickiness 设为 1:

    crm configure property default-resource-stickiness=1。