1.实验环境
系统环境:rhel6.4-i386
软件包:crmsh-1.2.6-4pssh-2.3.1
2.配置实验环境
提供两个节点:
172.16.15.8stu_yxm8.mageduyxm8
172.16.15.9stu_yxm9.mageduyxm9
设定两个节点(yxm8yxm9注意:保证两节点间可以通过IP地址和主机名相互解析)可以基于密钥进行ssh通信,实现双机互信。
yxm8: # ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub root@yxm9 yxm9: # ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub root@yxm8
下载安装软件包
rpm -ivh crmsh-1.2.6-4.el6.i686.rpm pssh-2.3.1-2.el6.i686.rpm
注意:安装过程出现的依赖关系问题请根据提示自行解决。
3.修改主配置文件(yxm8)
# cd /etc/corosync # cp corosync.conf.example corosync.conf #vim corosync.conf totem { #定义心跳机制 version: 2 secauth: on threads: 0 interface { #心跳信息传递接口 ringnumber: 0 bindnetaddr: 172.16.0.0 #绑定的网络地址 mcastaddr: 226.94.15.14 mcastport: 5405 ttl: 1 } } logging { #定义日志信息 fileline: off to_stderr: no to_logfile: yes to_syslog: yes logfile: /var/log/cluster/corosync.log debug: off timestamp: on logger_subsys { subsys: AMF debug: off } } amf { mode: disabled } service { #将pacemaker作为插件 ver: 0 name: pacemaker #use_mgmtd: yes } aisexec { user: root group: root }
生成节点间通信用到的密匙文件:
#corosync-keygen (此处可以选择安装软件生成大量随机数)
将corosync和authkey复制至yxm9:
# scp -p corosync authkey yxm9:/etc/corosync/
分别为两个节点创建corosync生成的日志文件所在目录:
# mkdir /var/log/cluster # ssh yxm9 'mkdir /var/log/cluster'
4.启动服务,使用资源管理器配置、管理资源
启动服务
#service corosync start #启动服务 # ssh yxm9 corosync start
查看节点状态
#crm status
禁用stonith:因为corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默认配置目前尚不可用。
# crm configure property stonith-enabled=false
查看当前的配置信息: # crm configure show
为集群添加集群资源,查看当前集群系统所支持的类型:
#crmraclasses
heartbeat
lsb
ocf/heartbeatpacemaker
stonith
查看某种类别下的所用资源代理的列表:
# crm ra list lsb # crm ra list ocf heartbeat # crm ra list ocf pacemaker # crm ra list stonith
5.搭建HAweb集群
创建一个IP地址资源:
# crm configure primitive webip ocf:heartbeat:IPaddr params ip=172.16.15.199 可以通过如下命令查看看资源是否已经在节点yxm8上运行 #crm status [root@stu_yxm8 ~]# crm status Last updated: Sun Oct 27 14:14:36 2013 Last change: Fri Oct 25 09:20:57 2013 via cibadmin on stu_yxm8.magedu Stack: classic openais (with plugin) Current DC: stu_yxm9.magedu - partition with quorum Version: 1.1.8-7.el6-394e906 2 Nodes configured, 2 expected votes 0 Resources configured. Online: [ stu_yxm8.magedu stu_yxm9.magedu ]
也可以在yxm8上执行ifconfig命令看到此地址已经在eth0的别名上生效:
eth1:0 Link encap:Ethernet HWaddr 00:0C:29:A6:AB:AF inet addr:172.16.15.199 Bcast:172.16.255.255 Mask:255.255.0.0
忽略quorum:
可以通过如下的命令来修改忽略quorum(法定票数)不能满足的集群状态检查:(在两个节点上实验,由于节点的局限性达不到法定票数,一个节点出现故障后另一个节点由于达不到法定票数而不能实现资源正常转移,因此在此不检查法定票数)。
# crm configure property no-quorum-policy=ignore
可以通过以下方式为资源指定默认黏性值:(为防止故障节点重新启动重新夺走资源)
资源黏性值范围及其作用:
0:这是默认选项。资源放置在系统中的最适合位置。这意味着当负载能力“较好”或较差的节点变得可用时才转移资源。此选项的作用基本等同于自动故障回复,只是资源可能会转移到非之前活动的节点上;
大于0:资源更愿意留在当前位置,但是如果有更合适的节点可用时会移动。值越高表示资源越愿意留在当前位置;
小于0:资源更愿意移离当前位置。绝对值越高表示资源越愿意离开当前位置;
INFINITY:如果不是因节点不适合运行资源(节点关机、节点待机、达到migration-threshold或配置更改)而强制资源转移,资源总是留在当前位置。此选项的作用几乎等同于完全禁用自动故障回复;
-INFINITY:资源总是移离当前位置;
在yxm9上定义资源粘性:
# crm configure rsc_defaults resource-stickiness=100
测试web服务:
结合已经配置好的IP地址资源,将此集群配置成为一个active/passive模型的web(httpd)服务集群
在两个节点上分别启动httpd服务:
#service httpd start
提供一个测试页面,确保服务可以正常访问后,使其开机不能自动启动
#chkconfig httpd off
接下来我们将此httpd服务添加为集群资源。将httpd添加为集群资源有两处资源代理可用:lsb和ocf:heartbeat,为了简单起见,我们这里使用lsb类型:
首先可以使用如下命令查看lsb类型的httpd资源的语法格式:
# crm ra info lsb:httpd start and stop Apache HTTP Server (lsb:httpd) The Apache HTTP Server is an efficient and extensible \ server implementing the current HTTP standards. Operations' defaults (advisory minimum): start timeout=15 stop timeout=15 status timeout=15 restart timeout=15 force-reload timeout=15 monitor timeout=15 interval=15
接下来新建资源WebSite:
# crm configure primitive webserver lsb:httpd 查看配置文件中生成的定义 [root@stu_yxm8 ~]# clear [root@stu_yxm8 ~]# crm configure crm(live)configure# show node stu_yxm8.magedu node stu_yxm9.magedu primitive webip ocf:heartbeat:IPaddr \ params ip="172.16.15.199" primitive webserver lsb:httpd colocation websserver-with-webip inf: webserver webip order webserver-after-webip inf: webip webserver property $id="cib-bootstrap-options" \ dc-version="1.1.8-7.el6-394e906" \ cluster-infrastructure="classic openais (with plugin)" \ expected-quorum-votes="2" \ no-quorum-policy="ignore"
查看资源启用状态:
[root@stu_yxm9 ~]# crm status Last updated: Sun Oct 27 14:14:18 2013 Last change: Fri Oct 25 09:20:57 2013 via cibadmin on stu_yxm8.magedu Stack: classic openais (with plugin) Current DC: stu_yxm9.magedu - partition with quorum Version: 1.1.8-7.el6-394e906 2 Nodes configured, 2 expected votes 2 Resources configured. Online: [ stu_yxm8.magedu stu_yxm9.magedu ] webip (ocf::heartbeat:IPaddr): Started stu_yxm9.magedu webserver (lsb:httpd): Started stu_yxm9.magedu
资源约束
排列约束
对于资源webip、webserver可能会运行于不同节点的问题,可以通过以下命令来解决:
# crm configure colocation websserver-with-webip INFINITY: webserver webip
顺序约束
接着,为确保WebSite在某节点启动之前得先启动webip,这可以使用如下命令实现:
# crm configure order webserver-after-webip mandatory: webip webserver
位置约束
由于HA集群本身并不强制每个节点的性能相同或相近,所以,某些时候我们可能希望在正常时服务总能在某个性能较强的节点上运行,这可以通过位置约束来实现:
在节点yxm8上定义
# crm configure location prefer-node1 webserver rule 200:
查看最终配置:
crm(live)configure# show node stu_yxm8.magedu node stu_yxm9.magedu primitive webip ocf:heartbeat:IPaddr \ params ip="172.16.15.199" \ meta target-role="Stopped" primitive webserver lsb:httpd location prefer-node1 webserver \ rule $id="prefer-node1-rule" 200: colocation websserver-with-webip inf: webserver webip order webserver-after-webip inf: webip webserver property $id="cib-bootstrap-options" \ dc-version="1.1.8-7.el6-394e906" \ cluster-infrastructure="classic openais (with plugin)" \ expected-quorum-votes="2" \ no-quorum-policy="ignore"
停掉yxm8上的corosync服务:
#servicecorosyncstop
重新启动yxm8上的corosync服务查看资源: