Nginx+keepalived双机热备

Nginx Master: 192.168.128.134
Nginx Backup: 192.168.128.138
VIP:192.168.128.177

Nginx安装见nginx安装配置文档

Master与Backup的Nginx配置一致.

在MASTER跟BACKUP上安装Keepalived:

#tar zxvf keepalived-1.1.15.tar.gz -C ../software
#cd ../software/keepalived-1.1.15
#./configure –prefix=/usr/local/keepalived && make && make install
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#service keepalived start|stop #做成系统启动服务方便管理.

修改MASTER 的keepalived.conf

#vim /etc/keepalived/keepalived.conf
vrrp_script chk_http_port {       
        script "/usr/local/scripts/nginx_pid.sh" ###监控脚本
        interval 2 ###监控时间
        weight 2
        }
vrrp_instance VI_1 {
        state MASTER ### 设置为主
        interface eth0 ### 监控网卡
        virtual_router_id 51 ### 这个两台服务器必须一样
        priority 101 ### 权重值MASTRE一定要高于BAUCKUP
        authentication {
        auth_type PASS ### 加密
        auth_pass test ### 加密的密码,两台服务器一定要一样,不然会出错
        }
        track_script {
        chk_http_port ### 执行监控的服务
        }
        virtual_ipaddress {                
        192.168.128.177 ### VIP 地址        
        }
}


修改BACKUP keepalived.conf

#vim /etc/keepalived/keepalived.conf
vrrp_script chk_http_port {
        script "/opt/nginx_pid.sh"
        interval 2
        weight 2
}
vrrp_instance VI_1 {
        state BACKUP ### 设置为备份机
        interface eth0
        virtual_router_id 51 ### 与 MASTRE 设置值一样
        priority 80 ### 比 MASTRE权重值低

        authentication {
        auth_type PASS
        auth_pass test ### 密码 与 MASTRE 一样
        }
        track_script {
        chk_http_port
        }
        virtual_ipaddress {
        192.168.128.177
        }
}

编写监控nginx监控脚本

#vim /usr/local/scripts/nginx_pid.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
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 ## 则结束 keepalived 进程
	fi
fi


测试,分别在两个服务器 启动 nginx 和 keepalived

#/usr/local/nginx/sbin/nginx
#/etc/init.d/keepalived start

监控 Nginx Mastaer 的日志

May 12 17:33:44 localhost Keepalived_vrrp: Configuration is using : 35676 Bytes
May 12 17:33:44 localhost Keepalived: Starting VRRP child process, pid=1245
May 12 17:33:44 localhost Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(8,9)]
May 12 17:33:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
May 12 17:33:46 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
May 12 17:33:46 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
May 12 17:33:46 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.128.177
May 12 17:33:46 localhost avahi-daemon[2344]: Registering new address record for 192.168.128.177 on eth0.
May 12 17:33:46 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.128.177 added

监控 Nginx Backup 的日志

May 11 22:28:21 localhost Keepalived: Starting Keepalived v1.1.15 (05/11,2010)
May 11 22:28:21 localhost Keepalived_vrrp: Using MII-BMSR NIC polling thread...
May 11 22:28:21 localhost Keepalived_vrrp: Registering Kernel netlink reflector
May 11 22:28:21 localhost Keepalived_vrrp: Registering Kernel netlink command channel
May 11 22:28:21 localhost Keepalived_vrrp: Registering gratutious ARP shared channel
May 11 22:28:21 localhost Keepalived: Starting VRRP child process, pid=27040
May 11 22:28:21 localhost Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
May 11 22:28:21 localhost Keepalived_vrrp: Configuration is using : 35538 Bytes
May 11 22:28:21 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
May 11 22:28:21 localhost Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]
May 11 22:28:23 localhost Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded

看日志可以看出,两台服务器的 MASTRE 和 BACUKUP 已经都正常了

现在我们把Master的Nginx停掉.查看Backup的日志

May 11 22:28:21 localhost Keepalived: Starting VRRP child process, pid=27040
May 11 22:28:21 localhost Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
May 11 22:28:21 localhost Keepalived_vrrp: Configuration is using : 35538 Bytes
May 11 22:28:21 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
May 11 22:28:21 localhost Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]
May 11 22:28:23 localhost Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
May 11 22:29:25 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
May 11 22:29:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
May 11 22:29:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
May 11 22:29:26 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.128.177

可以看出backup已经变成master

现在再启动原来master的nginx,再查看backup的日志

May 11 22:30:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert
May 11 22:30:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
May 11 22:30:32 localhost Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.
May 11 22:30:32 localhost avahi-daemon[2409]: Withdrawing address record for 192.168.128.177 on eth0.

可以看出又变回了backup.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值