这里是我自己整理的一些资料,大家不懂的可以相互学习呀。。。

Nginx 反向代理转发实现负载均衡的高可用

Web运维 ZZT 1850次浏览 已收录 0个评论

前言:

最近开发一个web,服务器上面安装了其他的一些外包项目,然后服务器就被被攻击了,导致我自己做的web一度瘫痪,还得赶急赶忙的去恢复项目。为了让下次不再出现这种情况于是决定做一个nginx转发,当正式服务器宕机的时候开启备用服务器继续工作。用户无感知的那种。

建立反向代理

http{
upstream  abc{        
    server 192.168.1.100;        
    server 192.168.1.110;        
    server 192.168.1.120;
    ip_hash;
}



server {
    listen 80;
    server name www.linuxidc.com;
    location / {
        proxy_pass http://abc;        
    }
}

** 反向代理建立之后,访问www.linuixidc.com会间接访问abc中的服务器地址,ngnix通过将所有的请求转发至abc中的服务器,通过abc中的服务器处理完成之后将返回的消息返回给abc这台服务器,然后再将消息返回给客户端。**

# keeplive 监控ngnix是否正常运行

安装keepalive:
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
make
make install

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/

配置文件:/etc/keepalived/keepalived.conf
主服务器配置:

! Configuration File for keepalived

global_defs {


vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        50.1.1.2
    }
}

从服务器配置:

! Configuration File for keepalived

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        50.1.1.2
    }
}

脚本配置:/opt/chk_nginx.sh (keepalive监控nginx的脚本状态)

#!/bin/sh
# check nginx server status
NGINX=/usr/local/nginx/sbin/nginx
PORT=80

nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
    $NGINX -s stop
    $NGINX
    sleep 3
    nmap localhost -p $PORT | grep "$PORT/tcp open"
    [ $? -ne 0 ] && /etc/init.d/keepalived stop
fi

keepalived.conf添加配置:

vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 2
weight 2
}

track_script {
chk_http_port
}

更进一步,为了避免启动keepalived之前没有启动nginx , 可以在/etc/init.d/keepalived的start中首先启动nginx:

start() {
    /usr/local/nginx/sbin/nginx
    sleep 3
    echo -n $"Starting $prog: "
    daemon keepalived ${KEEPALIVED_OPTIONS}
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}

转载自:用NginX+keepalived实现高可用的负载均衡


乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Nginx 反向代理转发实现负载均衡的高可用
喜欢 (1)

文章评论已关闭!