1.环境准备
角色 | IP |
VIP | 192.168.42.160(提供服务的地址) |
Master | eth0:192.168.42.163(本地管理IP) eth1:172.16.1.2/16(心跳线) |
Salve | eth0:192.168.42.162(本地管理IP) eth1:172.16.1.3/16(心跳线) |
NFS | 192.168.42.135 |
2.搭建NFS服务器
1.)安装nfs
#yuminstall rpcbind nfs-utils –y
#servicerpcbind start
#chkconfigrpcbind on
#servicenfs start
#chkconfignfs off #一定要关掉,HA集群中由heartbeat管理
#mkdir/mydata #把/mydata目录用NFS共享出去
2.)创建mysql用户
#groupadd–g 3306 mysql
#useradd–u 3306 –g 3306 –s /sbin/nologin –M mysql
#mkdir/mydata/data #存放mysql数据
#chown –R mysql.mysql /mydata/data
3.)配置nfs服务
#vim/etc/exports
/mydata 192.168.42.0/24(no_root_squash,rw)
#exportfs–arv
4.)测试
mount–t nfs 192.168.42.135:/mydata /mnt #在其他机器测试是否能挂载成功
3.安装mysql
1.)创建mysql用户
各个节点和NFS上存在mysql用户且id号必须保持一致
#groupadd –g 3306 mysql
#useradd–u 3306 –g 3306 –s /sbin/nologin –M mysql
# mkdir /mydata
2.)mysql安装及配置
#tar xf mysql-5.6.23-linux-glibc2.5-x86_64.tar–C /usr/local
#cd /usr/local
#ln –s mysql-5.6.23-linux-glibc2.5-x86_64mysql
#chown –R root:mysql ./mysql/* #解压并修改目录权限
#mount 192.168.42.135:/mydata /mydata
#cd /mysql
#scripts/mysql_install_db –user=mysql–datadir=/mydata/data
#ll /mydata/data #挂载NFS目录并初始化mysql,其他节点无需初始化mysql
#cp support-files/my-default.cnf/etc/my.cnf
挂载nfs目录并测试mysql服务是否正常(各个节点)
#mount –t nfs192.168.42.135:/mydata/data /mydata
#service mysqld start
#/usr/local/mysql/bin/mysql
mysql> create databases mydb; #创建一个库进行测试
mysql> show global variableslike ‘%innodb%’: #查看innodb引擎设置是否生效
#service mysqld stop
#umount /mydata
挂载nfs到另一节点看看刚才创建的库是否存在
Mysql设置密码
#mysqladm –u root –p password “新密码”
Enter password: 【输入原来的密码】
4. Heartbeat v2安装部署前的环境准备
1.) 主机名及hosts设置(heartbeat是通过主机名来通信的,所以必须规划好)
Master:
#hostname node1.pachira.cn
#vim /etc/sysconfig/network
HOSTNAME=node1.pachira.cn
#vim /etc/hosts
127.0.0.1 localhost
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
192.168.42.163 node1.pachira.cn node1
192.168.42.162 node2.pachira.cn node2
Salve:
按同样的步骤设置主机名及解析。必须确保主机名与uname –n的结果是一样的。
最后在各自ping下node1、node2测试一下。
2.) 各节点间的ssh双机互信
node1:
#ssh-keygen –t rsa –f./.ssh/id_rsa –P ‘’
#ssh-copy-id –i ./.ssh/id_rsa.pubroot@node2
node2:
#ssh-keygen –t rsa –f ./ssh/id_rsa–P ‘’
#ssh-copy-id –i ./.ssh/id_rsa.pubroot@node1
3.) 各节点间的时间同步(很重要)
node1:
配置成ntp server端
node2:
#crontab –e
*/30 * * * * /sbin/ntpdate192.168.42.163
添加防火墙(这里默认是关闭的)与关闭SELinux
node1,node2
#vim /etc/selinux/config
SELINUX=disabled
#setenforce 0
5. 安装与配置
1.) 安装heartbeat(
node1:
#yum install PyXML perl-MailTools –y
#rpm –ivh libnet-1.1.6-7.el6.x86_64
#rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpmheartbeat-gui-2.1.4-12.el6.x86_64.rpm
2.) 配置heartbeat
默认安装好的heartbeat没有配置文件,但是有样例文件
#cp/usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf} /etc/ha.d/
这里只需要两个配置文件,ha.cf与authkeys
#cd /etc/ha.d/
#chmod 600 authkeys
以下的ha.cf与authkeys是经过我删减后的,可以直接使用
#vim authkeys
auth 1
1 md591961e19f5730f736d27c07ffbc093d1
#vim ha.cf
#debugfile /var/log/ha-debug
#logfile /var/log/heartbeat.log
logfacility local0
keepalive 2 #发送心跳的间隔时间
#deadtime 30 #超出30秒未收到对方节点的心跳,则认为对方已经死亡
#warntime 10 #警告时间
#initdead 120 #网络启动时间
udpport 694
#bcast eth1 #广播的方式进行心跳监测,网卡根据生产环境设置
mcast eth1 225.0.100.10 694 1 0 #组播的方式进行心跳监测
auto_failback on
node node1.pachira.com #设置集群中的节点,节点名必须与uname –n 一样
node node2.pachira.com
ping 192.168.42.254 #ping集群外的其他节点,监测网络的连通性,可以设置网关
#ping_group group1 10.10.10.25410.10.10.253
#deadping 30
crm on #启用crm
复制以上2个配置文件到node2上
#scp authkeys ha.cfnode2:/etc/ha.d
3.) 启动heartbeat
说明:启动heartbeat之前确保heartbeat所管理的资源都是关闭状态,并关闭开机自启动
#service heartbeat start
#ssh node2 “service heartbeatstart”
node1 node2上用netstat –tunlp 检查下端口
4.) 配置heartbeat集群资源
需要配置的集群资源:VIP NFS Mysql
#passwd hacluster #为客户端连入服务端进行配置的用户设置密码
#hb_gui & #启动heartbeat图形化的客户端程序,在window中可以用xmanager打开,也可以用VNC连接linux 桌面
定义资源粘性,定义一个大于0的数代表该资源更倾向于运行于当前所在的节点上。
把VIP Mysql NFS定义到一个资源组内(资源启动顺序 VIP NFS Mysql)创建资源组(按资源启动顺序创建)
添加VIP资源
添加NFS资源
添加mysql资源
启动
启动后
尝试让node1处于standby状态,查看资源的切换情况
模拟node1再次上线,查看情况
所有资源都运行于node2上
Mysql(每60秒监测资源运行状况,如果发现资源不在,则尝试启动资源,如果30秒还未启动成功,则 资源切换到另外节点)
6.)heartbeat默认启动与关闭资源的超时时间是20s,如果20s未启动成功与关闭成功,则会造成切换故障,有些资源启动与关闭的时间超过20s,这时候就需要单独配置资源的启动与关闭的超时时间了。
至此,此高可用方案部署完毕。
本文出自 “运维人生” 博客,请务必保留此出处http://yangsc.blog.51cto.com/7051889/1636988
Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用
原文地址:http://yangsc.blog.51cto.com/7051889/1636988