天天看点

pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

接着上一篇的任务继续,我们现在已经配置好了一个VIP资源,那这样作为实验还是远远不够看的,所以这篇我们继续来讲述如何配合vip来使用http服务,来达到一个简单的高可用web集群。

Part1.Apache

note:现在我们有了一个基本的功能齐全的三节点集群,我们已经可以往里面添加一些真的服务了。我们准备启动一个Apache服务,因为它是许多集群都要用的,并且相对来说比较容易配置。

1.在node-1,node-2,node-3上安装httpd服务。

#yum install -y httpd           

同样的为了检测Apache服务器,我们要安装wget工具。

#yum install -y wget           

Part2.准备工作

首先我们为Apache创建一个主页,apache默认的docroot是/var/www/html,所以我们在这个目录下建立个主页。

#vim /var/www/html/index.html
<html>
<body> pacemaker test site --node-1</body>
<img src="./20170426191852.gif">
</html>           

这里为了区别显示在node-2和node-3上写页面的时候site处修改为node-2和node-3。

Part3.开启Apache status URL

为了监控Apache实例的健康状态,并在它挂掉的时候恢复Apache服务,资源agent会假设server-status URL是可用的。查看/etc/httpd/conf/httpd.conf

<Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
</Location>           

Part4.更新配置文件

现在,apache已经可以添加到集群中了。我们设定这个资源叫做WebSit。我们需要用一个叫做apache的OCF脚本,这个脚本在heartbeat这个名字空间里,唯一一个需要设定的参数就是Apache的主配置文件路径,并且我们告诉集群每一分钟检测一次Apache是否运行。

#crm configure primitive WebSit ocf:heartbeat:apache params configfile=/etc/httpd/conf/httpd.conf op monitor interval="1min"           
pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

Part5.确保资源在同一个节点运行

为了减少每个机器的负载,Pacemaker会智能地尝试将资源分散到各个节点上面。然而我们可以告诉集群某两个资源是有联系并且要在同一个节点运行(或不同节点运行)。这里我们告诉集群WebSite只能在有ClusterIP的节点上运行。如果ClusterIP在那个节点都不在了,那么WebSite也不能运行。

#crm configure colocation website-with-ip INFINITY: WebSite ClusterIP
crm(live)configure# show
node 1: node-1
node 2: node-2
node 3: node-3
primitive ClusterIP IPaddr2 \
    params ip=10.100.109.151 cidr_netmask=32 \
    op monitor interval=30s
primitive WebSit apache \
    params configfile="/etc/httpd/conf/httpd.conf" \
    op monitor interval=1min
order apache-after-ip Mandatory: ClusterIP WebSit
location cli-prefer-ClusterIP ClusterIP role=Started inf: node-3
location prefer-node-1 WebSit 50: node-1
colocation website-with-ip inf: WebSit ClusterIP
property cib-bootstrap-options: \
    have-watchdog=false \
    dc-version=1.1.15-11.el7_3.4-e174ec8 \
    cluster-infrastructure=corosync \
    cluster-name=my_cluster \
    stonith-enabled=false \
    no-quorum-policy=ignore
rsc_defaults rsc-options: \
    resource-stickiness=100
           
pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

Part6.控制资源的启动停止顺序

当Apache启动了,它跟可用的IP绑在一起了。他不会知道我们后来添加的IP,所以我们不仅需要控制他们在相同的节点运行,也要确保ClusterIP在WebSit之前就启动了。我们用添加ordering约束来达到这个效果。我们需要给这个order去个名字(apache-after-ip之类描述性的),并指出他是托管的(这样当ClusterIP恢复了,同时会触发WebSite的恢复),并且写明了这两个资源的启动顺序。

pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

Part7.指定优先的Location

pacemaker并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要泡在上面之类的规则。为了达到这个效果我们创建localtion约束。同样的,我们给他去一个描述性的名字(prefer-node-1),指明我们想在上面跑WebSite这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:

#crm configure location prefer-node-1 WebSit 50: node-1           

note:这个即便设定了优先值也要和资源粘性值相比,如果优先值小于粘性值的话资源还是会在可用的粘性值搞得节点运行。

Part8.在集群中手动地移动资源

经常性的会有管理员想要无视集群然后强制把资源移动到指定的地方。底层的操作就像我们上面创建localtion约束一样。只要提供资源和目标地址,我们会补全剩余部分。

#crm resource move WebSit node-2           
pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群
#crm_mon用来监控           
pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群
pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

在做完手动迁移之后我们再去看配置文件可以看到多了条规则:

pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

Part9.把控制权交还给集群

当我们完成那些要求要资源移动到node-3的操作,我们可以用unmove命令把集群恢复到强制移动前的状态。因为我们之前配置了默认资源粘性值,恢复了以后资源还是会在node-1上面。

#crm resource unmove WebSit
#crm configure show           
pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

可以看到自动生成的约束已经没有了。如果我们查看集群的状态,我们也可以看到就如我们所预期的,资源还是在node-1上跑。

我这里把IP的资源规则也移除了,查看状态如下:

pacemaker配置Apache服务Part1.ApachePart2.准备工作Part3.开启Apache status URLPart4.更新配置文件Part5.确保资源在同一个节点运行Part6.控制资源的启动停止顺序Part7.指定优先的LocationPart8.在集群中手动地移动资源Part9.把控制权交还给集群

继续阅读