Chinaunix首页 | 论坛 | 博客
  • 博客访问: 388168
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1741
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-21 22:46
文章分类
文章存档

2014年(22)

2013年(45)

分类: 网络与安全

2014-02-27 18:17:30

博客大纲:

 

一、实验环境说明

二、配置前的准备工作

三、安装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.拓扑准备

wKiom1MO7uDDa9rBAAJbJJpfyGs142.jpg

node1  172.16.120.176

node2 172.16.120.180

NFS server:

 

二、配置前的准备工作

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

2.配置各节点时间同步

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

4.关闭防火墙和selinux

 

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

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

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 Corosync. The 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' () 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 ]

 

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

 

 

五、crmsh 的安装及使用简介

1.Pacemaker 配置资源方法

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

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

2.安装crmsh

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

crmsh官方网站

[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{[:[:]]|@