码迷,mamicode.com
首页 > 数据库 > 详细

Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用

时间:2015-04-22 15:54:27      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:heartbeat nfs mysql crm

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上

    技术分享    5.)添加资源的监控

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

  技术分享

  技术分享    其他资源的监控均可参照mysql的配置。

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

        技术分享

        技术分享



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








本文出自 “运维人生” 博客,请务必保留此出处http://yangsc.blog.51cto.com/7051889/1636988

Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用

标签:heartbeat nfs mysql crm

原文地址:http://yangsc.blog.51cto.com/7051889/1636988

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!