如何在HA群集中创建群集资源(带有示例)

时间:2020-01-09 10:37:52  来源:igfitidea点击:

在我的上一篇文章中,我解释了有关高可用性群集体系结构以及使用3个虚拟机在CentOS 7 Linux计算机上使用起搏器和corosync配置HA群集的步骤。

现在,下一步是创建一个"集群资源",并将其添加到我们的集群节点。
但是在开始使用命令和示例之前,让我们了解一些基本术语。

什么是群集资源?

群集资源是由群集管理的任何内容。
因此,群集资源可以是IP地址,Web服务,也可以是群集可以自动执行的测试,例如在发生某些情况时向用户发送电子邮件

是什么使群集资源与众不同?

高可用性的目的是确保重要资源始终可用。
为了实现该目标,我们必须确保资源不是由节点的初始化系统启动的,而是由集群管理的。
这意味着我们必须从启用了systemd的服务中取出资源,以便群集是唯一负责启动它们的软件。

要创建资源,我们需要使用"资源代理"(RA)。
资源代理就像服务加载脚本一样,就像在System-V运行级别中使用的一样,但是服务脚本也包含集群参数。
资源代理随群集一起安装,并且细分为不同的类。

  • LSB(Linux标准基础)

  • OCF(开放式集群框架)

  • systemd

  • Heartbeat

  • Stonith

资源配置存储在" CIB"(集群信息库)中

在开始配置资源之前,我们还应该了解不同类型的资源

  • "原始"它是可以由集群管理的单一资源。
    也就是说,该资源只能启动一次。
    例如,一个IP地址可以是原始的,并且该IP地址应该仅在集群中运行一次

  • "克隆"它应该同时在多个节点上运行,并由集群管理

  • Multi Stake(aka master/slave)这仅适用于某些特定资源,其中一个实例作为主机运行,另一个实例作为从属运行,而群集管理谁是主机,谁管理从属。

例如:DRBD(分布式复制块设备)

  • Group可以顾名思义就是一组原始的或者一组克隆的。
    其中我们将多个资源放在一起,就像一个高可用性的Web服务器一样,其中包括HA IP地址,共享文件系统和它自己的Web服务。
    因此,我们可以在一个组中管理所有这些资源。
    通过将它们放在一组中,我们可以定义资源按定义的顺序启动。
    组将确保自动应用某些约束,例如有序约束,共置约束。

资源粘性

默认的"资源粘性"定义了恢复原始情况后资源应该去的地方。

现在想象一下,我们有一个三节点集群,其中" node1"当前正在运行数据库。
node1发生故障,并且由于数据库已配置为群集资源,它将故障转移到另一个节点,并且可能是node2. 因此,一旦在" node2"上再次启动数据库,用户将连接到该数据库," node1"又回来了。

这里的"资源黏性"定义了在" node1"完全恢复其操作之后要对数据库资源执行的操作。
我们可以定义资源迁移回" node1",也可以定义资源停留在当前运行的位置

推荐"后期",因为在集群中,我们应尽量避免资源的迁移。

用于添加新集群资源的语法如下:

pcs resource create <resource_name> <resource_type> <resource_options>

说明:

resource_name参数是唯一的群集资源名称。

resource_type参数是带有资源类和资源ID的资源的全名。

resource_options参数包含与资源一起使用的可用选项。

以下命令提供有关资源创建的更多信息:

# pcs resource create --help

Pacemaker支持六个"资源类",如下所示:

  • OCF(开放集群框架):这是初始化脚本的LSB约定的扩展,并且是在集群中使用的首选资源类

  • LSB(Linux标准库):这些是在/etc/init.d目录中找到的标准Linux初始化脚本。

  • Upstart:这是使用upstart的发行版的资源类

  • Systemd:这是使用systemd命令的发行版的资源类

  • Fencing:这是专门用于与围栏相关的资源的资源类

  • 服务:这是在群集节点使用systemd,upstart和lsb命令的混合群集环境中使用的资源类

  • Nagios:这是专门用于Nagios插件的资源类

说明:

" OCF"资源类是根据操作必须返回的退出代码的严格定义而设计的,因此,它是集群环境中最好和最常用的资源类。

我们可以使用以下命令获取受支持的OCF资源类的完整列表:

# pcs resource list heartbeat

假设我们要配置一个IPv4集群的IP地址。
从OCF资源列表中可以看到,我们可以选择两个IP地址OCF资源代理,如下所示:

  • ocf:heartbeat:Ipaddr:管理虚拟IPv4和IPv6地址(特定于Linux的版本)

  • ocf:heartbeat:IPaddr2:管理虚拟IPv4和IPv6地址(特定于Linux的版本)

说明:

两者之间的区别在于," Ipaddr"参数使用" ifconfig"命令创建接口,而" IPaddr2"参数使用" ip"命令创建接口。

在CentOS 7上运行时,首选资源是IPaddr2参数。

所有资源选项都有详细记录和解释。
阅读资源文档将使我们对可能更喜欢使用的资源选项有所了解。
我们可以使用以下命令获取有关ocf:heartbeat:IPaddr2资源和选项的更多详细信息:

# pcs resource describe ocf:heartbeat:IPaddr2

我们可以添加IPv4群集IP资源,并使用以下命令将其绑定到网络接口enp0s8:

[root@node1 ~]# pcs resource create apache-ip ocf:heartbeat:IPaddr2 ip=10.0.2.50 cidr_netmask=24

查看资源

[root@node1 ~]# pcs resource show
 apache-ip      (ocf::heartbeat:IPaddr2):       Started node1.example.com

说明:

pcs resource create:告诉集群我们正在创建一个新的集群资源apache-ip:这是唯一的集群资源名称ocf:heartbeat:IPaddr2:这是OCF集群资源代理ip = 10.0. 2.50:这是群集IP地址。
确保这是一个免费IP,因为它将充当VIPcidr_netmask = 24:这是IP地址网络掩码

在以下代码片段中,我们可以看到命令pcs status的输出。

[root@node1 ~]# pcs status
Cluster name: mycluster
Stack: corosync
Current DC: node2.example.com (version 1.1.18-11.el7_5.3-2b07d5c5a9) - partition with quorum
Last updated: Sat Oct 27 09:11:27 2016
Last change: Sat Oct 27 09:11:15 2016 by root via cibadmin on node1.example.com
3 nodes configured
2 resources configured
Online: [ node1.example.com node2.example.com node3.example.com ]
Full list of resources:
 apache-ip      (ocf::heartbeat:IPaddr2):       Started node1.example.com
Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

说明:

如我们在上一个屏幕快照中所见,在"资源的完整列表"部分下,名为" Cluster IP"的群集资源(带有" ocf:heartbeat:IPaddr2"资源代理)已添加到群集并在" node1.example.com"上启动群集节点。

我们可以继续添加Apache Web服务器群集资源。
查看OCF资源代理列表,我们可以找到以下Apache OCF资源代理:

  • ocf:heartbeat:apache:管理一个Apache Web服务器实例

我们可以使用以下命令添加Apache Web服务器集群资源:

[root@node1 ~]# pcs resource create WebServer ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf

说明:

pcs resource create:告诉集群我们正在创建一个新的集群资源WebServer:这是唯一的集群资源名称ocf:heartbeat:apache:这是OCF集群资源代理configfile =/etc/httpd/conf/httpd.conf:这是要使用的Apache配置文件

[root@node1 ~]# pcs resource show
 apache-ip      (ocf::heartbeat:IPaddr2):       Started node1.example.com
 WebServer      (ocf::heartbeat:apache):        Started node1.example.com

上一条命令的结果应为新的Apache Web服务器群集资源,如下所示。
在以下屏幕截图中,我们可以看到" pcs status"命令的输出。

[root@node1 ~]# pcs status
Cluster name: mycluster
Stack: corosync
Current DC: node2.example.com (version 1.1.18-11.el7_5.3-2b07d5c5a9) - partition with quorum
Last updated: Sat Oct 27 09:11:27 2016
Last change: Sat Oct 27 09:11:15 2016 by root via cibadmin on node1.example.com
3 nodes configured
2 resources configured
Online: [ node1.example.com node2.example.com node3.example.com ]
Full list of resources:
 apache-ip      (ocf::heartbeat:IPaddr2):       Started node1.example.com
 WebServer      (ocf::heartbeat:apache):        Started node1.example.com
Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

说明:

如我们在上一幅屏幕快照的"资源的完整列表"部分中所见,将名为WebServer的群集资源和具有ocf:heartbeat:apache资源代理的资源添加到了群集中,并从node1.example.com开始群集节点。

在我的下一篇文章中,我将分享在集群中配置资源约束和资源组的步骤。