博客大纲:

 

一、实验环境说明

二、配置前的准备工作

三、安装corosync和pacemaker,并提供配置

四、启动并检查corosync

五、crmsh 的安装及使用简介

六、使用crmsh配置集群资源

七、测试资源

八、关于资源约束的介绍以及使用资源约束定义资源

 

 

 

一、环境说明

1.操作系统

  • CentOS 6.4 X86 32 位系统

2.软件环境

  • Corosync 1.4.1

  • Pacemaker 1.1.8

  • crmsh 1.2.6

3.拓扑准备

使用Corosync+Pacemaker+nfs 实现高可用的Web集群_第1张图片

node1  172.16.120.176

node2 172.16.120.180

NFS server:

 

二、配置前的准备工作

1.配置各节点主机名可以相互解析

2.配置各节点时间同步

3.配置各节点ssh可以基于公私钥通信

4.关闭防火墙和selinux

 

#以上配置比较简单,不再这里做详细演示

三、安装corosyncpacemaker,并提供配置

1.安装

node1:

[root@node1 ~]#yum install -y corosync*

[root@node1 ~]#yum install -y pacemaker*

 

node2:

[root@node2 ~]#yum install -y corosync*

[root@node2 ~]#yum install -y pacemaker*


2.
提供配置文件

 

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

[root@node1corosync]# ls

amf.conf.examplecorosync.conf.example.udpu uidgid.d

corosync.conf.exampleservice.d

#可以看出,corosync 提供了一个配置文件的样例,我们只需拷贝一份作为配置文件即可:

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

 

3.定义配置

配置文件详解:

 

compatibility: whitetank#是否兼容whitetank(0.8之前的corosync)
totem {
#定义集群节点之间心跳层信息传递
        version: 2
        secauth: on  #是否启用安全认证功能,应启动
        threads: 0  #启动几个线程用于心跳信息传递
        interface {  #定义心跳信息传递接口
                ringnumber: 0           #循环次数为几次 0表示不允许循环
                bindnetaddr:172.16.120.1绑定的网络地址不是主机地址写网卡所在的网络的地址
                mcastaddr:226.94.1.1    #多播地址
                mcastport: 5405
                ttl: 1 #
        }
}
logging {#定义日志信息
        fileline: off
        to_stderr: no  #日志信息发往错误输出即发到屏幕
        to_logfile: yes
        to_syslog: yes  #是否记录在/var/log/message 改为no
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on  #当前时间的时间戳关闭可以减少系统调用,节约系统资源
        logger_subsys {
                subsys: AMF
                debug: off
        }
}
amf {
        mode: disabled
}

 

service {#定义服务

   ver: 0

   name: pacemaker  #启用pacemaker

}

aisexec {           定义进程执行时的身份以及所属组

   user: root

   group: root

}

 

 man corosync.conf 可以查看所有选项的意思。

 

 

4..生成秘钥文件

由于之前定义的secauth: on,所以应提供秘钥文件

 

[root@node1 corosync]# corosync-keygen

Corosync Cluster Engine Authentication key generator.

Gathering 1024 bits for key from /dev/random.

Press keys on your keyboard to generate entropy.

Press keys on your keyboard to generate entropy (bits = 192).

 

#注:corosync生成key文件会默认调用/dev/random随机数设备,一旦系统中断的IRQS的随机数不够用,将会产生大量的等待时间,因此,为了节约时间,我们在生成key之前讲random替换成urandom,以便节约时间。

[root@node1corosync]mv /dev/{random,random.bak}  
[root@node1corosync]ln -s /dev/urandom /dev/random

 

 

5. node2提供相同的配置,即key文件authkey与配置文件corosync.conf复制到node2

[root@node1corosync]# scp authkey corosync.conf root@node2:/etc/corosync/ 
authkey 100% 1280.1KB/s 00:00     
corosync.conf100% 541 0.5KB/s 00:00 

 

 

#到此为止corosync 安装配置完毕,

 

 

四、启动并检查corosync

1.启动服务

[root@node1 ~]#service corosync start

StartingCorosync Cluster Engine (corosync): [ OK ]

 

2.查看corosync引擎是否正常启动

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

Feb 26 17:33:28corosync [MAIN ] Corosync Cluster Engine ('1.4.1'): started and ready to provideservice.

Feb 26 17:33:28corosync [MAIN ] Successfully read main configuration file'/etc/corosync/corosync.conf'.

 

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

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

Feb 26 17:33:28corosync [TOTEM ] Initializing transport (UDP/IP Multicast).

Feb 26 17:33:28corosync [TOTEM ] Initializing transmit/receive security: libtomcryptSOBER128/SHA1HMAC (mode 0).

Feb 26 17:33:28corosync [TOTEM ] The network interface [172.16.120.176] is now up.

Feb 26 17:33:28corosync [TOTEM ] Process pause detected for 616 ms, flushing membershipmessages.

Feb 26 17:33:28corosync [TOTEM ] A processor joined or left the membership and a new membershipwas formed.

Feb 26 17:33:46corosync [TOTEM ] A processor joined or left the membership and a newmembership was formed.

 

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

[root@node1 ~]#grep ERROR: /var/log/cluster/corosync.log

Feb 26 17:33:28corosync [pcmk ] ERROR: process_ais_conf: You have configured a cluster using thePacemaker plugin for CorosyncThe plugin is not supported in this environment and willbe removed very soon.

Feb 26 17:33:28corosync [pcmk ] ERROR: process_ais_conf: Please see Chapter 8 of 'Clustersfrom Scratch' (http://www.clusterlabs.org/doc) for details on using Pacemakerwith CMAN

 

#上面的错误信息表示packmaker不久之后将不再作为corosync的插件运行,因此,建议使用cman作为集群基础架构服务;此处可安全忽略。

 

5.查看pacemaker是否正常启动

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

Feb 2617:33:28 corosync [pcmk ] info: pcmk_startup: CRM: Initialized

Feb 2617:33:28 corosync [pcmk ] Logging: Initialized pcmk_startup

Feb 2617:33:28 corosync [pcmk ] info: pcmk_startup: Maximum core file size is:4294967295

Feb 2617:33:28 corosync [pcmk ] info: pcmk_startup: Service: 9

Feb 2617:33:28 corosync [pcmk ] info: pcmk_startup: Local hostname: node1.drbd.com

6.如果上面命令执行均没有问题,接着可以执行如下命令启动node2上的corosync 

[root@node1 ~]#ssh node2 "service corosync start"

StartingCorosync Cluster Engine (corosync): [ OK ]

 

7.查看状态

[root@node1~]# crm_mon

Last updated:Wed Feb 26 17:41:58 2014

Last change:Wed Feb 26 17:33:51 2014 via crmd on node1.drbd.com

Stack: classicopenais (with plugin)

CurrentDC: node1.drbd.com- partition with quorum

Version:1.1.10-14.el6_5.2-368c726

2 Nodesconfigured, 2 expected votes

0 Resourcesconfigured

Online: [node1.drbd.com node2.drbd.com ]

 

#执行以下命令可以看出服务正常启动,此时node1DC,但是0Resources configured此时,我们开始定义资源信息

 

 

五、crmsh 的安装及使用简介

1.Pacemaker 配置资源方法

(1).命令配置方式
crmsh
pcs
(2).
图形配置方式
pygui
hawk
LCMC
pcs

注:本文主要的讲解的是crmsh

2.安装crmsh

RHEL6.4起不再提供集群的命令行配置工具crmsh,转而使用pcs;如果你习惯了使用crm命令,可下载相关的程序包自行安装即可。crmsh依赖于pssh,因此需要一并下载。

crmsh官方网站https://savannah.nongnu.org/forum/forum.php?forum_id=7672

[root@node1 vincent]# ll

total 988

-rwxr--r--. 1vincent vincent 500364 Feb 25 10:06 crmsh-1.2.6-6.1.i686.rpm

-rwxr--r--. 1vincent vincent 14124 Feb 25 10:06 crmsh-debuginfo-1.2.6-6.1.i686.rpm

33.el6.i686.rpm 

-rwxr--r--. 1vincent vincent 51128 Feb 25 10:07 pssh-2.3.1-3.2.i686.rpm

-rwxr--r--. 1vincent vincent 3892 Feb 25 10:07 pssh-debuginfo-2.3.1-3.2.i686.rpm

# yum -y--nogpgcheck localinstall crmsh*.rpm pssh*.rpm

 

[root@node1vincent]# yum localinstall -y crmsh* pssh*

 

#实验用到的crmsh以及pssh安装包的版本,到此为止,crmsh安装完毕,接下来,我们使用crm配置集群资源,



 

3. crm 使用简介

[root@node1 ~]# crm#enter键,进入交互界面

crm(live)# ?

This is crm shell, a Pacemaker command line interface.

Available commands: #在此界面下可以用到的指令

 cib manage shadow CIBs

 resource resources management

 configureCRM clusterconfiguration

 node nodes management

 options user preferences

 history CRM cluster history

 site Geo-cluster support

raresource agents information center

statusshowcluster status

 help,? show help (help topics for list of topics)

 end,cd,up go back one level

 quit,bye,exit exit the program

crm(live)# status  #输入status 可以查看当前信息

Last updated: Wed Feb 26 17:58:42 2014

Last change: Wed Feb 26 17:33:51 2014 via crmd on node1.drbd.com

Stack: classic openais (with plugin)

Current DC: node1.drbd.com - partition with quorum

Version: 1.1.10-14.el6_5.2-368c726

2 Nodes configured, 2 expected votes

0 Resources configured

Online: [ node1.drbd.com node2.drbd.com ]

crm(live)# configure#进入配置模式
crm(live)configure#help #查看帮助

This level enables all CIB object definition commands. 

The configuration may be logically divided into four parts:

nodes, resources, constraints, and (cluster) properties and

attributes. Each of these commands support one or more basic CIB

objects.

Nodes and attributes describing nodes are managed using the

`node` command.

Commands for resources are:

- `primitive`

- `monitor`

- `group`

crm(live)configure# help primitive#查看primitive的使用

 

Usage:

...............

        primitive{[:[:]]|@