corosync pacemaker 配置高可用集群(一)

1-1、corosync与OpenAIS的关系

       corosync是在2008年OpenAIS发展到Wilson版本后衍生出来单独项目软件,即从OpenAIS 0.90开始独立成两部分,一个是Corosync;另一个是AIS标准接口Wilson。

       AIS(Application Interface Standard, 应用接口规范)定义中间层次。OpenAIS源自于SA Forum(服务可用性论坛)。OpenAIS提供了一种集群模式,包含集群框架、集群成员管理、通信方式、集群监测,但没有集群资源管理功能。引用网上的一张关系图,注意蓝色椭圆为OpenAIS:

1-2,1.x(flatiron)和2.x(needle)版本区别

       现在在官网上存在1.4.8的flatiron和2.4.1的needle版本,也就是常说的1.x版本和2.x版本,2版本的CoroSync。2版本和1版本差别很大,1版本不具有投票功能,2版本引入votequorum后才有独立完整的投票系统;1版本如果想要使用投票功能的话,得使用cman(cluster manager,红帽RHCS),把一个作为另一个的插件运行。而2版本投票功能比cman优秀,自此cman退出江湖,不再有主导地位,配置文件由corosync主导。

2、认识pacemaker

       Pacemaker是一个集群资源管理器。它利用集群基础构件(heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。

2-1、pacemaker与heartbeat的关系

       前面说的heartbeat v2版本包括了Messaging Layer 集群信息层功能和资源管理器(CRM),而heartbeat v3版本只有Messaging Layer 集群信息层功能,资源管理器分离成一个单独项目,这个项目就是pacemaker。

       相比heartbeat v2,pacemaker配置接口更强大:CLI:crm sh、pcs和GUI:hawk(WEB-GUI)、LCMC、pacemaker-mgmt、pcs等。下面将会用crm sh来配置。

       下图为官网上提供的集群组件关系:

 

       所以heartbeat v3/corosync+ pacemaker,才能构成一个完整的高可用集群:

heartbeat v2+haresource/crm (说明:一般常用于CentOS 5.X)

heartbeat v3+pacemaker (说明:一般常用于CentOS 6.X)

corosync+pacemaker (说明:现在最常用的组合,因为heartbeat 存在一些稳定性问题,v3拆分后发展也比较缓慢)

      下面将用corosync+pacemaker来搭建简单的WEB高可用集群。

3、高可用集群架构设计

    具体架构资源如下:

1、节点主机系统:RHEL 5.8 64bit

2、高可用集群软件:corosync + pacemaker

3、两台节点主机node1,node2:

Node1: IP:192.168.18.241 host name:node1.tjiyu,com;

Node2: IP:192.168.18.242 host name:node2.tjiyu.com;

VIP: 192.168.18.240

4、一台NFS服务主机:

            IP:192.168.18.243 共享目录:/web/hahtml

5、所提供服务:WEB(httpd)

4、相关准备配置

   前面说到的集群高可用配置前所需要的准备:

1、配置IP、安装WEB服务、关闭防火墙;

2、配置各节点名称;

3、建立各节点间的SSH互信通信;

4、各节点间的时间同步;

5、NFS服务配置;

      这里就不再详细给出了,下面先将corosync 和 pacemaker下载安装。

5、corosync 和 pacemaker下载安装

      由于这里用到的是RHEL 5.8 64bit系统,得安装corosync的1版本,安装最新版本可能兼容性问题,可以到网址:https://packages.endpoint.com/rhel/5/os/x86_64/,下载能完全兼容的rpm包,为方便我们直接下载endpoint-repo-1.0-3.x86_64.rpm配置好该站点的yum源,然后可以直接yum安装,自动解决依赖关系,过程如下:

[root@node1 ~]# rpm -ivh endpoint-repo-1.0-3.x86_64.rpm

[root@node1 ~]# yum install corosync pacemaker

       我们看到下载安装了18相关的包,其中cluster-glue(让集群中各组件结合起来协同工作)、cluster-glue-libs、heartbeat(v3,pacemaker默认依赖heartbeat,安装上不启用即可)、 heartbeat-libs、resource-agents、corosync、corosynclib、pacemaker、pacemaker-libs都是可以在上面给出的站点下载到的,所以也可以下载放到两台主机上,执行安装。

       两节点主机如上安装好,下面开始配置。

6、配置corosync

6-1、配置corosync.conf配置文件

       我们执行rpm -ql corosync可以看到corosync安装后的文件位置信息,其中我们看到/etc/corosync/corosync.conf.example,这个文件是corosync配置样例文件,我们只需在该目录下复制一份,并重命名为corosync.conf,就可以对其进行配置了:

[root@node1 ~]# cd /etc/corosync/

[root@node1 corosync]# cp corosync.conf.example corosync.conf

[root@node1 corosync]# vim corosync.conf

       文件配置信息如下(特别注意的是consensus:2400    ,节点协商时间,本机上小于1200ms启动会报错):

totem {        #图腾,每个node同其它node通信通过totem定义

version: 2 #配置文件的版本号,唯一合法的版本号为2,不是说我们改动过就是第一版之类的,是被corosync所支持的版本,各版本间语法不同

secauth: on #安全认证,为安全要开启,用HMAC/SHA1加密,会消耗系统资源

threads: 2 #开启多个线程执行加密或多播,若secauth为off这项就没用,若为on此项才有意义

consensus:2400    #节点协商时间,本机上小于1200ms启动会报错

interface {

ringnumber: 0 #每个接口所定义的环,若仅有一个node不定义此项,若有多个node,每个node有两块网卡(冗余),定义多个node上的eth0是一个环,eth1是一环,若有多个node没定义此项,消息在网络中会形成环路一起传递下去

bindnetaddr: 192.168.18.0 #绑定的网络地址,若一个node上有两块网卡,在哪个网络上传递信息,在哪个网络进行多播,这项定义的是网络,不能写IP,是IP所在的网络地址

mcastaddr: 226.98.8.19 #D类IP,仅能使用224.0.2.0~238.255.255.255

mcastport: 5405 #组播端口

}

}

logging {

fileline: off #定义不同的日志间打印分隔符

to_stderr: no #发到标准错误输出,也就是屏幕

to_logfile: yes #使用指定文件记录日志

to_syslog: no #用系统自带的syslog记录/var/log/messages,只开一项即可

logfile: /var/log/cluster/corosync.log #此目录不存在,记得在开启服务前要创建此目录

debug: off #出错时打开此项调试

timestamp: on #记录时间戳,能定位错误,若开启此项每记录一次日志都要获取一次当前系统时间(一次系统调用要返回用户空间,内核通过硬件获取时间),多记录一个条目会使文件体积变大)

logger_subsys { #日志子系统信息

subsys: AMF

debug: off

}

}

amf {

mode: disabled(没安装openais,未启用)

}

service { #添加此段,启动corosync时,将pacemaker也启动

ver: 0

name: pacemaker

#use_mgmtd: yes

}

aisexec { #运行openais所指定用户和组,由于未安装openais,此段忽略

user: root

group: root

}

6-2、配置authkey密钥认证文件

我们看到生成了/etc/corosync/authkey的加密数据,过程如下:

[root@node1 corosync]# corosync-keygen

6-3、两个文件远程复制到node2

      上面在node1上配置好了这两个文件,可以直接远程复制到node2上,内容、权限都一样:

[root@node1 corosync]# scp -p authkey corosync.conf node2:/etc/corosync/

7、启动测试

1、在node1上先启动自己的corosync服务,再SSH远程启动node2的,用crm_mon查看监控状态,可以看到两个节点都正常上线,DC为node1:

[root@node1 corosync]# service corosync start

[root@node1 corosync]# ssh node2 'service corosync start'

[root@node1 corosync]# crm_mon

2、查看日志/var/log/corosync.log,一切正常:

查看corosync引擎是否正常启动:

root@node1 corosync]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/corosync.log

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

root@node1 corosync]# grep TOTEM /var/log/corosync.log

查启动过程中是否有错误产生:

root@node1 corosync]# grep ERROR: /var/log/corosync.log | grep -v unpack_resources

看pacemaker是否正常启动:

root@node1 corosync]# grep pcmk_startup /var/log/corosync.log

 

        到这里,配置corosync+pacemaker 可以正常运行了,下篇《corosync pacemaker 配置高可用集群(二)》将用crm sh接着进行corosync+pacemaker +NFS共享存储的WEB高可用集群的余下相关配置……

posted @ 2017-09-16 15:51  chenghuan  阅读(407)  评论(0编辑  收藏  举报