CentOS6.4 高可用集群之基于heartbeat和nfs的高可用mysql

CentOS版本: CentOS release 6.4(Final) 2.6.32-358.el6.i686

效果演示:

         使用ssh连接(nod-1.magedu.com)192.168.3.7 并执行以下命令:

         [root@nod-1 ha.d]# hb_gui &

         CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第1张图片

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第2张图片     

         说明:hb_gui是heartbeat为了方便管理集群资源而提供的一个图形用户接口

         安装heartbeat默认会在系统中创建一个名为"hacluster"的用户、这个用户是在执行hb_gui命令时

         所必须的、默认情况下此用户密码为空、需要手动为其指定一个密码。

         一般情况下,一个高可用服务包括多个资源,从属于同一个服务的多个资源必须运行在同一个节点上|

         而默认情况下是平行的。这句话可以这样来理解(如果此处我们不是创建了一个名MYSQL_HA的组,那么

         上图中的3个资源就很可不是运行在同一个节点上)这一点一定要注意。



          查看 集群IP 即mysql_ip 是否位于(nod-1这个节点的eth0)的别名上(eth0:0)

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第3张图片 


          在nfs.magedu.com上执行以下命令

          模拟从远程nfs.magedu.com(192.168.3.9)访问 集群IP (192.168.3.10)

       CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第4张图片


         在nod-1.magedu.com上执行以下命令

         观察nfs.magedu.com连接的到底是否是第1个节点:(nod-1.mageud.com)上的mysql数据库。

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第5张图片

        

       在nod-1.magedu.com上查看nfs共享挂载的情况

       CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第6张图片     


    

模拟故障是否能成功转移:


       CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第7张图片

       CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第8张图片

         从上图看当nod-1这个设定为"备用节点"后、集群资源已经转移到nod-2这个节点上。那么是否真的

         成功了呢(验证一下)

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第9张图片 

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第10张图片

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第11张图片




准备工作:

        SSH 双机互信

        本次实验中高可用集群中只2个节点:(nod-1| nod-2)

        nod-1.magedu.com (192.168.3.7)

        nod-2.magedu.com (192.168.3.8)

        nsf.magedu.com   (192.168.3.9)

        集群的IP

        mysqlip          (192.168.3.10)

        

        1、在第1个节点(nod-1.magedu.com)上执行以下命令:      

            cd ~/.ssh

             ssh-keygen -t rsa

             ssh-copy-id -i ./id_rsa.pub [email protected]


        2、在第2个节点(nod-2.magedu.com)上执行以下命令:

             cd ~/.ssh

             ssh-keygen -t rsa

             ssh-copy-id -i ./id_rsa.pub [email protected]


        3、在第3个节点(nfs.magedu.com)上安装配置rpcbind(nfs服务) 及ntp服务:

            nfs.magedu.com这台服务器同时提供(nfs|ntp)这2种服务。

            rpcbind可以使用yum命令来安装此处就不做多讲了。

    

            本次实验中计划将 nfs.magedu.com这台服务器上的/mysqldata/data做为共享

            导出来供(nod-1|nod-2)挂载。

            1.查看或编辑 nfs.magedu.com上的nfs共享

                [root@nfs ~]# cat /etc/exports 

                /mysqldata/data 192.168.3.0/24(rw,no_root_squash)


         2.在(nod-1|nod-2)执行挂载测试

            可以执行以下命令测试能否正常挂载(nfs.magedu.com)上的共享目录/mysqldata/data

            [root@nod-1 /]# mount -t nfs 192.168.3.9:/mysqldata/data  /mysqldata/data  

            [root@nod-2 /]# mount -t nfs 192.168.3.9:/mysqldata/data  /mysqldata/data  

   

            在创建并配置高可用集群的时候首先要做的便是要使用集群内各节点的时间保持同步

            在(nod-1|nod-2)上分别执行如下命令:        

            [root@nod-2 ~]# ntpdate 192.168.3.9

            9 Dec 12:00:42 ntpdate[11266]: step time server 192.168.3.9 offset 57574.355435 sec



 HeartBeat-2.1.4-11.el5.i386.rpm安装及配置                                     

下载链接:https://dl.fedoraproject.org/pub/epel/5/i386/

          http://rpm.pbone.net/

          http://rpmfind.net/

          http://fedoraproject.org/wiki/EPEL(这个地址有时候访问会很慢、使用×××软件会有明显改善)


RPM包:

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第12张图片

      安装顺序

        CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第13张图片 

        说明:

        devle包、和 ldirectord 包在本实验(高可用集群)当中暂时用不着所以用不着安装

        所以无需安装。

        net-snmp-libs-5.3.2.2-22.el5_10.1.i386.rpm

        在安装之前必须把系统自带net-snmp-libs包卸载掉(自带版本为net-snmp-libs-1:5.5-44.el6.i686)

        执行命令: yum  -e --nodeps  net-snmp-libs

                   rpm -ivh  net-snmp-libs-5.3.2.2-22.el5_10.1.i386.rpm

        gnutls-1.4.1-10.el5_9.2.i386.rpm

        在安装之前必须把系统自带gnutls包卸载掉(自带版本为gnutls-2.8.5-10.el6.i686)

        执行命令: yum  -e --nodeps  gnutls

                   rpm -ivh  gnutls-1.4.1-10.el5_9.2.i386.rpm

配置:

       使用crm与haresource 不同之处是haresource(配置文件有3个:authkeys,har.cf,haresources)       

        [root@nod-1 ~]# cd /etc/ha.d/

        [root@nod-1 ha.d]# ll

        total 48

        -rw-------. 1 root root   693 Dec  8 12:01 authkeys

        -rw-r--r--. 1 root root 10686 Dec  8 12:09 ha.cf

        -rwxr-xr-x. 1 root root   745 Mar 20  2010 harc

        -rw-r--r--. 1 root root  5905 Mar 20  2010 haresources

        drwxr-xr-x. 2 root root  4096 Dec  6 17:57 rc.d

        -rw-r--r--. 1 root root   692 Mar 20  2010 README.config

        drwxr-xr-x. 2 root root  4096 Dec  7 19:13 resource.d

        -rw-r--r--. 1 root root  7862 Mar 20  2010 shellfuncs

       authkeys: 是验证身份的密钥文件。只有通过验证的主机才能成为集群当中的节点。

                 出于安全的authkeys的权限必须设定为 600,否则执行service heartbeat start

                 时可能报错、并伴随有警告信息。

       ha.cf    是关于集群本身设定的配置文件(我们可以在此文件中设定有多少个节点、还可以

                设定心跳信息发送模式[bcast|mcast|ucast]即[广播|多播|单播],等各种参数)


       haresources  高可用集群中各资源的定义都位于此文件中


      因为我们此处要讲的是crm所以只需要对authkeyst和ha.cf进行配置即可

      1、authkeys   

        [root@nod-1 ha.d]# cat authkeys 

        # Authentication file.  Must be mode 600

        #

        #auth 1

        #1 crc

        #2 sha1 HI!

        #3 md5 Hello!


        auth 1

        1 md5 3c0d2f606e0ddd100509d42795436dc1

        [root@nod-1 ha.d]# 

        为了不占据空间多余的注释行我都删掉了、authkeys这个文件中需要修改的地方就2行:

            auth 1

            1 md5 3c0d2f606e0ddd100509d42795436dc

        它表示启用标识为1的加密方式、在1这个标识中我们指定了加密的方式为md5,后面一长串字符是salt。

      2、ha.cf

       在这个文件当中我们只需要修改4处地方

    

       #mcast eth0 225.0.0.1 694 1 0

       mcast eth0 225.0.0.1 694 1 0


       #node kathy

       node nod-1.magedu.com

       node nod-2.magedu.com


       #ping 10.10.10.254

       ping  192.168.3.9


      #compression_threshold 2

      crm on

      或者写成下面这种方式效果也是一样的(表示启用crm)

      crm respawn

     CRM:即 Cluster Resource Manager


     当authkeys和ha.cf这2个文件都配置完成后,可以执行以下命令:

     [root@nod-1 ha.d]# /usr/lib/heartbeat/ha_propagate

     把这2个配置好的文件分发至集群中的其它各节点对应目录下、不用我们手动去复制。

    

高可用

集群的常用命令

      关于集群日常维护命令及其参数的使用、有一个网友写的比较具体、此处就直接引用了。

      出处:http://czmmiao.iteye.com/blog/1181720

      crm_mon:crm_mon 命令允许您监视群集的状态和配置。其输出包括节点数、uname、uuid、状态

      、群集中配置的资源及其各自的当前状态。crm_mon 的输出可以显示在控制台上或打印到 HTML

      文件。当具有不包含状态部分的群集配置文件时,crm_mon 会按文件中所指定的方式创建节点

      和资源概览。 

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第14张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第15张图片


    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第16张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第17张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第18张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第19张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第20张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第21张图片

    CentOS6.4 高可用集群之基于heartbeat(crm)和nfs的mysql高可用_第22张图片