内容


为 Linux on Power 创建高可用性设置

IBM Power 服务器上的分布式复制块设备 (DRBD)

Comments

简介

本文主要探讨了 Linux on Power 虚拟机 (VM) 或逻辑分区 (LPAR) 的高可用性 (HA)、灾难恢复 (DR) 与故障转移相关主题。本文中所描述的解决方案适用于为 IBM® POWER8® 及之后基于处理器的服务器提供的所有 Linux 分发版。该解决方案中所使用的开源软件包括可用于所有受支持分发版的分布式复制块设备 (DRBD) 和脉动信号。我们使用了 IBM Power® 服务器上受支持的 Ubuntu V16.04 来说明和验证该解决方案。

对于该解决方案,我们使用 DRBD 的原因在于它是基于软件的、无共享的复制存储解决方案,可在主机之间制作硬盘、分区、逻辑卷等块设备内容的镜像。DRBD 可实时制作数据镜像。在应用程序以透明方式修改设备上的数据时,持续不断地进行复制。可同步或异步制作镜像。对于同步镜像,当所有已连接主机上的写操作全部完成后,应用程序将收到写操作完成通知。对于异步镜像,当本地写操作完成后,应用程序将收到写操作完成通知,此时通常写操作尚未传播至其他主机。

脉动信号是一个开源程序,可向客户机服务器提供集群基础架构功能,包括集群成员资格和消息传递,这是 HA 服务器基础架构中的关键组成部分。脉动信号通常与像 DRBD 这样的集群管理器结合使用,实现完整的 HA 设置。

本文演示了如何通过使用 DRBD、脉动信号和浮动 IP 来创建含有两个节点的 HA 集群。

目标

通读本文后,您可以成功地在主动/被动配置中设置一个包含两台 Ubuntu 16.04 服务器的 HA 环境。这可通过指定指向主服务器或活动服务器(除非检测到故障)的浮动 IP 来实现,我们的用户将通过此浮动 IP 来访问其服务或网站。如果发生故障,脉动信号服务会检测到主服务器不可用,此时辅助服务器将自动运行脚本,将浮动 IP 重新分配给自身。因此,后续指向此浮动 IP 的网络流量将被定向至辅助服务器,该辅助服务器将充当活动服务器,直到主服务器重新变为可用为止(此时,主服务器会将浮动 IP 重新分配给自身。可以通过禁用“自动回退”选项来禁止主节点接管此角色)。

需求

必须完成以下设置后,才能继续进行故障转移:

  • 安装两台已安装 Ubuntu 16.04 的服务器/VM。这些服务器/VM 将充当应用程序和 Web 服务的主服务器和辅助服务器。
  • 一个浮动 IP,充当应用程序和 Web 服务的 IP。
  • 为每个 VM 额外提供一个磁盘,用于安装应用程序和 Web 服务。不必共享。

安装 DRBD

首先,我们需要在两台服务器上安装 DRBD,并在空闲磁盘上创建资源组,这些磁盘不必在 VM 之间共享。这样一来,解决方案便可使用本地磁盘,而无需使用存储区域网络 (SAN) 磁盘。

可将 DRBD 程序包与其从属程序包一起安装。需在这些服务器上运行以下命令来安装 DRBD。

 apt-get install drbd* -y
图 1. 安装 DRBD
apt-get install "linux-image-extra-`uname -r`"

这是用于启用 DRBD 内核模块的从属程序包

图 2. 安装内核附加程序包

安装脉动信号

下一步将在两台服务器上安装脉动信号安装脉动信号的最简单方法是使用 apt-get 命令。

 apt-get install heartbeat
图 3. 安装脉动信号程序包

成功安装脉动信号程序包后,需进行配置,进而实现高可用性。

完成安装 DRBD 和 HA 所需的程序包之后,即可开始 DR 和 HA 配置。首先将配置 DRBD,然后配置脉动信号。

配置 DRBD

要配置 DRBD,就需要一个存储资源(磁盘、目录或安装点),存储资源将被定义为 DRBD 资源组(在此处示例中,将其称为 r0)。此资源包含发生故障转移时需要从主节点迁移至辅助节点的所有数据。

我们需要在 /etc/drbd.d/r0.res 文件下定义资源组 r0。r0.res 文件应类似如下所示:

resource r0 {
     device    /dev/drbd1;
     disk      /dev/sdc;
     meta-disk internal;
     on drbdnode1 {
          address   172.29.160.151:7789;
     }
     on drbdnode2 {
          address   172.29.160.51:7789;
     }
}

我们需要将该资源定义为设备名称 /dev/drbd1,在此处示例中,我们使用磁盘 /dev/sdc 作为存储设备。请注意,HA 设置中涉及的所有节点(在此示例中有 2 个节点)都需要在 r0.res 文件中进行定义。

在两个所涉节点上创建此文件后,需运行以下命令。在此处示例中,我们起初将 drbdnode1 作为主节点,并将 drbdnode2 作为备用节点。因此,一旦 drbdnode1 发生故障,drbdnode2 就应接管工作,成为主节点。

在两个节点上运行以下命令。

modprobe drbd
/etc/init.d/drbd start
图 4. 为 DRBD 创建内核模块

现在,使用以下命令在 drbdnode1 上初始化 r0 资源组:

drbdadm create-md r0
图 5. 创建元数据

然后,在相应的节点上运行以下命令,将 drbdnode1 定义为主节点,并将 drbdnode2 定义为辅助节点:

drbdadm primary r0
drbdadm secondary r0
图 6. 主节点概述
图 7. 辅助节点概述

之后,将这些节点分别设置为主节点和辅助节点,启动 drbd 资源组。需要通过执行此操作使 drbd 资源成为活动资源,且随时可用。

使用以下命令在主节点上创建文件系统:

root@drbdnode1:~# mkfs.ext4 /dev/drbd1

然后,在主节点上安装磁盘。

root@drbdnode1~# mount /dev/drbd1 /data
图 8. 检查文件系统是否已安装到位

现在,DRBD 配置已完成。接下来,需要配置脉动信号。我们需要脉动信号以便在发生任何灾难时自动执行故障转移。

配置脉动信号

为使所需集群正常启动并运行,必须在 /etc/ha.d 中设置以下脉动信号配置文件,两台服务器上的配置文件必须完全相同:

  • ha.cf: 包含脉动信号集群(包括其成员节点)的全局配置。需要此文件才能使两个节点发现应为脉动信号监视的网络接口和浮动 IP。
  • authkeys: 包含安全密钥,使节点能够向集群进行认证。
  • haresources: 指定由集群和充当服务首选所有者的节点管理的服务。请注意,在使用 DRBD 资源组的设置中不使用此文件。

创建 ha.cf 文件

在两台服务器上,打开 /etc/ha.d/ha.cf:

vi /etc/ha.d/ha.cf

需要添加集群中每个节点的详细信息,如图 9 中所示。

图 9. 复查 ha.cf 文件

接下来,将设置集群授权密钥。

创建 authkeys 文件

授权密钥用于允许集群成员加入集群。可仅出于此目的生成一个随机密钥。

节点上,运行以下命令以在环境变量中生成合适的授权密钥,此授权密钥名为 AUTH_KEY

if [ -z "${AUTH_KEY}" ]; then
  export AUTH_KEY="$(command dd if='/dev/urandom' bs=512 count=1 2>'/dev/null' \
      | command openssl sha1 \
      | command cut --delimiter=' ' --fields=2)"
fi

然后,使用以下命令创建 /etc/ha.d/authkeys 文件:

auth1
1 sha1 $AUTH_KEY
图 10. 生成 authkeys

确保此文件仅可供 root 用户读取:

chmod 600 /etc/ha.d/authkeys

现在,将 /etc/ha.d/authkeys 文件从主节点复制到辅助节点。

辅助服务器上,请务必设置 authkeys 文件的许可权:

chmod 600 /etc/ha.d/authkeys

两台服务器应具有完全相同的 /etc/ha.d/authkeys 文件。

创建 haresources 文件

haresources 文件应包含集群中所涉主机的详细信息。首选主机即在节点可用时应运行关联服务的节点。如果首选主机可用,即集群无法访问该主机,那么其余某个节点将接管工作。换言之,如果主服务器发生故障,辅助服务器就会接管工作。

在两台服务器上,使用首选编辑器打开 haresources 文件。我们将使用 vi。

 vi /etc/ha.d/haresources

现在,在此文件中添加以下行,替换您的主节点名称:

primary floatip

这会将服务器配置为当前未定义的 floatip 服务的首选主机。

图 11. 复查 haresources 文件

配置浮动 IP

现在,我们将在主 VM 上配置浮动 IP,其中将首次运行此服务。浮动 IP 每次仅在一台服务器上处于活动状态。此 IP 将用于托管应用或 Web 服务,在发生故障转移的情况下,我们会将此 IP 移至其他服务器。在以下示例中,将在 drbdnode1 上配置浮动 IP,如果发生故障转移,需将其移至 drbdnode2

ifconfig ibmeth0:0 9.126.160.53 netmask 255.255.192.0 up
图 12. 确认浮动 IP 是否已分配

测试高可用性

下一步是启动 DRBD,并按如下顺序逐一启动脉动信号服务。

在主节点上运行以下命令:

drbdadm primary r0

在辅助节点上运行以下命令:

drbdadm secondary r0

使用以下命令在两个集群节点上启动脉动信号服务:

service heartbeat start

现在,检查主 VM 和辅助 VM,在两个 VM 上运行 drbd-overview 命令。

图 13. 检查 DRBD 状态

完成主节点和辅助节点设置并验证服务按预期运行后,启动故障转移测试。

您可以在以下场景中执行故障转移测试:

  • 使用 rebootshutdown –r 命令重新引导主节点。
  • 使用 halt 命令暂停主节点。
  • 使用 service heartbeat stop 命令停止主节点上的脉动信号服务。

运行以上任一场景后,应使用 drbd-overview 命令监视故障转移,数秒后,即可发现辅助节点已接管主节点角色,并且所有服务都在此节点上启动并运行。您的浮动 IP 也将随服务故障转移一起迁移。

图 14. 故障转移成功

图 14 显示了 drbdnode2 已接管工作,成为主节点,这表明故障转移成功。

结论

现在,我们已通过使用 DRBD、脉动信号和浮动 IP 设置了含有两个节点的 HA 集群。这是通过使用 Ubuntu 操作系统实现的,但您也可以使用相同的步骤在 IBM POWER8 支持的任何 Linux 分发版上配置自己的服务并实现高可用性,这些分发版同样支持 DRBD 和脉动信号程序包。

其他参考资料


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=1056893
ArticleTitle=为 Linux on Power 创建高可用性设置
publish-date=01172018