上篇我们通过heartbeat v1版本的资源管理器(haresources文件
)实现了基于NFS共享存储的web 服务,这篇我们仍然基于上篇的基础上,通过heartbeat v2 版本的资源管理器crm
实现mysql的高可用
配置heartbeatv2
配置heartbeatv2版本极为简单,只需要在heartbeat的配置文件中添加一条指令
crm on
,(注意如果启用此指令,则heartbeat v1版本中haresources
资源管理器所定义的资源将不再有用。) 并安装程序包heartbeat-gui
既可以实现了.
[root@node3 ~]# service heartbeat stop;ssh node4.magedu.com 'service heartbeat stop'
[root@node3 ~]# vim /etc/ha.d/ha.cf
[root@node3 ~]# grep -v "^#" /etc/ha.d/ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
mcast eth0 225.12.0.1 694 1 0
auto_failback on
node node3.magedu.com
node node4.magedu.com
crm on #添加此条指令
ping 192.168.99.1
compression bz2
compression_threshold 2
[root@node3 ~]# scp /etc/ha.d/ha.cf root@node4.magedu.com:/etc/ha.d/
ha.cf
[root@node3 ~]# rpm -ivh heartbeat2/heartbeat-gui-2.1.4-12.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:heartbeat-gui ########################################### [100%]
[root@node4 ~]# rpm -ivh heartbeat2/heartbeat-gui-2.1.4-12.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:heartbeat-gui ########################################### [100%]
至此heartbeat v2版本我们已经部署完毕。
启动服务,并查看集群状态
[root@node3 ~]# service heartbeat start;ssh node4.magedu.com 'service heartbeat start'
#查看端口5560
[root@node3 ~]# ss -tnlp|grep 5560
LISTEN 0 10 *:5560 *:* users:(("mgmtd",42585,10))
[root@node3 ~]# crm_mon #查看c集群的状态信息
从上图,我们可以看出,当前HA集群有两个节点, node3和node4,指定的协调员是node4(DC)。
配置资源
当我们启用crm on
指令时,此时v1版本资源管理器haresources
所定义的资源将不再有效,我们需要通过heartbeat-gui
程序包提供的hb_gui
指令来实现资源配置。
-
1.hb_gui需要一个特定用户hacluster登录进行配置
我们需要给此用户添加密码,因为他不允许无密码登录。只要添加了密码,可以在集群的任意节点进行登录,。
[root@node3 ~]# echo "magedu"|passwd --stdin hacluster
- 2.打开xshell转化进行登录
[root@node3 ~]# hb_gui &
[1] 42742
点击connection输入账号密码进行登录,如下图:
登录成功如下图:
- 添加一个资源
点击Resources,点击+,会出现以下会话框:
我们可以添加的资源有native(基本资源)、group(组资源)、因为只有有了基本资源才有主从和克隆的概念,所以此处我们是无法添加主从和克隆两种资源。
示例:定义一个web server
- ** 配置IP地址**
选择native而后点击ok,而后我们就可以通过以下页面来配置我们的资源属性信息,此处我们配置的是一个ip地址。
此时我们点击启动按钮,此资源将会运行起来,且运行在DC节点上
[root@node4 ~]# ifconfig |grep eth0:0 -A 1
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:62:D9:12
inet addr:192.168.99.12 Bcast:192.168.99.255 Mask:255.255.255.0
- ** 配置web服务**
我们通过httpd来管理web服务
将资源进行绑定
上面我们虽然定义了web服务所需要的基本资源ip和httpd,但是hb_gui默认是将这些基本资源负载均衡到各个集群节点,所以此时ip在node4节点,而web服务在node3节点,这仍然无法满足我们的需求,故,我们需要将IP和httpd绑定在一起。我们可以通过资源约束和定义资源组两种方法来实现。
-
定义排列约束(Colocation)来实现资源绑定
通过排列约束实现IP和httpd在一起实现webservice,排序约束资源启动有先后顺序,先启动ip,在启动httpd服务,这意味着ip在哪个节点,httpd服务就需要在哪个节点。- 右击Colocation,选择Add New Item进而选择colocation,点击OK
-
此时这两个资源(IP和httpd)已经绑定在一起了。
- 右击Colocation,选择Add New Item进而选择colocation,点击OK
[root@client ~]# curl 192.168.99.12
<h1>node4.magedu.com</h1>
[root@client ~]# curl 192.168.99.12
<h1>node3.magedu.com</h1>
-
定义顺序约束(order)来实现资源启动顺序控制
- 右击Order-->Add Now Order[order]-->ok
- 右击Order-->Add Now Order[order]-->ok
-
定义位置约束(location)来实现资源对节点的倾向性
- 右击Location-->Add New Item【location】,此时还不够,还需要通过其属性(Attributes)来定义Location中资源对节点的倾向性
- 右击Location-->Add New Item【location】,此时还不够,还需要通过其属性(Attributes)来定义Location中资源对节点的倾向性