• 【转】Nginx系列(五)--nginx+tomcat实现负载均衡


    原博文出于:  http://blog.csdn.net/liutengteng130/article/details/47129909   感谢!

        Nginx占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用Nginx网站用户有:新浪,网易,腾讯,淘宝等.

      以淘宝为例,进入淘宝主页,按F12。选择“NetWork”

            本文主要是基于Nginx搭建tomcat集群.

     

     

     

    环境:

             Win8.1,JDK 1.6 , Nginx1.9.3

       Tomcat 7.0.63(两个tomcat服务器)

    结构:

    一、Nginx之反向代理

     

    1、Nginx配置:

    1. upstreamlocahost{  
    2.      #ip_hash;  
    3.      server192.168.24.17:8080  weight=1;  
    4.      server192.168.24.43:8080  weight=2;  
    5. }  

     

     

    2、效果:

       反向代理:对于客户端而言,它就像是演示服务器,并且客户端不需要进行任何特别的设置.客户端反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样.前面博客:Nginx是什么?里面介绍了.

    二、Nginx之负载均衡

    1、实例

    a.Nginx配置

    1. upstream192.168.24.17{  
    2.       #ip_hash;  
    3.      server192.168.24.17:8080  weight=1;  
    4.      server192.168.24.43:8080  weight=2;  
    5. }  
    6.     #gzip on;  
    7.    
    8.     server {  
    9.         listen       8888;  
    10.         server_name  192.168.24.17;  
    11.    
    12.        #charset koi8-r;  
    13.    
    14.         #access_log  logs/host.access.log  main;  
    15.    
    16.         location / {  
    17.    root   html;  
    18.           index  index.html index.htm;  
    19.   proxy_pass  http://192.168.24.17;  
    20.    
    21. proxy_connect_timeout1;  
    22. proxy_send_timeout30;  
    23. proxy_read_timeout60;  
    24.        }  
    25.    
    26.         error_page   500 502 503 504  /50x.html;  
    27.        location = /50x.html {  
    28.             root   html;  
    29.        }  

    b.配置说明:

    a.Weight:权重,值越大,命中率越高

    b.上面标红的地方:192.168.24.17,这三处要一致才能实现负载均衡的效果.

     

    c.实验效果:

      说明:这个IP以及端口号是nginx设置的名称以及端口号.访问后能分别调用到后端不同的服务器.实现负载均衡效果.进一步可以看出本实例使用的是轮询的方式,也就是负载均衡默认的方式.

     

    2.原理

     

    1).upstream负载均衡模块说明:

              upstreamNginxHTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡.在上面的设定中,听过upstream指令指定了一个负载均衡的名称为192.168.24.17.这个名称可以任意指定,在后面需要用到的地方直接调用即可.

    2).updtream支持的负载均衡算法

    Nginx的负载均衡模块目前支持4种调度算法.

    1. 轮询(默认).每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动提出,使用户访问不受影响.Weight指定轮询权值,Weight值越大,分配到的访问几率越高,用于后端每个服务器性能不均的情况下.
    1. ip_hash 每个请求按访问IPhash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题.
    2. fair这是比上面两个更加智能的负载均衡算法.这种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配.Nginx本身是不支持fair,如果需要使用这种调度算法,必须下载Nginxupstream_fair模块.
    3. url_hash此方法按访问urlhash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率.Nginx本身是不支持url_hash,如果需要使用这种调度算法,必须安装Nginxhash软件包.

     

    3).upstream支持的状态参数

    HTTP Upstream模块汇总,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态.常用的状态有:

    1. down,表示当前的server暂时不参与负载均衡.
    2. backup,预留的备份机器.当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这才记起的眼里最轻.
    3. max_fails,允许请求失败的次数,默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误.
    4. fail_timeout,在经历了max_fails次失败后,暂停服务时间.max_fails可以和fail_timeout一起使用.

    :当负载调度算法为ip_hash,后端服务器在负载均衡调度中的状态不能使weightbackup.

            通过这种方式,当我们的网站访问量越来越大时,我们就能承受更多的压力,并且能够动态的添加服务器.配置负载均衡很简单,那么如何实现多台服务器之间session的共享呢?下篇继续介绍.

    注意:nginx放到中文目录下,启动时会有问题.

    打印出来的日志:

            [emerg] 10744#10916: CreateFile()"E:2 Java内容学习汇总Nginx ginx-1.4.7/conf/nginx.conf"failed (1113: No mapping for the Unicode character exists in the targetmulti-byte code page)

  • 相关阅读:
    IDEA 基本配置
    IDEA 创建一个普通的java项目
    Intellij Idea 创建一个Web项目
    override的实现原理
    elasticsearch 复杂查询小记
    post 中文数据到elasticsearch restful接口报json_parse_exception 问题
    String intern()方法详解
    JVM的DirectMemory设置
    深入浅出 JIT 编译器
    为什么 JVM 不用 JIT 全程编译
  • 原文地址:https://www.cnblogs.com/zlslch/p/6033578.html
Copyright © 2020-2023  润新知