corosync+pacemaker构建HAweb集群-----crm资源管理器

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 (此处可以选择安装软件生成大量随机数)

corosyncauthkey复制至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模型的webhttpd)服务集群

在两个节点上分别启动httpd服务:


#service httpd start


提供一个测试页面,确保服务可以正常访问后,使其开机不能自动启动


#chkconfig httpd off



接下来我们将此httpd服务添加为集群资源。将httpd添加为集群资源有两处资源代理可用:lsbocf: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

150406224.png

资源约束

排列约束

对于资源webipwebserver可能会运行于不同节点的问题,可以通过以下命令来解决:

# 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

150500413.png

重新启动yxm8上的corosync服务查看资源:

150800775.png

你可能感兴趣的:(crm,pcs,pacemaker,corosync,HA集群)