1.环境准备
角色 | | | | | eth0:192.168.42.163(本地管理IP) eth1:172.16.1.2/16(心跳线) | | eth0:192.168.42.162(本地管理IP) eth1:172.16.1.3/16(心跳线) | | |
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上
5.)添加资源的监控 Mysql(每60秒监测资源运行状况,如果发现资源不在,则尝试启动资源,如果30秒还未启动成功,则 资源切换到另外节点)
其他资源的监控均可参照mysql的配置。 6.)heartbeat默认启动与关闭资源的超时时间是20s,如果20s未启动成功与关闭成功,则会造成切换故障,有些资源启动与关闭的时间超过20s,这时候就需要单独配置资源的启动与关闭的超时时间了。
至此,此高可用方案部署完毕。
|