这里使用两台vmware虚拟机来模拟实现高可用集群,一台作为node1,一台作为node2使用windows作为客户端访问。在node1和node2上安装web服务器,并设置不同网页,当启动集群的时候默认是只有一台开启服务,此时关闭开启服务的那台服务器,查看另外一台是否会自动启动服务。


配置node1
首先配置ip地址,
eth0网卡地址
172.16.100.21
eth1网卡ip地址
192.168.30.1
vim /etc/hosts
172.16.100.21 node1.a.org node1
172.16.100.21 node2.a.org node2
:wq
vim /etc/sysconfig/network
HOSTNAME=node1.a.org
:wq
hostname=node1.a.org

拷贝/etc/hosts文件到node2上
scp /etc/hosts node2:/etc/hosts

通过生成密钥来使node1和node2通信,此时再拷贝文件就不用输入密码了、
这样设置还为以后提供心跳信息提供了基础。
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@node2
测试一下,来执行一下node2的命令看看
ssh node2 --'ifconfig'
看看结果是不是node2的地址呢?

配置yum源信息。
并拷贝到node2同样的一份,这样省的再写一个了,懒人的用法
scp /etc/yum.repos.d/server.repo node2:/etc/yum.repos.d/

任何集群中的服务,比如web集群中的web服务,如果你手动启动web服务器的话,就不能在集群中流动了,
此时如果集群服务器关闭服务,你手动启动了,后面一定会出故障。此时你安装好的web服务器在这里启动
一下看看,安装的软件是否正确,然后再关闭软件,并且确保开机不能自动启动。
yum install httpd -y

配置网页文件
vim /var/www/html/index.html
hello this is a test page node1
:wq

启动web服务器
service httpd start
然后通过浏览器查看一下网页看是否正常
如果正常则关闭web服务器
service httpd stop
chkconfig httpd off

下载安装以下几个集群软件,下载到一个共同的文件中/root/heartbeat
libnet-1.1.4-3.el5.i386.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-2.1.4-9.el5.i386.rpm       
heartbeat-stonith-2.1.4-10.el5.i386.rpm   
heartbeat-devel-2.1.4-9.el5.i386.rpm       
heartbeat-gui-2.1.4-9.el5.i386.rpm                              

yum localinstall *.rpm --nogpgcheck
也可以直接使用yum安装
拷贝文件到node2
scp -r heartbeat/ node2:/root
修改配置文件
cd /usr/share/doc/heartbeat-2.1.4/
cp ha.cf haresources authkeys /etc/ha.d

cd /etc/ha.d
vim ha.cf
udpport 694
bcast eth1
node node1.a.org  //节点1
node node2.a.org  //节点2

vim authkeys
auth 2
2 shal asdfghjkl  //后面的为一堆乱码
修改权限为400或者600,否则不让启动
chmod 400 authkeys

vim haresources
node1.a.org 172.16.100.1/16/eth0/172.16.255.255 httpd
主节点  流动地址        掩码 指定网卡 指定广播地址  指定服务

cd /usr/lib/heartbeat
./ha_propagate
scp haresources node2:/etc/ha.d

启动heartbeat,如果你在那个节点上启动,所有的heartbeat的启动就必须都在
那个节点上启动,否则集群无法收敛
启动节点1
/etc/init.d/heartbeat start
启动节点2
ssh node2 -'/etc/init.d/heartbeat start'
可以使用netstat -tnl来查看80端口是否启动,如果没有启动则表示本节点是备份
另外一台是主服务器
此时你可以使用物理机同过浏览器访问网页了
http://172.16.100.1/index.html

此时你可以模拟一台服务器当机了,看另外一台是否可以正常启动
如:停止node1的服务等,此时可以在node2上使用命令关闭node1

 

 

node2
eth0网卡地址
172.16.100.22
eth1网卡ip地址
192.168.30.2
vim /etc/sysconfig/network
HOSTNAME=node2.a.org
:wq
hostname=node2.a.org
同样在node2上也设置一下,这样node2访问node1也不需要密码了
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@node1
ssh node1 --'ifconfig'
看看结果是不是node1的地址呢?
yum install httpd -y
hello this is a test page node1
:wq
启动web服务器
service httpd start
然后通过浏览器查看一下网页看是否正常,正常就关闭服务器
service httpd stop
chkconfig httpd off

此时拷贝过来集群软件包现在也必须安装一下
yum --nogpgcheck localinstall *.rpm -y
cd /etc/ha.d
ll
查看authkeys的权限是否为400
以及haresources和ha.cf是否存在
tail /var/log/ha-log查看日志,看在节点1上是否启动了节点2

ssh node1 -'/etc/init.d/heartbeat stop'
此时再次查看端口信息,看80端口是否在node2上自动启动。
也可以使用物理机上的浏览器查看一下,现在的网页信息是什么

此时再次打开node1看会发生什么结果?
ssh node1 -'/etc/init.d/heartbeat start'