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                    桌面

     Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第1张图片 

         定义资源粘性,定义一个大于0的数代表该资源更倾向于运行于当前所在的节点上。

        Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第2张图片        

    把VIP Mysql NFS定义到一个资源组内(资源启动顺序 VIP NFS Mysql)创建资源组(按资源启动顺序创建)

        Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第3张图片

        

    Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第4张图片

    Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第5张图片

    添加VIP资源

    Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第6张图片

    添加NFS资源

    Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第7张图片

   Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第8张图片

    添加mysql资源

   Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第9张图片

    启动

        Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第10张图片

        启动后

        Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第11张图片        

   尝试让node1处于standby状态,查看资源的切换情况

    Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第12张图片    

  模拟node1再次上线,查看情况

  Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第13张图片

  

  所有资源都运行于node2上

    Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第14张图片    5.)添加资源的监控

    Mysql(每60秒监测资源运行状况,如果发现资源不在,则尝试启动资源,如果30秒还未启动成功,则 资源切换到另外节点)

  Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第15张图片

  Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第16张图片    其他资源的监控均可参照mysql的配置。

       6.)heartbeat默认启动与关闭资源的超时时间是20s,如果20s未启动成功与关闭成功,则会造成切换故障,有些资源启动与关闭的时间超过20s,这时候就需要单独配置资源的启动与关闭的超时时间了。

        Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第17张图片

        Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用_第18张图片



        至此,此高可用方案部署完毕。