• nginx负载均衡配置详解


    负载均衡在现在电商中是很常见的,主流的负载均衡有nginx,LVS和SLB等等。其中nginx的负载均衡是应用的很广泛的,在中小企业中应用的最多。

    本次实验中是一台Centos7和一台Cenos6.8

    Cenos7上面做nginx+tomcat nginx做负载均衡 tomcat做后端服务

    Cenos6.8上面做nginx nginx做后端服务

    在Centos7上做nginx

    上传包nginx包

    nginx-1.13.9.tar.gz

    安装需要到的包

    yum install gcc gcc-c++ pcre* zlib-devel openssl-devel gd-devel  php php-mysql php-fpm -y

    解压包

    tar -zxvf nginx-1.13.9.tar.gz

    进入目录

    cd nginx-1.13.9

    安装编译

    ./configure --prefix=/usr/local/nginx --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-http_slice_module --with-mail --with-threads --with-file-aio --with-stream --with-mail_ssl_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-pcre  --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module  && make && make install

    启动Nginx

    /usr/local/nginx/sbin/nginx

    查看ip 地址

    有页面说明启动成功

    nginx安装完成了

    安装tomcat

    创建一个java目录

    在/usr/local/java的目录分别创建两个目录 jdk tomcat

    分别把jdk和tomcat包放入相应的目录里

     jdk-8u144-linux-x64.tar.gz

    apache-tomcat-8.5.23.tar.gz 

    解压jdk

    tar -zxvf jdk-8u144-linux-x64.tar.gz 

    更改环境变量

    vi /etc/profile

    #set java environment
    export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_144 #jdk路径
    export JRE_HOME=/usr/local/java/jdk/jdk1.8.0_144/jre #jdk路径
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH

    生成环境变量

     source /etc/profile

    验证java环境

    java -version

    解压tomcat

    tar -xvf apache-tomcat-8.5.23.tar.gz

    在tomcat添加jdk的环境变量的路径

    进入tomcat目录的bin里面

    vi setclasspath.sh

    export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_144 #Jjdk路径
    export JRE_HOME=/usr/local/java/jdk/jdk1.8.0_144/jre

    在bin里面启动tomcat

    ./startup.sh

    在浏览器访问ip:8080 有tomcat的画面说明tomcat启动成功

    在另一个台Centos6.8上部署nginx,也可以是其他服务 比如tomcat apache 都可以

    此处用nginxweb服务,部署和上面是一样的。

    完成后开始配置负载均衡

    Nginx的负载均衡配置主要用到upstream模块

    在http字段里加入

    upstream fengxiao {
    server 192.168.3.236:8080;  #是Cenos7上的tomcat
    server 192.168.3.234:80;   #是Centos6.8上的nginx
    }

    在location里加入

    location / {
    root html;
    index index.html index.htm;
    proxy_pass http://fengxiao;
    }

    重启nginx

    /usr/local/nginx/sbin/nginx -s reload

    现在访问192.168.3.236  多刷新几次就会发现 一会是nginx 一会是tomcat页面说明基本的负载均衡配置成功。

    目前配置到此处

     昨日太困了,今天继续更新负载均衡配置

    目前的配置是两台nginx实现的负载均衡

    一台服务器要做负载均衡上面同样有页面

    另一台服务器只有web服务

    配置省略了

    直接配置负载均衡

    worker_processes 1;
    events {
    worker_connections 1024;
    }
    http {
    include mime.types;
    default_type application/octet-stream;
    #负载均衡配置
    #增加权重weight 暂时不能用down 备份服务backup当其他服务都忙时请求此服务器 103.106在3次请求失败,nginx在5分钟内,不会将新的请求分>配给它。
    upstream fengxiao {
    server 192.168.0.103:81 weight=6 max_fails=3 fail_timeout=300;
    server 192.168.0.106:81 weight=1 max_fails=3 fail_timeout=300 backup;
    }
    sendfile on;
    keepalive_timeout 65;
    #负载均衡server
    server {
    listen 80;
    server_name localhost;
    location / {
    # root html;
    # index index.html index.htm;

    proxy_pass http://fengxiao;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    }
    server {
    listen 81;
    server_name localhost;
    location / {
    root html;
    index index.html index.htm;
    }
    }
    }

    上面是我配置的负载均衡文件

    注意负载均衡的server和放web服务的端口不能一样,需要更换一个端口

    upstream fengxiao {
    server 192.168.0.103:81 weight=6 max_fails=3 fail_timeout=300;
    server 192.168.0.106:81 weight=6 max_fails=1 fail_timeout=300 backup;
    }

    重要的是这里 weight设置权重 权重越大访问的几率越大 max_falls设置失败的次数 fail_timeout设置失败后此web服务多久能再次访问 backup是其他服务都在忙的时候访问此服务器web。

    除了nginx本身的负载均衡策略还有第三方模块的负载

    这个模块根据web服务器响应时间策略来负载均衡

    下载fair模块源码 
    下载地址:https://github.com/xyang0917/nginx-upstream-fair

    把这个模块配置编译进nginx里

    此处省略,前几天的博客里有

    upstream fengxiao {

     fair;
    server 192.168.0.103:81 ;
    server 192.168.0.106:81 ;
    }

    检查nginx配置 重启

    url_hash 此种负载均衡在1.7以后就集成到Nginx里了不需要特别添加,此种负载均衡把固定的url固定访问到同一台后端服务器上

    upstream fengxiao {

    server 192.168.0.103:81 ;

    server 192.168.0.106:81 ;

     hash $request_uri;

    }

    负载均衡暂时更新到此处

    点一杯星巴克

  • 相关阅读:
    Cookie实现记住密码功能
    Mybatis实现修改功能
    微信企业号开发
    java使用CXF动态调用webservice接口
    Oracle数据库监听失败
    java实现导入excel功能
    全球根服务器分别部署在哪里?
    微软披露大规模网络钓鱼活动详细信息
    常用名称
    Centos设置网络(固定IP)
  • 原文地址:https://www.cnblogs.com/qingyuanyuanxi/p/8489355.html
Copyright © 2020-2023  润新知