前提条件:nginx已经安装OK了,具体可以参考:
http://blog.csdn.net/lvxiaozhuan/article/details/7719083
系统环境:CentOS 5.6 64位:
实验的服务器如下:
主服务器IP:192.168.10.69
备服务器ip:192.168.10.84
虚拟ip:192.168.10.99
一、keepalived安装与及相关配置
ln -s /usr/local/sbin/keepalived /usr/sbin/
yum install openssl-devel
cd /tmp
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure
make && make install
安装完成后, copy相关文件到其它目录:
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
给文件执行权限:
chmod +x /etc/init.d/keepalived
增加为服务:
chkconfig --add keepalived
chkconfig keepalived on
二、对keepalived进行配置
mkdir /etc/keepalived
vi /etc/keepalived/keepalived.conf 或者(cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ 进行修改),具体如下:
主服务器:
----------------------
global_defs {
notification_email {
admin@centos.bz
}
notification_email_from keepalived@domain.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/opt/nginx.sh" ##
监控脚本
interval 2 ##
监控时间,以秒为单位
weight 2 ##
权重值,数值越大权重越高
}
vrrp_instance VI_1 {
state MASTER ##备机为 BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.10.69
priority 102 ##权值要比back备机 高
advert_int 1 ##心跳时间
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port ### 执行监控的服务
}
virtual_ipaddress {
192.168.10.99 ##虚拟IP,可以多个
}
}
----------
备服务器:
----------
vi /etc/keepalived/keepalived.conf
---
global_defs {
notification_email {
admin@centos.bz
}
notification_email_from keepalived@domain.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/opt/nginx.sh" ##
监控脚本
interval 2 ##
监控时间,以秒为单位
weight 2 ##
权重值,数值越大权重越高
}
vrrp_instance VI_1 {
state BACKUP ##备机为 BACKUP
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.10.84
priority 101 ##权值要比主机低
advert_int 1 ##心跳时间
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port ### 执行监控的服务
}
virtual_ipaddress {
192.168.10.99 ##虚拟IP,可以多个
}
}
============
三、分别在主备服务器建立nginx的监控脚本:
vi /opt/nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
给脚本执行权限:
chmod +x /opt/nginx.sh
四、启动服务
1、分别启动主备机上的nginx,如:/usr/local/nginx/sbin/nginx
2、分别启劝主备机上的keepalived ,如:service keepalived start
五、测试验证
1、在主服务器执行命令:ip a ,如图:
证明主服务器绑定了虚拟IP:192.168.10.99
2、在备服务器执行命令:ip a ,如图:
备服务器上没有绑定虚拟IP,只有原来的IP:192.168.10.84
3、拔掉主机上网线,在备机上执行命令:ip a,如图:
备服务器上已经绑定虚拟IP:192.168.10.99