分类: LINUX
2006-03-01 10:37:01
操作系统: centos4.1
热备服务:apache mysql
一.装HEARTBEAT
1.使用YUM安装HEARTBEAT,这样做不需要考虑依赖包所带来的麻烦。
命令:yum install heartbeat
二.配置HEARTBEAT
1.准备工作
A.修改51auto主控机上的/etc/hosts文件,如下:
192.168.100.1 51auto
192.168.100.2 HeartBeat-backup
192.168.0.1 svr1
192.168.0.2 svr2
192.168.0.3 svr
注:192.168.100.*为心跳IP地址,192.168.0.*为对外IP地址,192.168.0.3为浮动IP地址(浮动IP是真正对外应用的IP,一般都能被DNS解析)。
B. hosts文件复制到HeartBeat-backup主机上(必须同步)。
C.将LINUX的运行级别改成“3”。
#The default runlevel is defined here
id:3:initdefault:
2.配置HEARTBEAT
A.修改主配置文件/etc/ha.d/ha.cf(主配置文件)
node 51auto
node HeartBeat-backup
keepalive 2
deadtime 30
warntime 10
initdead 300
auto_failback on
bcast eth1
ping 192.168.100.1
ping 192.168.100.2
respawn hacluster /usr/lib/heartbeat/ipfail
B. 修改资源配置文件/etc/ha.d/haresources
格式:主控机名 浮动IP地址 服务(必须在/etc/init.d、/etc/ha.d/resource.d下有响应的脚本)
例如:51auto 192.168.0.3 httpd mysql
C. 修改认证配置文件/etc/ha.d/authkeys
将该文件权限改成600
auth 2
2 crc
D.将ha.cf、haresources、authkeys文件复制到HeartBeat-backup主机上(必须同步)。
E. 启动服务器时自动启动HEARTBEAT
chkconfig --level 345 heartbeat on
F. 运行HEARTBEAT(主控51auto、副控 HeartBeat-backup 都要运行起来)
service heartbeat start
运行成功后使用ps命令查看heartbeat进程
ps –ef |grep heartbeat
root 3857 1 0 15:22 ? 00:00:00 heartbeat: master control process
nobody 3860 3857 0 15:22 ? 00:00:00 heartbeat: FIFO reader
nobody 3861 3857 0 15:22 ? 00:00:00 heartbeat: write: bcast eth1
nobody 3862 3857 0 15:22 ? 00:00:00 heartbeat: read: bcast eth1
nobody 3863 3857 0 15:22 ? 00:00:00 heartbeat: write: ping 192.168.100.1
nobody 3864 3857 0 15:22 ? 00:00:00 heartbeat: read: ping 192.168.100.1
nobody 3865 3857 0 15:22 ? 00:00:00 heartbeat: write: ping 192.168.100.2
nobody 3866 3857 0 15:22 ? 00:00:00 heartbeat: read: ping 192.168.100.2
如果能看到上面这部分信息,恭喜您,HEARTBEAT已经运行成功。
三.文件同步
1.同步/var/www/virtualhost目录下的文件
A.SSH无密码认证登陆,在51auto主控机上创建密钥对
ssh-keygen –t dsa
创建文件时密码为空
B. 认证文件内容复制到HeartBeat-backup主机上
scp /root/.ssh/id_dsa.pub 192.168.100.2:/root/.ssh/authorized_keys
C. sh 192.168.100.2 此时登陆,已不需要输入密码
D.在51auto上使用rsync进行数据同步并加入crontab自动运行
crontab -e
*/30 * * * * /usr/bin/rsync –avzoge ssh --delete /var/www/virtualhost/my.website.cn 192.168.100.2:/var/www/virtualhost/my.website.cn
*/30 * * * * /usr/bin/rsync –avzoge ssh –delete /var/www/virtualhost/mine.website.cn 192.168.100.2:/var/www/virtualhost/mine.website.cn
每隔30分钟同步APACHE目录数据。
四.数据库同步
[主控]
1.授予副控MYSQL访问权限
GRANT REPLICATION SLAVE ON *.* TO IDENTIFIED BY “123456”;
2.修改主控51auto的MYSQL配置文件
vi /etc/my.cnf
[mysqld]
#sync data
log-bin
server-id=1
sql-bin-update-same
binlog-do-db=data1
binlog-do-db=data2
[副控]
1.修改副空HeartBeat-backup的MYSQL配置文件
vi /etc/my.cnf
[mysqld]
#sync data
master-host=192.168.100.1
master-user=backup
master-password=123456
master-port=3306
server-id=2
master-connect-retry=60
replicate-do-db=data1
replicate-do-db=data2
log-slave-updates
五.报警脚本
1、双机互相监控,通过MAIL报警脚本
我曾经用EXPECT写过一个简单的MIAL发送脚本(内容见前面的一篇文章)。
#!/bin/sh
unreach=`ping -c 1 192.168.100.2 |grep Unreachable |awk '{print $6}'`
if [ "$unreach" = "Unreachable" ]
then
sleep 60
unreach1=`ping -c 1 192.168.100.2 |grep Unreachable |awk '{print $6}'`
if [ "$unreach1" = "Unreachable" ]
then
/root/script/mails
fi
fi
A.放入CRONTAB中每隔40分钟运行一次。
B.该脚本会每隔40分钟发一个包到192.168.100.2,如果不通会等60秒再发一次确定,如果还是不通,自动发送MAIL及时向我报警。
C.将该脚本复制到192.168.100.1主机上,并加入CRONTAB中。
2、HTTPD和MYSQL监控脚本。
A. HTTPD监控
前文http、tomcat进程监控脚本
B. MYSQL监控
#!/bin/sh
if [ -e /var/lib/mysql/HeartBeat-backup.pid ]
then
exit
else
service mysql start
fi