nginx实现负载均衡

(一)       组网图

 

(二)       简要说明

通过前面的学习,我们已经基本了解了nginx的反向代理逻辑,这里我们结合起来一起来配置一下nginx的核心功能负载均衡。

可解决问题:

(一)   请求压力过大时,选用多个后台进行分压,从而实现负载后的压力均摊。

(三)       nginx配置

#user  nobody;

worker_processes  1;    #开启niginx工作进程,一般几个CUP核心写几个

error_log  /usr/local/nginx/logs/error.log;

events {

    worker_connections  1024;  #一个进程能同时处理1024个请求

}

http {

        gzip on;        #开启gzip压缩

        gzip_min_length 1k;

        gzip_buffers 4 16k;

        gzip_http_version 1.0;

        gzip_comp_level 6;

        gzip_types text/plain text/css test/javascript application/json application/javascript application/x-javascript application/xml;

        #设置需要压缩的数据格式

        gzip_vary on;

        include       mime.types;

        default_type  application/octet-stream;

        sendfile on;

        keepalive_timeout 65;

        types_hash_max_size 2048;

# 日志配置

        access_log /usr/local/nginx/access.log;

#负载均衡

upstream zhihuisystem.zhengwei.com{

# max_fails 请求失败次数,fail_timeout 请求超时时间,weight压力策略,均为1即2个服务接口请求接收比例为1:1

        server 59.175.36.87:1060 weight=1 max_fails=2 fail_timeout=30s; 

        server 192.168.1.232:15587 weight=1 max_fails=2 fail_timeout=30s;

}

    server {

        listen       88;

        server_name  zhihuisystem.zhengwei60.com;  #同一端口外网映射后,使用不同ip访问不同的内网服务

        charset utf-8;

        root /usr/local/ISA;

        index index.html;

        #定义index页面

        error_page 404          /index.html;

        #反向代理通配 ISA请求接口

        location ^~ /api/

        {

        #proxy_pass http://192.168.1.60:15587;

        proxy_pass http://zhihuisystem.zhengwei.com;

        proxy_send_timeout 1800;

        proxy_read_timeout 1800;

        proxy_connect_timeout 1800;

        client_max_body_size 2048m;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded=-Proto $scheme;

        }

        #反向代理通配 地图资源

        location ^~ /googleMap/

                {

        #proxy_pass http://192.168.1.60:15587;

        proxy_pass http://zhihuisystem.zhengwei.com;

        proxy_send_timeout 1800;

        proxy_read_timeout 1800;

        proxy_connect_timeout 1800;

        client_max_body_size 2048m;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded=-Proto $scheme;

        }

        #反向代理通配 设备管理协议接口

        location ^~ /deviceManage/

        {

        #proxy_pass http://192.168.1.60:15587;

        proxy_pass http://zhihuisystem.zhengwei.com;

        proxy_send_timeout 1800;

        proxy_read_timeout 1800;

        proxy_connect_timeout 1800;

        client_max_body_size 2048m;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded=-Proto $scheme;

        }

        #反向代理通配 模板下载路径

        location ^~ /mould/

        {

        #proxy_pass http://192.168.1.60:15587;

        proxy_pass http://zhihuisystem.zhengwei.com;

        proxy_send_timeout 1800;

        proxy_read_timeout 1800;

        proxy_connect_timeout 1800;

        client_max_body_size 2048m;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded=-Proto $scheme;

        }

        #反向代理通配 后台文件生成目录

        location ^~ /temp/

        {

       # proxy_pass http://192.168.1.60:15587;

        proxy_pass http://zhihuisystem.zhengwei.com;

        proxy_send_timeout 1800;

        proxy_read_timeout 1800;

        proxy_connect_timeout 1800;

        client_max_body_size 2048m;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded=-Proto $scheme;

        }

        }

}

测试配置文件备份:

 

(四)       本地配置域名解析便于外网访问

a)    Windows配置访问验证

访问C:\Windows\System32\drivers\etc 下打开hosts文件 加入

zhihuisystem027.gnway.cc zhihuisystem.zhengwei.com

这里我们以ISA项目进行验证,通过上面的配置信息可以看到(红色部分)我们代理接口均指向upstream的集合,而集合中配置的是运行在【60后台服务】59.175.36.87:1060(同时验证跨域)和【232后台服务】 192.168.1.232:15587 。

同样通过Postman向代理服务发送接口

连续点击发送请求,分别查看232和60上运行的服务日志

 

负载均衡实现,且也实现反向代理外网ip。

附加异常测试(热备)

(一)   模拟启动一台tomcat宕机后,持续发送请求

关闭60tomcat

 

持续发送请求查看 60 和232日志

 

可以看到当其中一台tomcat宕机后,所有请求会分发给运行中的tomcat。

(二)   宕机恢复后,持续发送请求

恢复60服务

 

持续发送请求,查看60和232的日志

 

可以看到tomcat宕机恢复后,所有请求又会开始持续分发。

遗留问题:目前的分发机制中,当宕机tomcat恢复时,tomcat启动需要一定数据,此时持续发送请求时,请求一直处于待回执状态,这里后续需要寻求解决方法。

b)    Linux配置访问验证

访问编辑/etc/hosts

内容参考windows下配置

验证内容:略

posted @ 2018-11-07 14:01  努力跑在岁月之前  阅读(165)  评论(0编辑  收藏  举报