3个节点基于corosync+pacemaker架构实现集群的高可用

4557阅读 0评论2011-09-15 hanlenry
分类:LINUX

使用3个节点构建基于corosync/openais+pacemaker 架构实现Web服务,Ftp服务的高可用集群。设置:Web服务,更倾向于在node1上,Ftp服务更倾向于再node3上。

拓扑图:

 

有些内容我在之前的文章基于corosync/openais+pacemaker构建高可用集群中已经介绍过了,这里就不在多做赘述。我就直接开始配置了。

 

1. 配置网络环境

              1)在node1上,配置ip和主机名。

配置ip

             #vim /etc/sysconfig/network-scripts/ifcfg-eth0

                     修改:BOOTPROTO=static

                     添加:IPADDR=192.168.0.111

                           NETMASK=255.255.255.0

   

             配置主机名

              #vim /etc/sysconfig/network

                     修改:HOSTNAME=node1.hanlenry.com

              #hostname node1.hanlenry.com

             

              添加地址解析条目

              #vim /etc/hosts

                     添加:192.168.0.111          node1.hanlenry.com  node1

         192.168.0.112          node2.hanlenry.com  node2

                           192.168.0.151          node3.hanlenry.com  node3

      生成私钥

            #ssh-keygen -t rsa

         node2node3 拷贝自己的公钥。

            #ssh-copy-id -i .ssh/id_rsa.pub root@node2

            # ssh-copy-id -i .ssh/id_rsa.pub root@node3      

      hosts文件给node2node3 各一份

            #scp /etc/hosts node2:/etc

            #scp /etc/hosts node3:/etc

 

              2)在node2上,配置ip和主机名

              配置ip

              #vim /etc/sysconfig/network-scripts/ifcfg-eth0

                     修改:BOOTPROTO=static

                     添加:IPADDR=192.168.0.112

                           NETMASK=255.255.255.0

   

             配置主机名

              #vim /etc/sysconfig/network

                     修改:HOSTNAME=node2.hanlenry.com

              #hostname node2.hanlenry.com

 hosts文件已经有了,这里就不需要设置了。

 -------------------------------------------------------------------------

            生成私钥

             #ssh-keygen -t rsa

            node1node3 拷贝自己的公钥

             #ssh-copy-id -i .ssh/id_rsa.pub root@node1

     #ssh-copy-id -i .ssh/id_rsa.pub root@node3

        

  3)在node3上,配置ip和主机名

              配置ip

              #vim /etc/sysconfig/network-scripts/ifcfg-eth0

                     修改:BOOTPROTO=static

                     添加:IPADDR=192.168.0.151

                           NETMASK=255.255.255.0

   

             配置主机名

              #vim /etc/sysconfig/network

                     修改:HOSTNAME=node3.hanlenry.com

              #hostname node3.hanlenry.com

             

              hosts文件已经有了,这里也不需要设置了。

 

           生成私钥

            #ssh-keygen -t rsa

           node1node2 拷贝自己的公钥

            #ssh-copy-id -i .ssh/id_rsa.pub root@node1

    #ssh-copy-id -i .ssh/id_rsa.pub root@node2

 

2. 安装corosynchttpdvsftpd

    注意:首先请同步你的系统时间(node1node2node3)

         #hwclock -s

需要的软件包:

cluster-glue-1.0.6-1.6.el5.i386.rpm              libesmtp-1.0.4-5.el5.i386.rpm

cluster-glue-libs-1.0.6-1.6.el5.i386.rpm    openais-1.1.3-1.6.el5.i386.rpm

corosync-1.2.7-1.1.el5.i386.rpm                 openaislib-1.1.3-1.6.el5.i386.rpm

corosynclib-1.2.7-1.1.el5.i386.rpm              pacemaker-1.0.11-1.2.el5.i386.rpm

pacemaker-libs-1.0.11-1.2.el5.i386.rpm           resource-agents-1.0.4-1.1.el5.i386.rpm

heartbeat-3.0.3-2.3.el5.i386.rpm                perl-TimeDate-1.16-5.el5.noarch.rpm

heartbeat-libs-3.0.3-2.3.el5.i386.rpm    

 

我将软件包放在/root/corosync目录下。

 

node1node2node3

       #cd /root/corosync

        #yum localinstall *.rpm -y –nogpgcheck

        #yum install httpd vsftpd

禁止开机自动启动:

        #chkconfig httpd off

        #chkconfig vsftpd off

Node1:

        #cd /etc/corosync

        #cp corsync.conf.example corosync.conf

        #vim !$

         (没有指定的则是使用默认设置)

        totem 定义多个节点之间协调心跳信息的相关协议

                secauth:on 是否打开安全的sec认证,建议打开此项。

                threads:0  用多少个线程进行认证,0表示不做限制

                interface 在哪个网卡地址上通信

                bindnetaddr192.168.0.0 网络地址,如果你使用的主机ip,那么系统会自动把它转换成网络地址

                mcastaddr 多播地址

 

        logging 日志定义

                to_stderr  是否标准错误输出

                to_logfile

                to_syslog

                logfile:  日志目录,需要手动创建

                debugoff

                timestamp:on 记录时间戳

       添加: 启动pacemaker

                    service {

                                ver:  0

                                name: pacemaker

                                }

                当要执行ais组件时,需要以root身份            

                    ai***ec {

                                user:  root

                                group: root

                                }  

-----------------------------------                

生成authkey

              #corosync-keygen

-----------------------------------

将配置文件传递到node2node3

              #scp –p authkey corosync.conf node2:/etc/corosync

              #scp –p authkey corosync.conf node3:/etc/corosync

 

node2node3创建日志目录:

              #ssh node2 ‘mkdir –v /var/log/cluster’

              #ssh node3 ‘mkdir –v /var/log/cluster’

 

3.启动corosync

 1) node1:

        #service corosync start

        #ssh node2 ‘service corosync start’

        #ssh node3 ‘service corosync start’

 2) node1,node2,node3上:

测试:以下几步测试,必须要做。

1.产看引擎是否正常启动

         grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages

       2.查看初始化成员节点通知是否正常发出

         grep  TOTEM  /var/log/messages

       3.检查启动过程中是否有错误产生

         grep ERROR: /var/log/messages | grep -v unpack_resources

       4.查看pacemaker是否正常启动

         grep pcmk_startup /var/log/messages

 

查看当前集群状态的online情况

        #crm status

此时只显示3个节点都处于online,但并没有资源。于是下面我们就来添加资源。

 

 

4.配置高可用服务

使用pacemaker专门提供配置集群资源的命令行接口。使用crm命令,crm命令我在基于corosync/openais+pacemaker构建高可用集群文章中已经做过简单介绍了,这里就不再赘述了。

 

        #crm configure show 查看当前CIB的配置信息

        #crm_verify -L 检查当前的集群是否有故障

此处可能会有一些错误,会提示有关STONITH的错误。因为我们的实验环境并没有STONITH设备,因此此处要禁掉STONISH的检测。

        #crm configure property stonith-enable=false

 

 

配置资源

好,接下来我们就开始定义资源

使用crm命令定义资源的格式,在configure模式下:指定资源类型,资源名字,资源代理,指定参数

 

1.先配置第一个资源,ip

        crm(live)configure# primitive WebIP ocf:heartbeat:IPaddr params ip=192.168.0.12

crm(live)configure#show

如图:

如果确认无误,就可以提交了

crm(live)configure #commit

2.配置第二个资源,服务

        crm(live)configure #primitive WebServer lsb:httpd

        crm(live)configure #show

如图:

 

3.将上面的两个资源加入到Web组中

        configure#group Web WebIP WebServer

        configure#show

如图:

提交:

             crm(live)configure #commit

 

查看资源状态:# crm status

 

 

Web组中的资源定义到更倾向于node1

#crm configure location Web_on_node1 Web 500: node1.hanlenry.com

查看资源状态:#crm status

如图:

     

 

node2上,把node1关掉:

              #ssh node1 ‘service corosync stop’

    

 

node2上,把node1开启,资源会流转回来。

              #ssh node1 ‘service corosync start’

       


添加有关ftp服务的资源

1添加ip资源

              crm(live)configure# primitive FtpIP ocf:heartbeat:IPaddr params ip=192.168.0.11

2添加vsftpd资源

              crm(live)configure #primitive FtpServer lsb:vsftpd

              crm(live)configure #show

 

FtpIPvsftpd资源添加到FTP组中,并定义其更愿意在node3节点上。

      crm(live)configure #group Ftp FtpIP FtpServer

        crm(live)configure #location Ftp_on_node3 Ftp 500: node3.hanlenry.com

        crm(live)configure #show

如图所示:

 

查看资源状态:

#crm status

如图所示:

 

下面我们来看一下ip资源的流转情况

如图所示。下图为node1节点的ip

 

下图为node3节点的ip

5.访问Web服务和Ftp服务

我就直接以图例来说明吧。

访问Web服务的:

访问Ftp服务:

6.最后的测试就交给诸位自己验证了。

注意:当你把node1node2都停掉后,资源可能会无法流转,是因为quorum的问题。每个节点的票数为1,此时把node1node3关闭掉,node2的法定票数为1,小于总体法定票数的一半,因此资源无法流转到node2节点上。

使用# crm configure propertiry no-quorum-policy=ignorequorum忽略掉。

 

此时你再去验证:

查看资源状态:

访问Web服务:

查看ip资源情况:

上一篇:基于corosync/openais+pacemaker构建高可用集群
下一篇:DRBD的简单配置