本文转自 http://blog.sina.com.cn/s/blog_5670025101015lnc.html
测试环境:
ip地址:服务器A:192.168.0.223/24
192.168.6.223/24
服务器B:192.168.0.224/24
192.168.6.224/24
虚拟IP:192.168.0.225/24
192.168.6.225/24
交换机为esxi4的虚拟交换机直接透明连接到华为S5700上。vlan分别为6和7。根据子网进行划分。
测试服务:tomcat,mysql
监测mysql脚本:
这里的脚本有两种监控方式,请自行取舍
脚本1:
#i /bin/bash
MYSQL_ALIVE=`ps -C mysqld |grep -v PID|wc -l`
if [ $MYSQL_ALIVE -eq 0 ];then
service mysql restart
sleep 3
if [ `ps -C mysqld |grep -v PID |wc -l` -eq 0 ];then
killall keepalived
fi
fi
脚本2:
这个需要提前建立一个至少权限是reload的用户,一般来说,权限不用很高,因为使用这个脚本需要链接数据库
#! /bin/bash
STATUS=`mysqladmin ping -u设置的用户名 -p设置的密码`
if [ “$STATUS” != “mysqld is alive” ];then
service mysql restart
RE=$?
sleep 3
if [ $RE != 0 ];then
killall keepalived
fi
fi
监控web服务器脚本:
#! /bin/bash
#注意,这里需要tomcat开启了所有IP地址的web请求,
URL=这里填写首页的index地址
URL_STATUS=`curl -o /dev/null -s -w %{http_code} $URL`
if [ $URL_STATUS != 200 ];then
killall tomcat #这里直接查到PID杀掉也可以,方法自由
/opt/tomcat/bin/start.sh #这里是启动tomcat,当然,有其他方法也可以
sleep 3
if [ `curl -o /dev/null -s -w %{http_code} $URL` != 200 ];then
killall keepalived
fi
fi
安装及配置keepalived
安装文件有2个,分别是依赖库libnet-1.1.4.tar.gz和自身程序keepalived-1.1.19.tar.gz
首先安装依赖库
tar -zxvf libnet-1.1.4.tar.gz
进入libnet目录
cd libnet-1.1.4
编译
./configure
编译完成后
make && make install
安装keepalived
tar -zxvf keepalived-1.1.19.tar.gz
进入目录
cd keepalived-1.1.19
编译
./configure
完成后安装
make && make install
拷贝配置文件
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig
cp /usr/loc al/etc/rc.d/init.d/keepalived /etc/init.d #这里有个问题,如果是在suse的系统上,会出现
service的时候找不到一个系统内置脚本,这里暂
时不执行
修改主机配置文件
vim /etc/keepalived/keepalived.conf
vrrp_script chk_mysql_port {
}
vrrp_script chk_web_port {
}
vrrp_instance VI_1 {
无法拉起
chk_web_port
}
从机的配置基本一致,需要更改的有优先级和服务器类型:
vrrp_script chk_mysql_port {
}
vrrp_script chk_web_port {
}
vrrp_instance VI_1 {
}
配置完成后直接执行keepalived就可以,当然,注册成服务更好
输入ip addr进行检查
当发现启用了虚拟IP后,配置完成
服务器的网卡都不设置网关,只在本子网内广播,在两个掩码位位24的子网下测试通过,可以通过tcpdump -i 网卡 -vvn arp的方式发现到虚IP所获得的广播。
由于没有得到业务的双机关系,目前只测试了mysql和web还有链路状态的虚IP的漂移,全部测试通过,包括业务宕机后的切换。