CentOS6.4 高可用集群之基于heartbeat和nfs的高可用mysql
CentOS版本: CentOS release 6.4(Final) 2.6.32-358.el6.i686
效果演示:
使用ssh连接(nod-1.magedu.com)192.168.3.7 并执行以下命令:
[[email protected] ha.d]# hb_gui &
说明:hb_gui是heartbeat为了方便管理集群资源而提供的一个图形用户接口
安装heartbeat默认会在系统中创建一个名为"hacluster"的用户、这个用户是在执行hb_gui命令时
所必须的、默认情况下此用户密码为空、需要手动为其指定一个密码。
一般情况下,一个高可用服务包括多个资源,从属于同一个服务的多个资源必须运行在同一个节点上|
而默认情况下是平行的。这句话可以这样来理解(如果此处我们不是创建了一个名MYSQL_HA的组,那么
上图中的3个资源就很可不是运行在同一个节点上)这一点一定要注意。
查看 集群IP 即mysql_ip 是否位于(nod-1这个节点的eth0)的别名上(eth0:0)
在nfs.magedu.com上执行以下命令
模拟从远程nfs.magedu.com(192.168.3.9)访问 集群IP (192.168.3.10)
在nod-1.magedu.com上执行以下命令
观察nfs.magedu.com连接的到底是否是第1个节点:(nod-1.mageud.com)上的mysql数据库。
在nod-1.magedu.com上查看nfs共享挂载的情况
模拟故障是否能成功转移:
从上图看当nod-1这个设定为"备用节点"后、集群资源已经转移到nod-2这个节点上。那么是否真的
成功了呢(验证一下)
准备工作:
SSH 双机互信
本次实验中高可用集群中只2个节点:(nod-1| nod-2)
nod-1.magedu.com (192.168.3.7)
nod-2.magedu.com (192.168.3.8)
nsf.magedu.com (192.168.3.9)
集群的IP
mysqlip (192.168.3.10)
1、在第1个节点(nod-1.magedu.com)上执行以下命令:
cd ~/.ssh
ssh-keygen -t rsa
ssh-copy-id -i ./id_rsa.pub [email protected]
2、在第2个节点(nod-2.magedu.com)上执行以下命令:
cd ~/.ssh
ssh-keygen -t rsa
ssh-copy-id -i ./id_rsa.pub [email protected]
3、在第3个节点(nfs.magedu.com)上安装配置rpcbind(nfs服务) 及ntp服务:
nfs.magedu.com这台服务器同时提供(nfs|ntp)这2种服务。
rpcbind可以使用yum命令来安装此处就不做多讲了。
本次实验中计划将 nfs.magedu.com这台服务器上的/mysqldata/data做为共享
导出来供(nod-1|nod-2)挂载。
1.查看或编辑 nfs.magedu.com上的nfs共享
[[email protected] ~]# cat /etc/exports
/mysqldata/data 192.168.3.0/24(rw,no_root_squash)
2.在(nod-1|nod-2)执行挂载测试
可以执行以下命令测试能否正常挂载(nfs.magedu.com)上的共享目录/mysqldata/data
[[email protected] /]# mount -t nfs 192.168.3.9:/mysqldata/data /mysqldata/data
[[email protected] /]# mount -t nfs 192.168.3.9:/mysqldata/data /mysqldata/data
在创建并配置高可用集群的时候首先要做的便是要使用集群内各节点的时间保持同步
在(nod-1|nod-2)上分别执行如下命令:
[[email protected] ~]# ntpdate 192.168.3.9
9 Dec 12:00:42 ntpdate[11266]: step time server 192.168.3.9 offset 57574.355435 sec
HeartBeat-2.1.4-11.el5.i386.rpm安装及配置
下载链接:https://dl.fedoraproject.org/pub/epel/5/i386/
http://fedoraproject.org/wiki/EPEL(这个地址有时候访问会很慢、使用翻墙软件会有明显改善)
RPM包:
安装顺序
说明:
devle包、和 ldirectord 包在本实验(高可用集群)当中暂时用不着所以用不着安装
所以无需安装。
net-snmp-libs-5.3.2.2-22.el5_10.1.i386.rpm
在安装之前必须把系统自带net-snmp-libs包卸载掉(自带版本为net-snmp-libs-1:5.5-44.el6.i686)
执行命令: yum -e --nodeps net-snmp-libs
rpm -ivh net-snmp-libs-5.3.2.2-22.el5_10.1.i386.rpm
gnutls-1.4.1-10.el5_9.2.i386.rpm
在安装之前必须把系统自带gnutls包卸载掉(自带版本为gnutls-2.8.5-10.el6.i686)
执行命令: yum -e --nodeps gnutls
rpm -ivh gnutls-1.4.1-10.el5_9.2.i386.rpm
配置:
使用crm与haresource 不同之处是haresource(配置文件有3个:authkeys,har.cf,haresources)
[[email protected] ~]# cd /etc/ha.d/
[[email protected] ha.d]# ll
total 48
-rw-------. 1 root root 693 Dec 8 12:01 authkeys
-rw-r--r--. 1 root root 10686 Dec 8 12:09 ha.cf
-rwxr-xr-x. 1 root root 745 Mar 20 2010 harc
-rw-r--r--. 1 root root 5905 Mar 20 2010 haresources
drwxr-xr-x. 2 root root 4096 Dec 6 17:57 rc.d
-rw-r--r--. 1 root root 692 Mar 20 2010 README.config
drwxr-xr-x. 2 root root 4096 Dec 7 19:13 resource.d
-rw-r--r--. 1 root root 7862 Mar 20 2010 shellfuncs
authkeys: 是验证身份的密钥文件。只有通过验证的主机才能成为集群当中的节点。
出于安全的authkeys的权限必须设定为 600,否则执行service heartbeat start
时可能报错、并伴随有警告信息。
ha.cf 是关于集群本身设定的配置文件(我们可以在此文件中设定有多少个节点、还可以
设定心跳信息发送模式[bcast|mcast|ucast]即[广播|多播|单播],等各种参数)
haresources 高可用集群中各资源的定义都位于此文件中
因为我们此处要讲的是crm所以只需要对authkeyst和ha.cf进行配置即可
1、authkeys
[[email protected] ha.d]# cat authkeys
# Authentication file. Must be mode 600
#
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
auth 1
1 md5 3c0d2f606e0ddd100509d42795436dc1
[[email protected] ha.d]#
为了不占据空间多余的注释行我都删掉了、authkeys这个文件中需要修改的地方就2行:
auth 1
1 md5 3c0d2f606e0ddd100509d42795436dc
它表示启用标识为1的加密方式、在1这个标识中我们指定了加密的方式为md5,后面一长串字符是salt。
2、ha.cf
在这个文件当中我们只需要修改4处地方
#mcast eth0 225.0.0.1 694 1 0
mcast eth0 225.0.0.1 694 1 0
#node kathy
node nod-1.magedu.com
node nod-2.magedu.com
#ping 10.10.10.254
ping 192.168.3.9
#compression_threshold 2
crm on
或者写成下面这种方式效果也是一样的(表示启用crm)
crm respawn
CRM:即 Cluster Resource Manager
当authkeys和ha.cf这2个文件都配置完成后,可以执行以下命令:
[[email protected] ha.d]# /usr/lib/heartbeat/ha_propagate
把这2个配置好的文件分发至集群中的其它各节点对应目录下、不用我们手动去复制。
高可用
集群的常用命令
关于集群日常维护命令及其参数的使用、有一个网友写的比较具体、此处就直接引用了。
出处:http://czmmiao.iteye.com/blog/1181720
crm_mon:crm_mon 命令允许您监视群集的状态和配置。其输出包括节点数、uname、uuid、状态
、群集中配置的资源及其各自的当前状态。crm_mon 的输出可以显示在控制台上或打印到 HTML
文件。当具有不包含状态部分的群集配置文件时,crm_mon 会按文件中所指定的方式创建节点
和资源概览。