|
1.corosync概述
Corosync是OpenAIS发展到Wilson版本后衍生出来的开放性集群引擎工程。可以说Corosync是OpenAIS工程的一部分。OpenAIS从openais0.90开始独立成两部分,一个是Corosync;另一个是AIS标准接口Wilson。Corosync包含OpenAIS的核心框架用来对Wilson的标准接口的使用、管理。它为商用的或开源性的集群提供集群执行框架。
2.安装配置corosync+pacemaker
1).准备工作
配置各节点SSH互信:
1
2
3
4
5
6
| # node1
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.220.133
# node2
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.220.132
|
配置主机名称与uname -n一致,并通过/etc/hosts解析:
1
2
3
4
5
6
7
8
9
10
| # node1
hostname node1.wyb.com
sed -i 's@\(HOSTNAME=\).*@\1node1.wyb.com@g' /etc/sysconfig/network
echo '192.168.220.132 node1.wyb.com node1' >> /etc/hosts
echo '192.168.220.133 node2.wyb.com node2' >> /etc/hosts
# node2
hostname node2.wyb.com
sed -i 's@\(HOSTNAME=\).*@\1node2.wyb.com@g' /etc/sysconfig/network
echo '192.168.220.132 node1.wyb.com node1' >> /etc/hosts
echo '192.168.220.133 node2.wyb.com node2' >> /etc/hosts
|
时间同步:
1
2
3
| # node1 node2
ntpdate asia.pool.ntp.org
echo '*/3 * * * * /usr/sbin/ntpdate asia.pool.ntp.org &> /dev/null' >> /var/spool/cron/root
|
2).安装
1
2
3
4
5
| [iyunv@node1 coorosync]# ls
cluster-glue-1.0.11-3.1.x86_64.rpm corosynclib-1.4.7-1.el6.x86_64.rpm pacemaker-1.1.9-2.1.x86_64.rpm pacemaker-libs-1.1.9-2.1.x86_64.rpm
cluster-glue-libs-1.0.11-3.1.x86_64.rpm crmsh-2.1-1.6.x86_64.rpm pacemaker-cli-1.1.9-2.1.x86_64.rpm pssh-2.3.1-5.el6.noarch.rpm
corosync-1.4.7-1.el6.x86_64.rpm libqb0-0.14.4-1.1.x86_64.rpm pacemaker-cluster-libs-1.1.9-2.1.x86_64.rpm resource-agents-3.9.5-3.1.x86_64.rpm
[iyunv@node1 coorosync]# yum --nogpgcheck localinstall *.rpm
|
3).配置
主配置文件:
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
34
35
36
| [iyunv@node1 coorosync]# cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
[iyunv@node1 coorosync]# grep -vE "^([[:space:]]*#)|^$" /etc/corosync/corosync.conf
compatibility: whitetank #表示是否支持0.8之前的版本
totem { #图腾,这是用来定义集群中各节点中是怎么通信的
version: 2 #各节点互相通信的协议的版本
secauth: on #各节点间通信是否需要认证
threads: 0 #使用多少线程进行加密和发送多播信息
interface {
ringnumber: 0 #环号码,避免消息环路产生
bindnetaddr: 192.168.220.0 #绑定的网络地址
mcastaddr: 239.255.1.1 #多播地址
mcastport: 5405 #多播端口
ttl: 1
}
}
logging { #日志相关
fileline: off
to_stderr: no
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: no
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
service { #定义启动corosync时启动pacemaker
ver: 0
name: pacemaker
}
aisexec { #定义以哪个用户和组启动corosync
user: root
group: root
}
|
生成认证文件并复制配置文件到node2上:
1
2
3
4
5
| [iyunv@node1 coorosync]# mv /dev/random{,.bak} #如果不替换random,可能会由
[iyunv@node1 coorosync]# ln -sv /dev/urandom /dev/random 于熵池不足而导致生成认证文件慢
[iyunv@node1 coorosync]# corosync-keygen
[iyunv@node1 coorosync]#cd /etc/corosync
[iyunv@node1 coorosync]# scp authkey corosync.conf node2:/etc/corosync/
|
|
|
|
|
|
|
|