pacemaker + corosync 搭建高可用集群

来源:互联网 发布:煽扇除霾 知乎 编辑:程序博客网 时间:2024/06/05 18:47

一、什么是高可用集群

        高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务。高可用集群是用于单个节点发生故障时,能够自动将资源、服务进行切换,这样可以保证服务一直在线。在这个过程中,对于客户端来说是透明的。

二  实现高可用集群有三种方式:

(1)、主从方式(非对称)

这种方式组建的高可用集群通常包含2个节点和一个或多个服务器,其中一台作为主节点(active),另一台作为备份节点(standy)。备份节点随时都在检测主节点的健康状况,当主节点发生故障时,服务会自动切换到备份节点上以保证服务正常运行。

这种方式下的高可用集群其中的备份节点平时不会启动服务,只有发生故障时才会有用,因此感觉比较浪费。

(2)、对称方式

这种方式一般包含2个节点和一个或多个服务,其中每一个节点都运行着不同的服务且相互作为备份,两个节点互相检测对方的健康状况,这样当其中一个节点发生故障时,该节点上的服务会自动切换到另一个节点上去。这样可以保证服务正常运行。

(3)、多机方式

这种集群包含多个节点和多个服务。每一个节点都可能运行和不运行服务,每台服务器都监视着几个指定的服务,当其中的一个节点发生故障时,会自动切换到这组服务器中的一个节点上去。

三  实现高可用集群需要用到如下组件:

Messaging  Layer:可以理解为信息层,主要的作用是传递当前节点的心跳信息,并告知给对方,这样对方就知道其他节点是否在线。如果不在线,则可以实现资源转移,这样另一台节点就可以充当主节点,并正常提供服务。传递心跳信息一般使用一根心跳线连接,该线接口可以使用串行接口也可以是以太网接口来连接。每一个节点上都包含信息层。

可以提供该组件的软件有:

(1)heartbeat

heartbeat有三个版本即heartbeat v1、heartbeat  v2和heartbeat  v3

heartbeat v1是比较老的版本,heartbeat v2是目前稳定的版本,在做实验的时候使用该版本。

(2)corosync(openAIS的子项目)

(3)keepalive

(4)cman

Heartbeat 是比较常用的软件,Keepalived配置相对比较简单,而ultramonkey好像不怎么常用,Corosync比heartbeat功能还要强大,功能更加丰富

四 分别在node1,node2

yum install -y corosync pacemaker

设置配置文件

cp /etc/corosync/corosync.example.conf    /etc/corosync/corosync.conf

vim /etc/corosync/corosync.conf

totem {

        version: 2

        secauth: off

        threads: 0

        interface {

                ringnumber: 0

                bindnetaddr: 192.168.1.0

                mcastaddr: 226.94.1.1

                mcastport: 5405

                ttl: 1

        }

}

logging {

        fileline: off

        to_stderr: no

        to_logfile: yes

        to_syslog: yes

        logfile: /var/log/cluster/corosync.log

        debug: off

        timestamp: on

  }

}

amf {

        mode: disabled

}


把配置文件传给node2,启动服务即

 scp /etc/corosync/corosync.conf   node2:/etc/corosync/

 scp /etc/corosync/service.d/service   node2:/etc/corosync/service.d/

 service corosync start

 service pacemaker start

node2:

 service corosync start

 service pacemaker start


查看当前状态以及资源

crm_mon -1

============

Last updated: Sat May 27 10:56:55 2017

Last change: Sat May 27 10:55:57 2017 via crmd on node1

Stack: openais

Current DC: node1 - partition with quorum

Version: 1.1.7-6.el6-148fccfd5985c5590cc601123c6c16e966b85d14

2 Nodes configured, 2 expected votes

0 Resources configured.

============

Online: [ node1 node2 ]

如上所示,在线为node1,node2.下面介绍一些常用crm命令。

crm resource status 查看资源状态

crm node standby 离线

crm node online 在线

下面使用crm开始配置集群资源,我们首先配置VIP地址:

crm configure primitive vip ocf:heartbeat:ipaddr2 \

>params ip=172.25.254.6 cidr_netmask=32 op monitor interval=30s


查看vip配置以及状态(在哪一个节点运行)

crm configure show

crm resource status vip

resource vip is running on: node1
vip运行在node1上,配置http服务。

vim /etc/httpd/conf/httpd.conf

/Location

把LOCATION开启

并把下面改成127.0.0.1如下所示:

<Location /server-status>

    SetHandler server-status

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

</Location>

scp /etc/httpd/conf/httpd.conf  node2:/etc/httpd/conf


原创粉丝点击