免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5347 | 回复: 10
打印 上一主题 下一主题

[原创]heartbeat+脚本实现rhel4双机apache高可用集群 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-04 08:47 |只看该作者 |倒序浏览
我是首次安装,有不足之处还请大家指正。
本来计划使用heartbeat的crm,但是苦于不知如何配置,索性自己写了个脚本,实现监听apache的功能,顺便在主节点的apache死掉后,检查其apache是否出了问题,若出问题则会弹出错误提示、退出heartbeat;否则自动重启服务(或让用户选择启动或退出)

1. 下载heartbeat
从linux-ha的邮件组中得到,需要的话,可以email我。
2. 安装: heartbeat 1.2.3
依次安装:
rpm -ivh libnet-1.1.2.1-1.rh.el.um.l.i368.rpm
rpm -ivh heartbeat-pils-1.2.3.cvs.20050927-1.rh.el.um.1.i386.rpm
rpm -ivh heartbeat-stonith-1.2.3.cvs.20050927-1.rh.el.um.1.i386.rpm
rpm -ivh heartbeat-1.2.3.cvs.20050927-1.rh.el.um.1.i386.rpm

3. 双机通信:
需要串口线一条;
node1: 192.168.0.25
node2: 192.168.0.252
测试:
发送端: echo hello >/dev/ttyS0
接收端: cat </dev/ttyS0

4.配置Heartbeat:
ha.cf /*主要配置文件
haresources /*资源配置文件
authkeys /*关于认证信息

● rpm -q heartbeat -d 查看上述文件的位置,并拷到/etc/ha.d下

● ha.cf的配置:
vi ha.cf
logfile /var/log//ha-log
logfacility local0
keepalive 0.5
deadtime 5
warmtime 10
initdead 20
udpport 694
baud 19200
serial /dev/ttyS0
bcast eth1
auto-failback on
node rh4.loesprite
node rh4,lin

下面是对ha.cf相关解释翻译:
keepalive 0.5
该参数指定了两次heartbeat的时间;
deadtime 2
该参数指定了等待声明主机的死亡时间;
initdead 20
该参数指定了heartbeat首次启动deadtime的时间;
serial /dev/ttyS0
该参数指定了心跳线接到哪一个端口上;
baud 19200
该参数指定串口通信的波特率
node rh4.loesprite与node rh4,lin
该参数告诉heartbeat使用哪些主机,主机名字一定要与机器uname -n下名字一致;

● haresources的配置:
vi haresources
该文件指定同步的服务以及主机叫什么,两台机器这个文件一定要一致.我们这里提
供高可用服务是Aapach服务,它对外的IP是192.168.0.25,所以它的配置文件应该是:
rh4.loesprite 192.168.0.25 httpd

● authkeys配置:
有三种认证方式: crc md5 sha1
vi authkeys
auth1
1 sha1 sha1 myAuthkeys
需要提高其权限:
chmod 600 authkeys

5. 配置另外一台机器相同的:
vi ha.cf
vi haresources
vi authkeys
chmod 600 authkeys
两台机器的haresources和authkeys应该是一致的, ha.cf都应该一致,除非心跳连不同
的串口或者网络的交叉线联接不同的网卡.

6.在主服务器上添加一个shell脚本
#MyHeartWillGoOn.sh
#!/bin/sh
check_http()
{
echo "Checking if some error occured with httpd"
/etc/init.d/httpd start
N=`netstat -tln|grep 80`
sleep 15 #设置httpd超时,若服务器性能稍差,请增大此数值
if [ ! -n "$N" ];then
{
echo "Error: Apache can't start! All stop!"
break
}
fi
/etc/init.d/httpd stop
echo "Nothing wrong!"
}
touch /var/log/loe-ha.log  #此文件记录apache正常运行的时间点
while :
do
N=`netstat -tln|grep 80`
sleep 1 #设置监听周期,约1s
echo "`date`: Chief node's server is running normally." >>
/var/log/loe-ha.log
if [ ! -n "$N" ];then
{
echo "Server is not running , please wait "
/etc/init.d/heartbeat stop
wait
echo "Now the other node will get resouce."
sleep 5
check_http
wait
# 选项单,若需要用户可选,则去掉下面5行的#号即可
# echo "press Enter to Restart the server ; Or press x to Stop : "
# read M
# if [ "$M" = "x" ] ; then
# break
# fi
/etc/init.d/heartbeat start
wait
echo "The chief node is getting resouce back"
}
fi
done

7.运行
主节点:./MyHeartWillGoOn.sh
从节点:/etc/init.d/heartbeat start

8.测试
在主节点上关闭apache,则从节点可以顺利接管服务,大功告成

[ 本帖最后由 loesprite 于 2006-4-4 08:50 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-04 10:43 |只看该作者
RHEL4下HTTPD好象有启动监控脚本哦

论坛徽章:
0
3 [报告]
发表于 2006-04-04 11:27 |只看该作者
原帖由 yangze_tj 于 2006-4-4 10:43 发表
RHEL4下HTTPD好象有启动监控脚本哦

在哪里?有些什么功能?

论坛徽章:
0
4 [报告]
发表于 2006-04-04 11:34 |只看该作者
牛人,谢谢

论坛徽章:
0
5 [报告]
发表于 2006-04-04 12:01 |只看该作者
在/etc/rc.d/init.d下有HTTPD的脚本,负责启动、停止、监控HTTPD服务状态

[ 本帖最后由 yangze_tj 于 2006-4-4 12:20 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-04-04 13:26 |只看该作者
原帖由 yangze_tj 于 2006-4-4 12:01 发表
在/etc/rc.d/init.d下有HTTPD的脚本,负责启动、停止、监控HTTPD服务状态

在脚本中我就是调用这个的,呵呵,谢啦

论坛徽章:
0
7 [报告]
发表于 2006-04-11 14:17 |只看该作者
经过一段时间的使用和修改,我现在的脚本已经比较完善了,有需要的可以email我。

论坛徽章:
0
8 [报告]
发表于 2006-05-23 01:07 |只看该作者
很多朋友向我要我写的脚本,我已经贴在一楼拉,大家只要复制下来,保存在一个XX.sh的文件里面就可以拉。

论坛徽章:
0
9 [报告]
发表于 2006-05-23 03:14 |只看该作者
support一下.

论坛徽章:
0
10 [报告]
发表于 2006-05-24 13:17 |只看该作者
顶顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP