如何在HA群集中创建群集资源(带有示例)
在我的上一篇文章中,我解释了有关高可用性群集体系结构以及使用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开始群集节点。
在我的下一篇文章中,我将分享在集群中配置资源约束和资源组的步骤。