您的位置:首页 > 运维架构 > Nginx

nginx+keepalived双机热备

2012-07-05 16:35 525 查看
前提条件: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安装与及相关配置
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 
 
ln -s /usr/local/sbin/keepalived /usr/sbin/
 
二、对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
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息