|
一、Corosync概述
1、什么是AIS和OpenAIS?
AIS是应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放、高移植性的程序接口。是在实现高可用应用过程中是亟需的。服务可用性论坛(SA Forum)是一个开放性论坛,它开发并发布这些免费规范。使用AIS规范的应用程序接口(API),可以减少应用程序的复杂性和缩短应用程序的开发时间,这些规范的主要目的就是为了提高中间组件可移植性和应用程序的高可用性。
OpenAIS是基于SA Forum 标准的集群框架的应用程序接口规范。OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,集群监测等,能够为集群软件或工具提供满足 AIS标准的集群接口,但是它没有集群资源管理功能,不能独立形成一个集群。
2、corosync简介
corosync最初只是用来演示OpenAIS集群框架接口规范的一个应用,可以说corosync是OpenAIS的一部分,但后面的发展明显超越了官方最初的设想,越来越多的厂商尝试使用corosync作为集群解决方案。如Redhat的RHCS集群套件就是基于corosync实现。
corosync只提供了message layer,而没有直接提供CRM,一般使用Pacemaker进行资源管理。
3、小结
不管是heartbeat,还是corosync都是高可用集群中的Cluster Messaging Layer(集群信息层),是主要传递发集群信息与心跳信息的,并没有资源管理功能,资源管理还得依赖于上层的crm(Cluster resource Manager,集群资源管理器)。最著名的资源管理器,就是pacemaker,它是heartbeat v3分离出去的子项目。而现在corosync+pacemaker成了高可用集群中的最佳组合。好了,到这里corosync与pacemaker的基础知识就说到这里了,下面我们来看看怎么安装corosync与pacemaker。
二、环境准备
1、拓扑结构
2、服务器配置情况
名称 | IP | 安装软件 | 系统 | node1.wzlinux.com | VIP:192.168.0.18
eth0:192.168.0.10
| corosync、pacemaker
DRBD、Mysql
| CentOS 6.4 32位 | node2.wzlinux.com | VIP:192.168.0.18 eth0:192.168.0.11 | corosync、pacemaker DRBD、Mysql | CentOS 6.4 32位 | 3、关闭防火墙、SELinux和配置时间同步
1
2
3
4
5
| #关闭防火墙
service iptables stop
#关闭SELinux
sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
|
4、配置各节点互相解析
node1:
1
2
3
4
5
6
7
| [iyunv@node1 ~]# uname -n
node1.wzlinux.com
[iyunv@node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.10 node1.wzlinux.com node1
192.168.0.11 node2.wzlinux.com node2
|
node2:
1
2
3
4
5
6
7
| [iyunv@node2 ~]# uname -n
node2.wzlinux.com
[iyunv@node2 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.10 node1.wzlinux.com node1
192.168.0.11 node2.wzlinux.com node2
|
5、配置各节点ssh互信
node1:
1
2
| [iyunv@node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[iyunv@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2.wzlinux.com
|
node2:
1
2
| [iyunv@node2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[iyunv@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1.wzlinux.com
|
三、软件的安装
以下如果没有特别说明,就是在node1和node2上面同时执行。
1、corosync和pacemaker的安装
RHEL6.x以后的版本中,直接集成了corosync和pacemaker,因此直接使用yum安装即可。
1
| yum install corosync pacemaker -y
|
2、查看corosync安装生成文件
# rpm -ql corosync
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| /etc/corosync #配置文件目录
/etc/corosync/corosync.conf.example #配置事例文件
/etc/corosync/corosync.conf.example.udpu
/etc/corosync/service.d
/etc/corosync/uidgid.d
/etc/dbus-1/system.d/corosync-signals.conf
/etc/rc.d/init.d/corosync #服务脚本
/etc/rc.d/init.d/corosync-notifyd
/etc/sysconfig/corosync-notifyd
/usr/bin/corosync-blackbox
/usr/libexec/lcrso
/usr/libexec/lcrso/coroparse.lcrso
/usr/libexec/lcrso/objdb.lcrso
/usr/libexec/lcrso/quorum_testquorum.lcrso
/usr/libexec/lcrso/quorum_votequorum.lcrso
/usr/libexec/lcrso/service_cfg.lcrso
/usr/libexec/lcrso/service_confdb.lcrso
/usr/libexec/lcrso/service_cpg.lcrso
/usr/libexec/lcrso/service_evs.lcrso
/usr/libexec/lcrso/service_pload.lcrso
/usr/libexec/lcrso/vsf_quorum.lcrso
/usr/libexec/lcrso/vsf_ykd.lcrso
/usr/sbin/corosync
/usr/sbin/corosync-cfgtool
/usr/sbin/corosync-cpgtool
/usr/sbin/corosync-fplay
/usr/sbin/corosync-keygen #集群间通讯秘钥生成工具
/usr/sbin/corosync-notifyd
/usr/sbin/corosync-objctl
/usr/sbin/corosync-pload
/usr/sbin/corosync-quorumtool
/usr/share/doc/corosync-1.4.7
…… ……
|
3、配置corosync
1
2
| cd /etc/corosync/
cp corosync.conf.example corosync.conf
|
# cat corosync.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| # Please read the corosync.conf.5 manual page
compatibility: whitetank
totem {
version: 2 #版本号,只能是2,不能修改
secauth: on #安全认证,当使用aisexec时,会非常消耗CPU
threads: 2 #线程数,根据CPU个数和核心数确定
interface {
ringnumber: 0 #冗余环号,节点有多个网卡是可定义对应网卡在一个环内
bindnetaddr: 192.168.0.0 #绑定心跳网段
mcastaddr: 226.94.8.8 #心跳组播地址
mcastport: 5405 #心跳组播使用端口
ttl: 1
}
}
logging {
fileline: off #指定要打印的行
to_stderr: no #是否发送到标准错误输出
to_logfile: yes #记录到文件
to_syslog: no #记录到syslog
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on #是否打印时间戳,利于定位错误,但会消耗CPU
logger_subsys {
subsys: AMF
debug: off
}
}
service {
ver: 0
name: pacemaker #定义corosync启动时同时启动pacemaker
}
|
4、生成密钥文件
corosync生成key文件会默认调用/dev/random随机数设备,一旦系统中断的IRQS的随机数不够用,将会产生大量的等待时间,因此,为了节约时间,我们在生成key之前讲random替换成urandom,以便节约时间。
1
2
3
4
5
6
7
| [iyunv@node1 corosync]# mv /dev/{random,random.bak}
[iyunv@node1 corosync]# ln -s /dev/urandom /dev/random
[iyunv@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.
Writing corosync key to /etc/corosync/authkey.
|
然后把配置好的配置文件传输到领一台设备上面
1
| [iyunv@node1 corosync]# scp -p authkey corosync.conf node2:/etc/corosync/
|
四、corosync的启动与检查
1、corosync的启动
1
2
3
4
| [iyunv@node1 corosync]# service corosync start
Starting Corosync Cluster Engine (corosync): [OK]
[iyunv@node1 corosync]# ssh node2 'service corosync start'
Starting Corosync Cluster Engine (corosync): [OK]
|
|
|
|
|
|
|
|