一:目标
创建具备2台节点的集群
使用HeartBeat检测集群状态,
当集群种1台节点出现故障时,在另一台节点启动mysqld服务
两台节点共用NFS数据库
可以使用第3个节点提供nfs服务(这里偷个懒,用其中一台节点提供NFS服务)
二:准备
VirtualBox
两台具备centos 6.4 x_86.64位系统的虚拟节点
每台节点具备2个ethernet网卡
heartbeat-2.1.4-12.el6.x86_64.rpm
heartbeat-pils-2.1.4-12.el6.x86_64.rpm
libnet-1.1.5-1.el6.x86_64.rpm(yum源里没有,需要另行下载)
三:安装
节点1:
# mkdir build # cd build/ # rpm -ivh libnet--version.rpm(必须第一步) (有出错信息的话,自己满足依赖 # rpm -ivh heartbeat-pils(必须第二步) # rpm -ivh heartbeat*.rpm # yum install mysql-server # yum install nfs-utils
节点2:
跟节点1大体相同,不需要安装nfs-utils
四:规划
node1
eth0:172.16.100.1/24
eth1:1.1.1.1/24(vbox内网)
node2
eth0:172.16.100.2/24
eth1:1.1.1.2/24(vbox内网)
虚拟IP
VIP:172.16.100.80/24
mysql数据库目录
/share/data
NFS共享目录
/mydata
五:原理
1.node1提供NFS服务,将自身/mydata目录共享出去,
2.node1和node2均能自动挂载 node1:/mydata至/share目录
3.Mysql数据库目录 datadir=/share/data
4.HeartBeat检测节点状态,node1挂掉后,立即将VIP转移至node2,并启动node2的mysqld服务
六:实施
1.NFS部分
node1
# vim /etc/exports #添加如下信息 /mydata 172.16.100.*/24(rw,sync,no_root_squash) no_root_squash参数很重要,避免nfs目录挂载的权限问题 # service nfs start # exportfs -avr(若nfs有改变,可用此命令更新共享目录,免去重启nfs服务)
node2
#showmount -e 172.16.100.1 确认有如下输出 Export list for 172.16.100.1 /mydata 172.16.100.*/24
挂载测试,然后卸载,确保nfs正常使用
2.Mysql部分
node1
# mkdir -pv /mydata/data # chown -R mysql.mysql /mydata # vim /etc/my.cnf添加datadir=/mydata/data参数 # service mysqld start(自行排错) # mysql_secure_installation(初始化,设定root密码,注意不要拒绝root远程登录,以后测试要用) # mysql -u root -p 数据库初始化完成
node2
因node1已经完成了初始化,所以node2不需要做任何事,将node1的/mydata挂载到/share即可,
注意文件系统权限,然后直接启动mysqld即可,测试完成后退出
3.HeartBeat部分
heartbeat是基于“节点名称”来工作的,所以要给节点起名字,不建议使用DNS统一分配,因为一旦DNS跪了,整个集群都废了,所以采用/etc/hosts文件的方式来命名
node1
# vim /etc/hosts 172.16.100.1 node1 172.16.100.2 node2
# hostname(查看当前主机名) # hostname node1(设置为node1) node2(同样操作)
将node1的/etc/hosts 复制给node2,
# scp /etc/hosts root@node2:/etc/hosts
发现每次scp都需要输密码,索性做密匙免登陆吧
# ssh-keygen -t rsa # ssh-copy-id node2 node2同样操作
下面来设置HeartBeat
node1
# cd /usr/share/doc/heartbeat-2.1.4/ # cp authkey haresource ha.cf /etc/ha.d/ # openssl rand -hex 8 >> /etc/ha.d/authkey(生成16位md5值) # cd /etc/ha.d/ # vim authkey 添加如下数据 auth 3 3 md5 d6e92e4ecbbede21 # chmod 600 authkey(确保权限) #vim haresource 添加如下数据 node1 172.16.100.80/24/eth0/172.16.100.255 Filesystem::172.16.100.1:/mydata::/share::nfs mysqld #vim ha.cf bcast eth1 udpport 694 keepalive 2 logfile /var/log/ha-log auto_failback on node node1 node node2 (这里定义cluster里面有哪几个节点)
设置好后 service heartbeat start
然后对 node2做同样设置
4.测试
# mysql -u root -h '172.16.100.80' -p
默认node1是主节点,应该连到172.16.100.1上了
在node1上
# cd /usr/lib64/heartbeat/
# ./hb_standby
即可观察到资源转换
在node2上
# mount (查看nfs是否挂载)
# service mysqld status (查看mysql工作情况)
没错的话,说明集群正常工作了
结语:
除了heartbeat安装挺麻烦的,其他还挺简单的
转载于:https://blog.51cto.com/cppking/1294736