ret=mgmt_msg_append(ret,interface_names[i]);
ret=mgmt_msg_append(ret,interface_status[i]);
}
}
(void)corosync_cfg_finalize(handle);
returnret;
}
之后即可在mgmt中使用status_hblinks命令即可查询心跳的状态,如下所示:
[root@server-1heartbeat-gui]#./mgmtcmd.pystatus_hblinks
---------------------------
o
172.16.70.191
ring0activewithnofaults
192.168.127.191
ring1activewithnofaults
创建集群
pcsclustersetup--start--namemy_cluster
启动集群服务
pcsclusterenable--all
查看集群状态
pcsclusterstatus
创建stonith设备
pcsstonithcreatemyapcfence_apc_snmpparamsipaddr=""pcmk_host_map=":
1;:
2"pcmk_host_check="static-list"pcmk_host_list=","login="apc"passwd="apc"
pcsstonithshowmyapc
创建资源
pcsresourcecreatemy_lvmLVMvolgrpname=my_vgexclusive=true--groupapachegroup
pcsresourceshow
pcsresourceenable
pcsresourcecreatemy_fsFilesystemdevice="/dev/my_vg/my_lv"directory="/var/www"fstype="ext4"--groupapachegroup
pcsresourcecreateVirtualIPIPaddr2ip=198.51.100.3cidr_netmask=24--groupapachegroup
pcsresourcecreateWebsiteapacheconfigfile="/etc/httpd/conf/httpd.conf"statusurl="http:
//127.0.0.1/server-status"--groupapachegroup
pcsresourcecreateVirtualIPocf:
heartbeat:
IPaddr2ip=192.168.0.120cidr_netmask=24opmonitorinterval=30s
查看集群状态:
pcsstatus
倒换节点:
pcsclusterstandbypcsclusterunstandby
查看帮助pcsresource-h
导出和备份配置文件pcsclustercibtestfilepcsconfigbackuppcsconfigrestorepcsclustersetup--namenew_clusternodeAnodeB--token10000--join100pcsclusterstoppcsclusterenablepcsclusterdisablepcsclusternodeaddnodepcsclusternoderemovenodepcsclusterstandbynodepcsclusterunstandbynodepcsstonithlistpcsstonithdescribepcsstonithshow--fullpcsstonithcreatemyapc-west-13fence_apcpcmk_host_list="west-13"ipaddr="west-apc"login="apc"passwd="apc"port="15"
fence对应节点:
pcsstonithfencenodepcsresourcedeleteVirtualIPpcsresourcedescribeLVMpcsresourceshow--fullpcsresourceenableresource_id
pcsresourcedisableresource_id
设置资源先后关系pcsconstraintVirtualIPthendummy_resourcekind=Optional
进入维护模式:
pcsresourceunmanageresource1
解除维护模式
pcsresourcemanageresource1
Corosync与Pacemaker实现nfs作为共享存储的MysSQL高可用
以下分别以crm和pcs两种命令来实现
1.安装corosync和pacemaker,在CentOS6.5自带有rpm包。
yum-yinstallcorosyncpacemaker
2.配置pacemaker做为corosync的插件运行:
在/etc/corosync/nf加入如下配置
secauth:
on#开启集群节点之间通信的安全认证
interface{
bindnetaddr:
192.168.0.0#指定进行网卡所在的网络地址
}
service{
name:
pacemaker#指定资源管理器的名称
ver:
0#0:
表示pacemaker作为corosync的插件来运行;1:
表示pacemaker作为单一的 守护进程来运行,也就是说在启动corosync后还必须手动启动pacemaker守护进程。
}
aisexec{
user:
root #表示以哪个用户来运行pacemaker资源管理器。
group:
root#表示以哪个组来运行pacemaker资源管理器。
}
3.配置节点间通信使用的密钥:
corosync-keygen
4.配置集群属性
crmconfigurepropertyno-quorum-policy=ignore
【pcspropertysetno-quorum-policy=ignore】
#表示不管出现何种情况资源照样继续运行
crmconfigurepropertystonith-enabled=false
【pcspropertysetstonith-enabled=false】
#表示禁用stonith,默认情况下,若是没有stonith设备,集群是无法启动的。
5.配置资源以及对资源的监控
1、配置虚拟ip
crmconfigureprimitivemyipocf:
heartbeat:
IPaddrparamsip="192.168.0.100"nic="eth0"cidr_netmask="24" opmonitorinterval=20stimeout=30s
【pcsresourcecreatemyipocf:
heartbeat:
IPaddrparamsip="192.168.0.100"nic="eth0"cidr_netmask="24" opmonitorinterval=20stimeout=30s】
#表示定义一个主资源myip,ocf:
heartbeat:
IPaddr表示资源代理的类型为ocf,提供者是heartbeat,具体的代理为IPaddr,params表示代理IPaddr的参数为ip="192.168.0.100"nic="eth0"cidr_netmask="24"等,op表示对此资源的操作,有monitor、start、stop、status等。
interval表示每隔20s对资源的健康状态进行一次检查,如果检测不成功,30s后就超时了。
2、配置mysqld服务
crmconfigureprimitivemyserviceocf:
heartbeat:
mysqlparamsbinary="/usr/bin/mysqld_safe"config="/etc/f"datadir="/var/lib/mysql"pid="/var/run/mysqld/mysql.pid"socket="/tmp/mysql.sock"additional_parameters="--bind-address=192.168.0.100"opstarttimeout=120sopstoptimeout=120sopmonitorinterval=20stimeout=30s
【pcsresourcecreatemyserviceocf:
heartbeat:
mysqlparamsbinary="/usr/bin/mysqld_safe"config="/etc/f"datadir="/var/lib/mysql"pid="/var/run/mysqld/mysql.pid"socket="/tmp/mysql.sock"additional_parameters="--bind-address=192.168.0.100"opstarttimeout=120sopstoptimeout=120sopmonitorinterval=20stimeout=30s】
3、配置共享存储
crmconfigureprimitivemystoreocf:
heartbeat:
Filesystemparamsdevice=192.168.0.13:
/mysqldatadirectory=/var/lib/mysqlfstype=nfsopstarttimeout=60sopstoptimeout=60sopmonitorinterval=20stimeout=60s
【pcsresourcecreatemystoreocf:
heartbeat:
Filesystemparamsdevice=192.168.0.13:
/mysqldatadirectory=/var/lib/mysqlfstype=nfsopstarttimeout=60sopstoptimeout=60sopmonitorinterval=20stimeout=60s】
6.配置约束规则
1、配置排列约束
crmconfigurecolocationmyip_with_mystore_myserviceinf:
myipmystoremyservice
【pcsconstraintcolocationaddmyipmystoremyserviceINFINITY】
#表示myip、mystore、myservice三个资源必须在一起,或者定义一个组资源,将这三个资源放入组中即可。
2、配置顺序约束
crmconfiguremyip_then_mystore_then_myserviceinf:
myipmystoremyservice
【pcsconstraintordermyipthenmystorethenmyservice】
#表示起源启动的顺序依此是myip、mystore、myservice
7.配置网络pingnode监控
1、配置pingnode主资源
crmconfigureprimitivepnodeocf:
pacemaker:
ping paramshost_list=192.168.0.200multiplier=100opmonitorinterval=10stimeout=60sopstarttimeout=60s
【pcsresourcecreatepnodeocf:
pacemaker:
pingparamshost_list=192.168.0.200multiplier=100opmonitorinterval=10stimeout=60sopstarttimeout=60s】
#192.168.0.200是网关地址或可以ping通的其他节点,可以有多个,使用空格分隔。
而multiplier表示如果集群中的节点可以ping通,那么那个节点的分数就会乘以这个参数指定的值,来进行累加,比如nodeA,ping通一次就是1*100,ping通两次2*100,一次类推。
2、配置pnode的克隆资源
crmconfigureclonecl_pnodepnode
【pcsresourceclonepnode】
3、配置pingnode失败的时候,资源的故障转移
crmconfigurelocationmystore_on_ping rule-inf:
not_definedpingdorpingdnumber:
lte0
【pcsconstraintlocationmystorerulescore=-INFINITY:
not_definedpingd】
【pcsconstraintlocationmystorerulesorce=-INFINITY:
pingdlte0type=number】
#表示如果由pingnode得出的分数小于等于0或者某个节点没有定义域pingnode相关的属性的话,那么就进行资源的转移。
8.检查以上的配置是否有语法错误,然后提交保存
1、校验是否有语法错误
crmconfigureverify
2、提交保存
crmconfigurecommit
9.测试
1、使用crmnodestandbynodeX
#nodeX表示你要将哪个节点挂起
2、使用禁止ping信息来测试
iptables-AOUTPUT-picmp-jDROP