A.2 安装过程

本节介绍安装和配置以下项目以设置群集环境的过程。有关配置 SLES High Availability Extension 的详细信息,请参见 SUSE Linux Enterprise High Availability Extension 指南。

A.2.1 配置 iSCSI 服务器

iSCSI 目标是指配置为群集中所有节点的公用储存的设备。它是 Linux 服务器上创建的虚拟磁盘,可让 iSCSI 发起程序通过以太网连接进行远程访问。iSCSI 发起程序是指群集中配置为与服务目标 (iSCSI) 连接的任一节点。iSCSI 目标应始终处于已启动且正在运行状态,以便任何作为发起程序的主机都能连接该目标。在 iSCSI 服务器上安装 iSCSI 目标之前,请确保 iSCSI 目标有足够的空间用于配置公用储存。安装 SLES 12 SP1 后,在其他两个节点上安装 iSCSI 发起程序包。

在安装 SLES 12 SP1 期间:

  1. 创建一个独立的分区,然后将分区路径指定为 iSCSI 共享储存分区。

  2. 安装 iSCSI 目标包。

要配置 iSCSI 服务器,请执行以下操作:

  1. 在目标服务器上创建一个块设备。

  2. 在终端中键入 yast2 disk 命令。

  3. 创建一个新的 Linux 分区并选择不格式化。

  4. 选择不装入分区。

  5. 指定分区大小。

  6. 在终端中键入 yast2 iscsi-server 命令。

  7. 单击服务选项卡,然后选择在服务启动中引导时。

  8. 在目标选项卡中,单击添加以输入分区路径(在安装 SLES 期间创建的路径)。

  9. 单击完成。

  10. 在终端中运行 cat /proc/net/iet/volume 命令,以校验是否已安装 iSCSI 目标。

A.2.2 在所有节点上配置 iSCSI 发起程序

要连接到 iSCSI 目标,您必须在所有群集节点上配置 iSCSI 发起程序。

要配置 iSCSI 发起程序,请执行以下操作:

  1. 安装 iSCSI 发起程序包。

  2. 在终端中运行 yast2 iscsi-client。

  3. 单击服务选项卡,然后选择在服务启动中引导时。

  4. 单击已连接目标选项卡,然后单击添加以输入 iSCSI 目标服务器的 IP 地址。

  5. 选择无鉴定。

  6. 单击下一步,然后单击连接。

  7. 单击切换启动方式将启动选项从手动更改为自动,然后单击下一步。

  8. 单击下一步,然后单击确定。

  9. 要检查目标服务器上已连接发起程序的状态,请在目标服务器上运行 cat /proc/net/iet/session 命令。随即会显示已连接到 iSCSI 服务器的发起程序列表。

A.2.3 对共享储存进行分区

创建两个共享储存分区:一个用于 SBD,另一个用于 Oracle Cluster File System 2 (OCFS2)。

要对共享储存进行分区,请执行以下操作:

  1. 在终端中运行 yast2 disk 命令。

  2. 在专家分区程序对话框中选择共享卷。在本示例中,我们从专家分区程序对话框中选择了 sdb。

  3. 单击添加,选择主分区选项,然后单击下一步。

  4. 选择自定义大小,然后单击下一步。在本示例中,自定义大小为 10 MB。

  5. 在格式化选项下,选择不格式化分区。在本示例中,文件系统 ID 为 0x83 Linux。

  6. 在装入选项下,选择不装入分区,然后单击完成。

  7. 单击添加,然后选择主分区。

  8. 单击下一步,选择最大大小,然后单击下一步。

  9. 在格式化选项中,选择不格式化分区。在本示例中,指定了 0x83 Linux 作为文件系统 ID。

  10. 在装入选项中,选择不装入分区,然后单击完成。

A.2.4 安装 HA Extension

要安装 HA Extension,请执行以下操作:

  1. 转到 NetIQ 下载网站。

  2. 在产品或技术菜单中选择 SUSE Linux Enterprise HA Extension,然后单击搜索。

    注:根据您的系统体系结构选择并安装相应的 HA Extension ISO 文件。

  3. 将该 ISO 文件下载到每台服务器上。

  4. 打开 YaST 控制中心对话框,然后单击附加产品 > 添加。

  5. 单击浏览并选择本地 ISO 映像,然后单击下一步。

  6. 在软件选择和系统任务对话框中,选择高可用性。在其他服务器上重复此步骤。

A.2.5 配置 HA 群集

配置检测信号的单路广播 IP 地址:

  1. 在使用静态 IP 地址的两个节点上,配置另一个将用于节点通讯(检测信号)的接口。在本示例中,节点 1 和节点 2 的 IP 地址分别为 10.10.10.13 和 10.10.10.14。

  2. 使用主机名来 Ping 这两台服务器,以测试两台服务器之间的连接性。

    重要说明:如果两台计算机彼此 ping 不通,请编辑本地 /etc/hosts 文件,并添加对等节点的主机名及其 IP 地址。在本示例中,/etc/hosts 文件包含以下内容:

    • 10.10.10.13 sles11sp2-idm1

    • 10.10.10.14 sles11sp2-idm2

  3. 在节点 1 上的终端中运行 yast2 cluster 命令。

  4. 在群集 - 通讯通道对话框中指定以下细节:

    1. 将传输协议设为 UDPU。

    2. 指定绑定网络地址,这是单路广播 IP 地址的网络地址。在本示例中,绑定网络地址为 10.10.10.0。

    3. 指定多路广播端口。在本示例中,多路广播端口为 5405。

    4. 单击添加以输入成员地址上每个节点的 IP 地址。在本示例中,节点 1 和节点 2 的 IP 地址分别为 10.10.10.13 和 10.10.10.14。

    5. 选择自动生成节点 ID,然后单击下一步。

  5. 在群集 - 安全性对话框中,选择启用安全鉴定,将线程数设置为 1,然后单击生成鉴定密钥文件。

    这会创建一个鉴定密钥,使其他节点能够加入您的群集。该密钥储存在 /etc/corosync/authkey 位置中。将此文件复制到另一个节点。

  6. 在群集 - 服务对话框中,选择开 - 引导时启动 openais,然后单击立即启动 openais。

  7. 选择同时启动管理,以便由 crm_gui 来管理群集。有关详细信息,请参见部分 A.2.2, 在所有节点上配置 iSCSI 发起程序。

  8. 在同步主机面板中执行以下操作:

    1. 单击添加以添加群集节点的主机名。

    2. 单击生成预共享密钥以在节点之间同步配置文件,然后将该文件复制到另一个节点。密钥文件储存在 /etc/csync2/key_hagroup 中。

    3. 在同步文件窗格中,单击添加建议的文件以自动生成要在节点之间同步的公用文件列表。

    4. 单击打开 csync2,然后单击下一步。

    5. 单击“下一步”,然后单击“完成”。

  9. 运行 passwd hacluster 命令以设置所有节点上的 hacluster 用户口令。

    注:请在各节点上为 hacluster 用户设置相同的口令。

  10. 运行以下命令将配置文件和鉴定密钥复制到另一个节点:

    • # scp /etc/csync2/csync2.cfg node2:/etc/csync2/

    • # scp /etc/csync2/key_hagroup node2:/etc/csync2/

    • # scp /etc/corosync/authkey node2:/etc/corosync/

    • # scp /etc/corosync/corosync.conf node2:/etc/corosync/

  11. 将配置文件复制到节点 2 后,重引导所有节点。

  12. 运行 csync2 -xv 命令。

  13. 创建 mkdir -p /share 目录用于装入共享储存。

  14. 在节点 2 上执行以下操作:

    1. 在终端中运行 yast2 cluster 命令。

      注:配置文件已覆盖,因此不会出现向导窗口。

    2. 在服务选项卡中,选择打开 - 引导时启动 openais,然后单击立即启动 openais。

    3. 在配置 Csync2 选项卡中,单击打开 csync2,然后单击完成。

    4. 创建 mkdir -p /share 目录用于装入共享储存。

      群集应已启动且正在运行。

  15. 在终端中运行 crm_mon 命令以校验状态。以下是一个输出示例:

    ============
    Last updated: Fri Aug 5 16:38:36 2011
    Stack: openais
    Current DC: node1 - partition with quorum
    Version: 1.1.2-2e096a41a5f9e184a1c1537c82c6da1093698eb5
    2 Nodes configured, 2 expected votes
    0 Resources configured.
    ============
    Online: [node1 node2]

A.2.6 配置全局群集选项

资源是指群集所管理的服务或应用程序。群集软件堆栈将监视这些资源,以检查它们是否已启动且正在运行。如果资源出于某种原因而停止运行,群集将会检测故障,并在另一个节点上启动或重启动该资源以提供高可用性。在本示例中,已在节点 1 上配置了全局群集选项。

要配置节点 1 上的 HA 资源,请执行以下操作:

  1. 在终端中运行 crm_gui 命令。

  2. 单击连接菜单 > 登录。使用任一节点的 IP 地址登录。

  3. 单击 CRM 配置选项卡,然后将默认资源黏性更改成一个正值。

    这样可以确保群集中的资源保持在当前位置。本示例中,该值为 1。

  4. 将无仲裁策略更改为忽略。

    这样可确保即使关闭了其中一个节点,群集服务也能处于已启动且正在运行的状态。

  5. 单击应用。

A.2.7 配置 OCFS 资源

在创建 OCFS2 卷之前,您必须先将以下资源配置为群集中的服务:

  • 分布式锁管理器 (DLM)

  • O2CB

  • STONITH 资源

OCFS2 要求群集中的所有节点上都要运行一个 DLM 资源,该资源通常配置为克隆。在本示例中,已在节点 1 上配置了 OCFS 资源。

配置 DLM 和 O2CB 资源

要在节点 1 上配置 DLM 和 O2CB 资源,请执行以下操作:

  1. 启动外壳,并以 root 或同等身份登录。

  2. 在终端中运行 crm configure 命令。

  3. 运行以下命令以创建 DLM 和 O2CB 的原始资源:

    primitive dlm ocf:pacemaker:controld op monitor interval="60" timeout="60" primitive o2cb ocf:ocfs2:o2cb op monitor interval="60" timeout="60"

    注:DLM 克隆资源将控制 DLM 服务,以确保群集中的所有节点上都已启动该服务。由于基本组具有内部共置和排序约束,O2CB 服务只会在已运行了 DLM 服务副本的节点上启动。

  4. 运行以下命令以创建基本组和基本克隆:

    group base-group dlm o2cb clone base-clone base-group meta interleave="true" target-role="Started"

  5. 运行 show 命令以查看更改。

  6. 运行 commit 命令,然后键入 Exit。

配置 STONITH 资源

建议在设备启动时创建一个 10MB 的分区。(在本示例中,SBD 分区是指 /dev/sdb1。)

重要说明:请确保在名称不会更改的设备上操作。您必须在名称以 /dev/disk/by-id 开头的设备上操作。例如,要将设备 /dev/disk/by-id/scsi-149455400000000000000000003000000250600000f000000 指派为 SBD STONITH 设备,请使用 sbd -d /dev/disk/by-id/scsi 149455400000000000000000003000000250600000f000000 create。

运行 ls -l 命令以校验设备名称。

  1. 在终端中,运行以下命令以初始化节点 1 上的 SBD 设备:

    sbd -d /dev/sdb1 create

  2. 运行 sbd -d /dev/sdb1 dump 命令以检查下列已写入到设备的细节:

    • Header version:2

    • Number of slots:255

    • Sector size:512

    • Timeout (watchdog):5

    • Timeout (allocate):2

    • Timeout (loop):1

    • Timeout (msgwait):10

设置软件检查包

在 SLES HA Extension 中,默认启用内核中的检查包支持。它随附了提供硬件特定的检查包驱动程序的多个不同内核模块。在系统引导过程中,会自动装载适用于您硬件的检查包驱动程序。

Softdog 是最常用的驱动程序。大多数检查包驱动程序名称都包含 wd、wdt 和 dog 等字符串,您可以运行以下命令来检查当前装载的驱动程序:

lsmod | grep wd

启动 SBD 守护程序

要在节点 1 上启动 SBD 守护程序,请执行以下操作:

  1. 在终端中,运行 rcopenais stop 命令以停止 OpenAIS。

  2. 创建 /etc/sysconfig/sbd 文件,然后添加以下命令:

    SBD_DEVICE="/dev/sdb1" 
    #The next line enables the watchdog support: 
    SBD_OPTS="-W"

    注:如果无法访问 SBD 设备,守护程序将无法启动和禁止启动 OpenAIS。

  3. 在终端中运行 yast2 cluster 命令。

  4. 在配置 Csync2 选项卡中,单击同步文件窗格下的添加,然后指定以下 SBD 文件路径:

    /etc/sysconfig/sbd

  5. 单击确定。

  6. 在同步文件窗格中,单击添加建议的文件以自动生成要在节点之间同步的公用文件列表。

  7. 运行 csync2 -xv 命令。

  8. 运行 sbd -d /dev/sdb1 allocate <nodename> 命令以分配节点。运行此命令两次,以将节点名称分配给 SDB 设备。在本示例中,执行了以下命令。

    sbd -d/dev/sdb1 allocate sles11sp2-idm1
    sbd -d/dev/sdb1 allocate sles11sp2-idm2
  9. 运行 rcopenais start 命令以启动 OpenAIS。

测试 SBD

要在节点 1 上测试 SBD,请执行以下操作:

  1. 运行 sbd -d /dev/sdb1 list 命令将节点槽及其当前消息从 SBD 设备进行转储。

  2. 运行 sbd -d /dev/sdb1 message SLES11SP2-idm2 test 命令以向其中一个节点发送测试讯息。

    此节点会在系统日志中确认收到了该讯息。以下是一个讯息示例:

    Aug 29 14:10:00 SLES11SP2-idm2 sdb1: [13412]: info: Received command test from SLES11SP2-idm1 on disk /dev/sdb1

重要说明:这一确认行为证实了 SBD 已在节点上启动且正在运行,并指明了 SBD 已准备好接收讯息。

配置屏蔽资源

要完成 SBD 设置,请将 SBD 激活为群集信息库 (CIB) 中的 STONITH/屏蔽机制。在节点 1 上的终端中运行以下命令:

node1# crm configure

crm(live)configure# property stonith-enabled="true"

crm(live)configure# property stonith-timeout="60s"

crm(live)configure# primitive stonith_sbd stonith:external/sbd params sbd_device="/dev/sdb1" meta is-managed="true"

crm(live)configure# commit

crm(live)configure# quit

注:为 stonith-timeout 设置的值取决于 msgwait timeout。例如,如果将 default msgwait timeout 值设置为 10 秒,则将 stonith-timeout 值设置为 60 秒。

创建 OCFS2 卷

在开始之前,请准备好规划用于 OCFS2 卷的块设备。将规划使用 OCFS2 卷的设备保留为未分配的可用空间,然后使用 mkfs.ocfs2 实用程序创建并格式化 OCFS2 卷。

要在节点 1 上创建 OCFS2 卷,请执行以下操作:

  1. 以 root 用户身份打开终端窗口并登录。

  2. 运行 crm_mon 命令以检查群集是否已联机。

  3. 在最多支持两个群集节点的 /dev/sdb2 上创建 OCFS2 文件系统,然后运行以下命令:mkfs.ocfs2 -N 2 /dev/sdb2

装入 OCFS2 卷

要在节点 1 上装入 OCFS2 卷,请执行以下操作:

  1. 启动壳层,并以 root 用户身份或同等身份登录。

  2. 运行 crm configure 命令。

  3. 配置 Pacemaker 以在群集中的每个节点上装入 OCFS2 文件系统:

    primitive ocfs2-1 ocf:heartbeat:Filesystem params device="/dev/sdb2" directory="/share" fstype="ocfs2" options="acl" op monitor interval="20" timeout="40" 
  4. 执行以下步骤,将文件系统原始资源添加到您在配置 DLM 和 O2CB 资源中配置的基本组:

    1. 指定 edit base-group。

    2. 在 vi 编辑器中,按如下所示修改组,然后保存您的更改:

      group base-group dlm o2cb ocfs2-1 meta target-role = "Started"

      注:由于基本组具有内部共置和排序约束,Pacemaker 只会在已运行 O2CB 资源的节点上启动 OCFS2-1 资源。

  5. 运行 show 命令以检查您是否已配置所有必需的资源。

  6. 运行 commit 命令,然后键入 Exit。

A.2.8 配置 IP 资源

运行以下命令以配置节点 1 上的 IP 资源:

node1# crm configure 

crm(live)configure# primitive clusterip ocf:heartbeat:IPaddr operations $id="clusterip-operations" op monitor interval="5s" timeout="60s" params ip="10.52.190.15" meta resource-stickiness="100" target-role="Started"   crm(live)configure# group eDir_group clusterip meta is-managed="true" target-role="Started"   crm(live)configure# show   crm(live)configure# commit 

A.2.9 在群集节点上安装并配置 eDirectory 和 Identity Manager

  1. 要在群集节点上安装 eDirectory,请执行以下操作:

    安装受支持版本的 eDirectory。有关在 HA 群集上配置 eDirectory 的逐步说明,请参见《eDirectory 8.8 Installation Guide》(eDirectory 8.8 安装指南)中的“Deploying eDirectory on High Availability Clusters”(在高可用性群集上部署 eDirectory)。

    重要说明:在节点 1 上安装 eDirectory 之前,请确保已在该节点上配置虚拟 IP。

  2. 使用“元目录服务器”选项在节点 1 上安装 Identity Manager。

  3. 使用 DCLUSTER_INSTALL 选项在节点 2 服务器上安装 Identity Manager 引擎。

    在终端中运行 ./install.bin -DCLUSTER_INSTALL="true" 命令。

    安装程序将直接安装 Identity Manager 文件,而不与 eDirectory 发生任何交互。

A.2.10 配置 eDirectory 资源

运行以下命令以在节点 1 上配置 eDirectory 资源:

          node1# crm configure 
             crm(live)configure# primitive eDirectory ocf:heartbeat:eDir88 operations $id="eDirectory-operations" op monitor interval="15s" enabled="true" timeout="60s" on-fail="restart" start-delay="30s" params eDir_config_file="/etc/opt/novell/eDirectory/conf/nds.conf" meta resource-stickiness="100" target-role="Started"   crm(live)configure# edit eDir_group 
        

在 vi 编辑器中修改组,按如下所示在 clusterip 的后面添加文本“eDirectory”,然后保存您的更改:

group eDir_group clusterip eDirectory \ 

meta is-managed="true" target-role="Started" 

crm(live)configure# show   crm(live)configure# commit 

在 PaceMaker GUI 主窗口中,单击“管理”选项卡,然后启动 eDir_group(如果资源未在运行中的话)。下图显示了群集设置中已启动且正在运行的资源。