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

发布于 2022-07-09 02:48:35 字数 3694 浏览 16 评论 9

我是首次安装,有不足之处还请大家指正。
本来计划使用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 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

彼岸花似海 2022-07-22 13:43:16

顶顶

热血少△年 2022-07-22 13:39:29

support一下.

五里雾 2022-07-22 13:28:26

很多朋友向我要我写的脚本,我已经贴在一楼拉,大家只要复制下来,保存在一个XX.sh的文件里面就可以拉。

双马尾 2022-07-22 09:31:00

经过一段时间的使用和修改,我现在的脚本已经比较完善了,有需要的可以email我。

酸甜透明夹心 2022-07-21 01:36:25

原帖由 yangze_tj 于 2006-4-4 12:01 发表
在/etc/rc.d/init.d下有HTTPD的脚本,负责启动、停止、监控HTTPD服务状态

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

一世旳自豪 2022-07-19 22:20:38

在/etc/rc.d/init.d下有HTTPD的脚本,负责启动、停止、监控HTTPD服务状态

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

亚希 2022-07-19 00:01:43

牛人,谢谢

御弟哥哥 2022-07-14 08:39:52

原帖由 yangze_tj 于 2006-4-4 10:43 发表
RHEL4下HTTPD好象有启动监控脚本哦

在哪里?有些什么功能?

请远离我 2022-07-10 05:49:16

RHEL4下HTTPD好象有启动监控脚本哦

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文