Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381117
  • 博文数量: 58
  • 博客积分: 2941
  • 博客等级: 少校
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-21 11:37
文章分类

全部博文(58)

文章存档

2015年(1)

2014年(1)

2012年(1)

2011年(19)

2009年(1)

2008年(1)

2007年(11)

2006年(10)

2005年(13)

分类: 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.cfharesourcesauthkeys文件复制到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目录下的文件

 

ASSH无密码认证登陆,在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.修改主控51autoMYSQL配置文件

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-backupMYSQL配置文件

       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中。 

 

2HTTPDMYSQL监控脚本。

A. HTTPD监控

前文httptomcat进程监控脚本

B. MYSQL监控

#!/bin/sh

if [ -e /var/lib/mysql/HeartBeat-backup.pid ]

then

exit

else

service mysql start

fi

阅读(2078) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~