在服务器集群中还有一项就是服务的高可用性,为了保证我们的服务不被成为单点故障,为此我们使用heartbeat来解决这一点,简单点说,就是当我们的主服务器掉线的时候,我们的辅助节点服务器能够快速接管主节点服务器的服务,这样就保证了我们的服务不会出现单点故障了。(当然我们一下做的只是针对单点故障做的一个小实验而已,具体到应用的时候,心跳通信通道不会只有一条,还有服务器通常还会有共享存储设备,好了,不多说了,开始准备一下实验环境吧)
我们需要准备三台虚拟机:一台客户机,两台heartbeat服务器,其中这两个服务器先配置一个,另外一个根据以下步骤再配置)
实验拓扑图如下:
实验步骤:
1先配置一下主节点:主机名设为:node1.example.com
#vim /etc/hosts
192.168.0.165. node1.example.com node1
192.168.0.166 node2.example.cm node2
#vim /etc/sysconfig/network
HOSTNAME=node1.example.com
#hostname node1.example.com
#uname –n (查看一下现在的主机名)
1. 配置一下ip地址
外网为192.168.0.165
心跳通道地址192.168.10.20
2. 安装并配置httpd服务
#yum install httpd.conf
#vim /var/www/html/index.html
#service httpd start
#elinks 192.168.0.220
(测试一下www服务)
3. 开始配置heartbeat了:
先安装八个包:
libnet-1.4.3-el5.i386
heartbeat-2.1.4-9.el5.i386
heartbeat-devel-2.1.4.9.el5.i386
heartbeat-gui-2.1.4-9.el5.i386
heartbeat-ldirectord-2.1.4-9.el5.i386
heartbeat-pils-2.1.4.-10.el5.i386
heartbeat-stonith-2.1.4-10.el5.i386
perl-MailTools-1.77-1.el5.noarch
#yum - -nogpgcheck install *.rpm 可以将这几个包一起安装 (使用rpm来安装的话会有好多依赖关系要解决,建议还是使用yum来安装)
4.
#cd /etc/ha.d/ (接下来拷贝几个重要的文件到该目录下)
#cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./
#cp /usr/share/doc/heartbeat-2.1.4/haresources ./
#cp /usr/share/doc/heartbeat-2.1.4/authkeys ./
#ls (查看一下是否复制完全)
#vim authkeys
在最后添加两行
auth 1
1 sha1
(以上也可以使用以下命令来配置authkeys这个文件)
#echo -ne “auth 1\n1 sha1” >> /etc/ha.d/authkeys
#dd if=/dev/urandom bs=512 count=1 | openssl md5 >> /etc/ha.d/authkeys
(追加密钥)
#cat authkeys (查看一下,看密钥是否追加上了,密钥要跟1 sha1在同一行)
#chmod 0600 authkeys (修改一下权限)
#vim ha.cf
确保以下几行没有被注释掉
debugfile /var/log/ha-debug
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
auto_failback on
bcast eth1
接着在最后添加以下两行
node node1.example.com
node node2.example.com
#vim haresources (设置浮动的ip和服务)
在文件中添加一下一行信息:
node1.example.com 192.168.0.169 httpd
#cd /etc/ha.d ( 将我们的httpd服务添加软连接到resource.d中:)
#ln -s /etc/init.d/httpd /etc/ha.d/resource.d/
#cd resource.d/
#ls (查看一下链接创建成功了没)
(为了让我们的实验简化,我们克隆一个虚拟机来做backup server辅节点吧。)
将主节点关机,然后克隆一个辅节点,不过我们要对辅节点修改一下,具体修改如下:
修改它的主机名
#vim /etc/hosts
#vim /etc/sysconfig/network
#hostname node2.example.com
#uname -n
修改它的ip地址
设置外网ip地址为192.168.0.166
内网心跳通信地址为192.168.10.30
#service network restart
测试一下整个网络的联通性:
#ping 192.168.0.165
#ping 192.168.0.166
#ping 192.168.10.20
#ping 192.168.10.30
最好在主节点和辅节点上都测试一下,看80服务开了没,
#netstat -tnlp | grep 80
这个时候主节点和辅节点80端口应该都是没有开的
在主节点和辅节点上开启心跳服务
#service heartbeat start
#ifconfig (在主节点上看一下,eth0:0这个浮动ip地址已经出现了)
在主节点上查看80端口现在已经是开启的了
这个时候在客户机上访问来测试一下
在主节点上
#cd /usr/lib/heartbeat
#./hb_standby将节点停掉,这样httpd服务就转移到辅节点了
在辅节点上查看:
在客户机上访问一下192.168.0.169
(呵呵,辅节点就顺利的接替了主节点的资源)
使用抓包工具来测试一下:了解一下它们的心跳
#tcpdump -i eth1 udp port 694