nginx+keepalive 实现高可用负载均衡方案
Jun 07, 2016 pm 04:32 PM主nginx负载均衡器:172.26.11.99? ( 通过keepalived 配置了VIP:172.26.11.101供外使用) 副nginx负载均衡器:172.26.11.100 ( 通过keepalived 配置了VIP:172.26.11.101供外使用) 后端web服务器: 172.26.11.73 172.26.11.74 一、172.26.11.99 以及 172
主nginx负载均衡器:172.26.11.99? (通过keepalived配置了VIP:172.26.11.101供外使用)
副nginx负载均衡器:172.26.11.100 (通过keepalived配置了VIP:172.26.11.101供外使用)
后端web服务器:
172.26.11.73
172.26.11.74
一、172.26.11.99 以及 172.26.11.100的关键nginx配置如下:
vim /etc/nginx/nginx.conf
################# .... upstream? www.xxx.com? { server?? 172.26.11.73:8080 max_fails=1;#max_fails 表示健康检查失败的次数,这里表示次数为一次,即标记该服务器down了 server?? 172.26.11.74:8080 max_fails=1; } server { listen? 80; server_name? www.xxx.com; location / { proxy_next_upstream error timeout http_500 http_502 http_504;? #这里表示健康检查涉及到的情形,有这些情形的,都切换到另外的web服务器访问 proxy_read_timeout 10s;?? #这里表示程序返回的时间,请参考php.ini的max_exe_time来设置。 proxy_pass??????? http://www.xxx.com; proxy_set_header?? Host???????????? $host; proxy_set_header?? X-Real-IP??????? $remote_addr; proxy_set_header?? X-Forwarded-For? $proxy_add_x_forwarded_for; } #access_log? /var/log/nginx/xxx.log; } ##########################
二、安装keepalive (centos)
#安装 popt yum -y install popt popt-devel cd /data/software wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz cd /data/src tar zxf ../software/keepalived-1.2.8.tar.gz cd keepalived-1.2.8 ./configure --prefix=/usr/local/keepalived --sysconf=/etc make && make install cp /usr/local/keepalived/sbin/keepalived /bin/ chkconfig --add keepalived #设置开机启动 chkconfig keepalived on #启动keepalive服务 /etc/init.d/keepalived start
如果是ubuntu 直接 apt-get install keepalived 吧….
三、keepalive设置
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak
MASTER
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { admin@test.com } notification_email_from admin@test.com smtp_server xxx.smtp.com smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script Monitor_Nginx { script "/root/monitor_nginx.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER #(主机为MASTER,备用机为BACKUP) interface eth0 #(HA监测网络接口) virtual_router_id 61 #(主、备机的virtual_router_id必须相同) #mcast_src_ip 172.26.11.99 #(多播的源IP,设置为本机外网IP,与VIP同一网卡)此项可不设置 priority 90 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高) advert_int 1 #(VRRP Multicast广播周期秒数) authentication { auth_type PASS #(VRRP认证方式) auth_pass 1234 #(密码) } track_script { Monitor_Nginx #(调用nginx进程检测脚本) } virtual_ipaddress { 172.26.11.101 #(VRRP HA虚拟地址) } }
BACKUP方面只需要修改state为BACKUP , priority比MASTER稍低即可
四、监控nginx进程的脚本:monitor_nginx.sh 内容如下:
vim /root/monitor_nginx.sh
当检测到nginx进程不存在的时候,就干掉所有的keepalived,这时候,请求将会由keepalived的backup接管!!
#!/bin/bash if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ] then killall keepalived fi
chmod +x /root/monitor_nginx.sh
172.26.11.99 172.26.11.100都重新启动keepalived:
service keepalived restart
这里请注意,当keepalived启动后,我们可以用命令:
ip add show eth0 来看我们的eth0网卡确实被添加了虚拟IP,如下图:
完毕,可以测试了!
原文地址:nginx+keepalive 实现高可用负载均衡方案, 感谢原作者分享。

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to implement dual WeChat login on Huawei mobile phones?

How to implement SSL passthrough in HAProxy

How to implement the WeChat clone function on Huawei mobile phones

PHP Programming Guide: Methods to Implement Fibonacci Sequence

Master how Golang enables game development possibilities

PHP Game Requirements Implementation Guide

How to implement exact division operation in Golang

Detailed explanation of using Golang to implement data export function
