前言:
1.Corosync/Openais Pacemaker
集群资源管理器,诞生自08年,在2008年,Openais分裂为Openais和Corosync(2008)。
Corosync功能:提供一种机制:让HA多个节点之间能够传递心跳,计算quorum,决定集群的运行属性
与heartbeat作比较:
在可配置性,管理接口方面有不小改进
发展前景 优于 Heartbeat
比heartbeat功能更强大
结论,使用Corosync是将来的一种趋势,构建HA尽可能采用Corosync
2.pacermaker
由heartbeat v3分裂出来的项目
提供了一个CRM的命令行接口,实现整个集群的配置监控等各种工作,不需要其他任何辅助程序。
附:提供的图形化配置工具:hb_gui
3.RPM安装包:
由于pacemaker依赖于heartbeat,RPM安装pacemaker需要安装heartbeat,编译安装则不需要
以下为需要安装的软件包:
cluster-glue 早先的Openais分裂出来的项目,被corosnyc借助来实现
pacemaker
corosync
heartbeat 仅安装,不需要启动,为pacemaker提供依赖关系
openais 非必须安装,因为corosnyc并非完全依赖于openais
被corosnyc依赖的两个RPM包:
libesmtp
per-Timedate
graphviz 图形测试依赖于该软件包
安装与配置过程:
一.架构:
以两节点的HA为例,演示安装和配置使用corosync
(另:可以自己摸索使用三节点HA)
附:与heartbeat不同,corosync不再要求必须为每个节点配置两块网卡
1.使用两个高可用节点:node1与node2,且两个节点名字与uname -n所展现出来的名字保持一致。
另外,保证两者可以通过FQDN格式主机名的方式互相访问,为了实现这一目的,我们通过编辑/etc/hosts下的文件而不是DNS来完成主机名解析,否则,DNS故障会导致集群出现问题。
附:原则上,不能将集群服务的机制构建在别的服务基础之上。
2.由于配置过程中很多情况下需要在一个节点上启动另一个节点,所以要求双方必须通过SSH且无口令的方式实现通信。
3.要求双节点之间通过某IP地址实现互相通信,但对外提供服务依然使用VIP。
IP地址规划:
vip:172.16.44.1
node1:172.16.44.41
node2:172.16.44.42
二.安装过程:
准备工作:两台干净的,未配置过任何服务的虚拟机,依照上面提到的架构配置好IP地址,网卡使用桥接的方式与物理机相连。
1、配置主机名
在node1节点下:
vim /etc/sysconfig/network
将HOSTHAME条目改为:
HOSTNAME=node1.a.org
保存退出
使用hostname node1.a.org使配置立即生效
使用命令检查以上配置是否成功:
uname -n
并在node2节点上完成同样的配置
2、使用非DNS方式实现主机名解析
vim /etc/hosts
添加以下条目:
172.16.44.41 node1.a.org
172.16.44.41 node2.a.org
在node2上完成对应配置
在node1上检查配置是否成功:
ping node2.a.org
3、ssh密钥生成
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@node2
在node2完成对应配置
检查,保证双方能够通过无密码的方式进行通信:
在node2上:ssh node1 'ifconfig'
在node1上:ssh node2 'ifcongig'
4:下载安装软件(这里使用基于FTP的yum源):
在node1上:
目录下载对应软件包
mirror corosync/
拷贝至node2
scp -r node2:/root
测试软件包依赖关系:
rpm -ivh corosync
使用yum进行本地安装
yum --nogpgcheck localinstall *.rpm
并在node2上完成同样的安装
三.corosync的配置和启动:
1.完成配置文件的编辑:
在node1上:
cd /etc/corosync
cp corosync.conf.example corosync.conf
# 创建corosync配置文件
vim corosync.conf
bindnetaddr:172.16.0.0
# 修改监听的地址
# 为节省服务器资源,一般以下两个选项会关掉一个
to_logfile: yes
to_syslog: yes
添加:
service {
ver:0
name:pacemaker
}
ai***ec {
user:root
group:root
}
保存退出
创建corosync生成日志所在的目录:
mkdir /var/log/cluster
生成节点通信时用到的认证密钥:
corosync-keygen
在node2上:
完成相同配置
2.尝试进行启动
在node1上:
/etc/init.d/corosync start
查看corosync引擎是否正常启动:
grep -e "Corosync Cluster Engine" -e "configuration file"/var/log/messages
查看初始化成员节点通知是否正常发出:
grep TOTEM /var/log/messages
检查启动过程中是否有错误产生:
grep ERROR: /var/log/messages | grep -v unpack_resources
查看pacemaker是否正常启动:
grep pcmk_startup /var/log/messages
若均无问题,在node2上启动的corosync
ssh node2 -- /etc/init.d/corosync start
附:启动node2需要在node1上使用如上命令进行,不要在node2节点上直接启动;
使用如下命令查看集群节点的启动状态:
crm status
Last updated: Tue Jun 14 19:07:06 2011
Stack: openais
Current DC: node1.a.org - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
0 Resources configured.
Online: [ node1.a.org node2.a.org ]
从上面的信息可以看出两个节点都已经正常启动,并且集群已经在正常工作状态。
3.同步两个节点的时间
注:在两个节点上的时间相差不应该超过一秒钟
分别在node1和node2上使用date查看当前时间
若相差过大,则使用hwclock命令同步时间
在node1上:
hwclock -s
ssh node2 hwclock -s