安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2
提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样。
# IP HOSTNAME ALIAS
10.204.80.79 node1.mylinux.com node1
10.204.80.80 node2.mylinux.com node2
这两台服务器之间建立ssh互信
#ssh-kegen –t rsa –p”” 生成id_rsa.pub和id_rsa 公钥和私钥文件
#ssh-copy-id –i .ssh/id_rsa.pub root@node2 把公钥文件拷到node2上,在node2中同样操作,然后把公钥文件拷到node1上,这样,两台主机之间就可以不通过密码进行互访。
安装httpd,并提供访问页面,为了显示效果,可以在两台机器上的网页文件上添加标记显示区别,我用的是web页面是phpinfo 加标识来识别,基础环境就已经安装好了。
安装heartbeat v2版本
因为heartbeat v2版本已经不支持在centos6版本上的rpm包,所以不能直接用yum安装,需要用src源码安装包编译后才能安装。我这里用的是已经编译好了的rpm包,安装过程要解决依赖关系,
yum -y install perl-MailTools net-snmp-libs pygtk2-libglade libnetsnmp net-snmp-libs
然后通过rpm –ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm
安装heartbeat v2.14版本完成
heartbeat v2的配置文件放的位置在 /etc/ha.d/目录下,有三个配置文件,authkeys ha.cf haresource,安装完成后默认是没有这三个文件的,可以手动创建,也可以在/usr/share/doc/heartbeat-2.1.4/ 目录下把这三个文件的示例文件拷到/etc/ha.d/ 目录下。
配置文件的作用:
authkeys : 认证文件,里面有启用哪种加密方式及加密密钥,crc ,sha1 和md5三种认证机制。
如果要启用哪种认证方式,则在 auth 后面选择对应的数据,然后加指定验证密钥,密码是用openssl随机生成的一串16位字符
haresource :这是由heartbeat v1版本中自带的资源管理配制文件,定义依靠和资源情况 。
这点定义的时资源节点默认依靠在node1节点上,vip:10.204.80.89,默认绑定在eth0上,定义的服务为httpd24
ha.cf : 主配置文件, 定义节点,日志,传输心跳的方式等。
logfile /var/log/ha-log
node node1.mylinux.com
node node2.mylinux.com
mcast eth0 225.4.0.4 694 1 0
ping 10.204.80.3
配置就已经完成,启动heartbeat
在node1上启动heartbeat ,提示heartbeat启动成功,但资源是停止的。
查看启动日志
查看启用端口
组播端口694已经启动
在当前节点上启动node2
查看资源
vip和httpd都已经启动。web页面也正常显示
在node1上停止heartbeat服务
然后在node2上查看资源
Vip和httpd都已经成功转移到node2上,web访问页面也显示是node2上的页面
在node1上重新启动heartbeat
资源又重新回到node1上了,这是因为在haresource定义 资源的时候是默认在Node1上。heartbeat配置高可用web服务成功
配置基于nfs共享存储的mysql高可用集群
提供两台机器mysql1和mysql2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样。
# IP HOSTNAME ALIAS
10.204.80.86 mysql1.mylinux.com mysql1
10.204.80.85 mysql2.mylinux.com mysql2
nfs服务器 10.204.80.71
mysql1和mysql2建立互信关系,并且在三台服务器上添加指定同样uid和gid的mysql帐号
在mysql1和mysql2两台机器上挂载nfs,挂载目录为/mysqldata,并创建/mysqldata/data目录为mysql的数据目录
用二进制格式安装mysql5.5.38,并指定mysql的数据目录为/mysqldata/data
、
在mysql1节点上启动mysql服务成功,
然后在mysql1节点上停止mysql服务,然后在mysql2节点上同样启动mysql服务,注意在/etc/my.cnf文件中一定要添加 datadir = /mysqldata/data 这一条配置文件,
在mysql2结点上启动mysql服务成功
集群环境已经搭好,安装heartbeat v2版本过程参照上面web高可用集群过程。启用图型界面配置资源
在/etc/ha.d/ha.cf主配置中写入以下配置
node mysql1.mylinux.com
node mysql2.mylinux.com
mcast eth0 225.5.0.4 694 1 0
ping 10.204.80.3
crm on # 启用图型界面配置资源
在/etc/ha.d/authkeys 启用验证功能
2 sha1 7cd37bc0d0fbc374
输入命令 crm_mon,可以查看两个节点的状态信息
两个节点都已经在线,但没有定义资源
在命令行输入启用图型界面
安装heartbeat以后会自动创建hacluster帐号,对这个帐号添加密码,启动heartbeat服务就可以登陆进去配置资源。
如图显示,两个节点都已经正常在线状态。就可以添加资源
因为启动mysql服务必须要有三个资源:VIP NFS以及mysql服务,所以把这三个资源定义到同一个资源组中。
添加资源vip,ip地址,绑定在哪个网卡的别名上,指定netmask
同样添加filesystem资源nfs和mysqld服务,然后把资源启动
定义约束:
因为前面定义的资源都在同一个组里面,所以这些资源必须运行在同一个节点上,于是要定义的约束是位置约束,默认资源依靠在节点mysql1上。顺序约束,必须先挂载nfs资源然后才能启用mysql服务,必须要先停止mysql服务,然后才能停止nfs服务,定义属性能如图
位置约束: 定义在mysql1上,也就是如果mysql1节点挂了会自动转移到节点mysql2,当mysql1节点重新在线后,资源又会自动转移到mysql1节点上来。
顺序约束:定义资源启动的先后顺序
划红圈的部份就已经说明了资源启动的顺序关系,至此集群已经定义完成。
把mysql1节点状态改为Standby,显示转换过程
资源转移完成,当把mysql1节点重新上线,资源又会自动转移 回去。