配置资源组

在大多数情况下,让集群运行单个资源并不是理想的情况。
在一个节点上挂载带有 Web 内容的文件系统,在第二个节点上启动一个 httpd 实例,并将浮动 IP 地址分配给第三个节点并不会创建消费者可以使用的服务。

资源可以组合成资源组,这将强制组中的所有资源在同一节点上同时启动和停止,为消费者创建集群服务。

创建集群 Apache 服务

对于集群 Apache Web 服务器,至少需要三种不同的资源:

  • 具有来自公共网络的 IP 地址的(浮动)IP 地址资源,用于访问 Apache Web 服务器提供的内容。
  • 一种文件系统资源,提供要由 Apache Web 服务器提供的内容。 (理论上,也可以在所有节点上拥有所有 Web 内容,但这需要一种机制来同步内容。)
  • 控制 httpd 系统服务的 apache 资源。

实现集群 Web 服务的第一步是定义 IP 地址资源。
为了创建名为 webip 的集群资源,使用浮动 IP 地址为 172. 25. 99. 80/24 的资源代理 IPaddr2 作为 myweb 资源组的一部分,执行:

# pcs resource create webip IPaddr2 ip=172.25.99.88 cidr_netmask=24 --group myweb

注意:Red Hat High Availability Add-on 附带两个 IP 地址资源:IPaddr 和 IPaddr2.
在 Red Hat Enterprise Linux 7 之前的版本中,IPaddr 使用 net-tools 基础架构,例如 ifconfig 命令。
在 Red Hat Enterprise Linux 7 中,IPaddr 是 IPaddr2 的符号链接,它使用 ip 命令来管理浮动 IP 地址。

Web 服务器还需要访问托管 Web 服务器内容的共享存储。
为了为 NFS 挂载工作站创建文件系统资源,workstation.storage1.example.com:/var/www 上的 /exports/www,请执行:

# pcs resource create webfs Filesystem \
>	device=workstation.storage1.example.com:/exports/www \
> 	directory=/var/www \
>   fstype=nfs \
>	options=ro \
>   --group myweb

注意:在集群节点上启用 SELinux 后,集群管理员必须确保任何挂载的文件系统的内容都可以被相关的守护进程使用。
对于块设备,这可能需要设置适当的 SELinux 上下文;对于 NFS,这意味着设置相关的 SELinux 布尔值,例如 httpd_use_nfs=1.

myweb 资源组需要一个 Apache 资源来共享文档根目录内容。
为此,需要安装 httpd 包,并且 firewalld 需要允许访问服务可以迁移到的每个集群节点上的相关端口。

集群脚本可以通过定期监控状态 URL 来监控 Web 服务器的可用性。
为了运行监控,wget 包必须安装在所有为被监控的 Apache Web 服务器提供服务的集群节点上。
状态 URL 必须只能从 127.0.0.1 获得。
要创建所需的状态 URL,以下部分必须存在于 httpd 配置中。
建议使用 /etc/httpd/conf.d 中的单独文件。

<Location /server-status>
SetHandler server-status 
Require ip 127.0.0.1 
Require all denied 
</Location>

也可以指定其他网址;例如,托管的 Web 应用程序的主页或者内部状态页可用于验证可用性。

然后可以使用 apache 资源代理创建名为 webserver 的资源,并使用 httpd 配置文件 /etc/httpd/conf/httpd.conf 和状态 URL http://127.0.0.1/server-status 添加到 myweb 资源组,这增加了对资源的监控。

# pcs resource create webserver apache \
>	configfile="/etc/httpd/conf/httpd.conf" \
>   statusurl="http://127.8.8.1/server-status" --group myweb

调整资源操作

每个集群资源都有三个操作: start 、 stop 和 monitor 。

pcs resource show webserver 
Resource: webserver (class=ocf provider=heartbeat type=apache) 
Attributes: configfile=/etc/httpd/conf/httpd.conf statusurl=http://127.0.0.1/server-status 
Operations: start interval=0s timeout=60 (apachefs-start-timeout-60) 
            stop interval=0s timeout=60 (apachefs-stop-timeout-60) 
            monitor interval=20 timeout=40 (apachefs-monitor-interval-20)

系统管理员可以在创建资源时通过添加 op 操作,后跟一个或者多个操作选项来调整操作参数:

interval=value

定义监控检查之间的时间。
默认值取自资源代理。
如果资源代理未提供默认值,则该值设置为 60s 。

timeout=value

定义如果操作在达到超时之前未完成,则在将操作声明为失败之前要等待的时间量。

on-fail=action

操作失败时采取的操作:

  • ignore 忽略操作的任何失败。
  • 块停止执行任何操作。如果集群没有配置防护,这是停止操作失败的默认操作。
  • stop 停止资源在集群中处于活动状态。这是启动和监视操作失败的默认操作。
  • restart 停止并启动资源。
  • 栅列围住资源失败的节点。这是配置了防护的集群的停止操作失败的默认操作。
  • 备用将所有资源从运行资源的集群节点移开。

要创建监控间隔为 20 秒且超时为 30 秒的网络服务器资源。
执行:

# pcs resource create webserver apache \
>	configfile="/etc/httpd/conf/httpd.conf" \
>	statusurl=0http://127.8.8.1/server-status" --group myweb \
>   op monitor interval=28s timeout=30s

可以分别使用 pcs resource op add 和 pcs resource op remove 命令添加和删除资源操作。
要从网络服务器资源中删除现有的监控操作,请执行:

# pcs resource op remove webserver monitor

为webserver资源的监控操作设置新参数,监控间隔为10秒,监控超时为15秒,如果监控操作失败导致节点被fence,执行:

# pcs resource op add webserver monitor interval=10s timeout=15s onfail=fence

注意:如果资源无法启动。
资源失败计数将设置为 INFINITY ,这会阻止资源永远在节点上启动。
可以使用 pcs resource failcount show 显示现有的失败计数。
要对失败原因进行故障排除,请查看 pcs resource debug-start name 的输出,该输出显示资源启动尝试的错误消息,然后修复问题。
修复后,必须重置资源的故障计数,以便允许资源在该节点上再次启动: pcs resource failcount reset resourcename node 。

在资源组中添加和移除资源

可以将现有资源添加到资源组。
为了那个原因。
集群管理员必须执行 pcs resource group add groupname name。
如果资源已经是某个组的成员,它将从该组中删除,然后添加到命令行中指定的组中。
如果目标资源组不存在,则会自动创建。
要将资源 myresource 添加到 mygroup 资源组,请执行:

# pcs resource group add mygroup myresource

可以使用 pcs resource group remove groupname name 从资源组中删除属于资源组的资源。
然后该资源仍然存在于集群中,但不再是资源组的一部分。
如果从资源组中删除了最后一个资源,则该资源组也将被删除。
要从 mygroup 资源组中删除 myresource 资源,请执行:

# pcs resource group remove mygroup myresource
欢迎来到之路教程(on itroad-com)

资源排序

在某些情况下,添加到组的资源之间可能存在依赖关系。
例如,配置为侦听特定 IP 地址的 Web 服务器将无法启动,直到在节点上配置该 IP 地址。
通常,资源将按照它们添加到组的顺序启动,并以相反的顺序停止。

为了影响排序,可以将选项 -before resourceid 和 -after resourceid 添加到 pcs resource create 和 pcs resource group add 以影响启动资源的顺序。

如何在 Pacemaker 集群中创建和配置资源组
日期:2020-09-17 00:13:27 来源:oir作者:oir