前面的文章我们使用Heartbeat实现高可用集群(),虽说Heartbeat配置相对比较简单明了,但由于其为传统的高可用集群的解决方案,配置的弹性比较小,而且功能相对比较单一。
这次我们就是用Corosync/openais+pacemaker 这个解决方案来实现高可用集群
Corosync提供高可用集群中多个节点之间的心跳等高可用集群底层的基本信息的传输和判断,角色相当于Heartbeat,但比Heartbeat更高级,配置的弹性很大
在使用Corosync/openais+pacemaker这个解决方案的时候,只安装corosync就能构建一个完整的HA,当要基于corosync进行二次开发或让HA实现更多功能的时候才需要安装openais
配置使用Corosync/openais+pacemaker 来实现web服务的高可用集群
在node1和node2上使用Corosync/openais+pacemaker方案架设web服务的高可用集群,通过客户端的主机验证当主节点当即之后是否真正的实现了资源转移,如果资源转移成功,且能够继续web服务就标明这个方案实施陈功
一、准备工作
1、配置node1和node2的物理IP地址:|
node1:
ifconfig eth0 192.168.0.202/24
node2:
ifconfig eth0 192.168.0.204/24
2、配置两主机名,保证重启之后主机名不变
node1:
sed -i 's@\(HOSTNAME=\).*@\1node1.a.org@g'
hostname node1.a.org
node2:
sed -i 's@\(HOSTNAME=\).*@\1node2.a.org@g'
hostname node2.a.org
3、配置/etc/hosts文件,保证能够进行本地主机名解析
node1:
vim /etc/hosts 添加如下内容:
192.168.0.202 node1.a.org node1
192.168.0.204 node2.a.org node2
在node2上进行同样的配置
4、配置两个主机之间能够实现无密码访问
node1:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
node2:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
二、安装Corosync/openais+pacemaker
1、下载、安装软件包
我们只是为了验证这个解决方案,为了方便演示,使用rpm包进行安装
所需的软件包:
cluster-glue-1.0.6-1.6.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm
corosync-1.2.7-1.1.el5.i386.rpm
openaislib-1.1.3-1.6.el5.i386.rpm
corosynclib-1.2.7-1.1.el5.i386.rpm
pacemaker-1.0.11-1.2.el5.i386.rpm
pacemaker-libs-1.0.11-1.2.el5.i386.rpm
heartbeat-3.0.3-2.3.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
heartbeat-libs-3.0.3-2.3.el5.i386.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm
使用rpm包安装pacemaker的时候为了解决依赖关系需要安装Heartbeat,如果进行编译安装pacemaker的时候,就不需要安装Heartbeat了
将所有的软件包放到一个自建的目录yum中,方便安装
安装软件包
cd /yum
yum localinstall * --nogpgcheck -y
配置node1
2、配置node1的corosync
cd /etc/corosync/
cp corosync.conf.example corosync.conf 创建配置文件
修改配置文件
vim corosync.conf 添加如下内容:
service {
ver: 0
name: pacemaker
}
aisexec { 这个是安装了openais才需要添加的内容
user: root
group: root
}
并设定此配置文件中 bindnetaddr后面的IP地址为你的网卡所在网络的网络地址,我们这里的两个节点在192.168.0.0网络,因此这里将其设定为192.168.0.0;如下
bindnetaddr: 192.168.0.0
保存退出即可
创建所需要的日志目录
mkdir /var/log/cluster/
3、使用corosync-keygen 生成一个密钥,来进行同个集群主机的认证
corosync-keygen
4、将配置文件和密钥同步到node2上,并在node2上创建日志目录
scp –p corosync.conf authkey node2.a.org;/etc/corosync/
ssh node2 ‘mkdir –v /var/log/cluster’
5、启动node1的corosync服务
/etc/init.d/corosync start