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


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

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


    环境:

             Win8.1,JDK 1.6 , Nginx1.9.3

    Tomcat 7.0.63(两个tomcatserver)

    结构:

                        

     

    一、Nginx之反向代理


    1、Nginx配置:

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

    2、效果:

                              

                            

     

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

     

    二、Nginx之负载均衡

     

    1、实例

    a.Nginx配置

    upstream192.168.24.17{
          #ip_hash;
         server192.168.24.17:8080  weight=1;
         server192.168.24.43:8080  weight=2;
    }
        #gzip on;
     
        server {
            listen       8888;
            server_name  192.168.24.17;
     
           #charset koi8-r;
     
            #access_log  logs/host.access.log  main;
     
            location / {
       root   html;
              index  index.html index.htm;
      proxy_pass  http://192.168.24.17;
     
    proxy_connect_timeout1;
    proxy_send_timeout30;
    proxy_read_timeout60;
           }
     
            error_page   500 502 503 504  /50x.html;
           location = /50x.html {
                root   html;
           }

     

    b.配置说明:

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

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


    c.实验效果:



     



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

     

    2.原理


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

              upstreamNginxHTTP Upstream模块,这个模块通过一个简单的调度算法来实现clientIP到后端server的负载均衡.在上面的设定中,听过upstream指令指定了一个负载均衡的名称为192.168.24.17.这个名称能够随意指定,在后面须要用到的地方直接调用就可以.

     

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

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

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

     

    3).upstream支持的状态參数

    HTTP Upstream模块汇总,能够通过server指令指定后端server的IP地址和port,同一时候还能够设定每一个后端server在负载均衡调度中的状态.经常使用的状态有:

    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,后端server在负载均衡调度中的状态不能使weightbackup.

     

            通过这样的方式,当我们的站点訪问量越来越大时,我们就能承受很多其它的压力,而且可以动态的加入server.配置负载均衡非常easy,那么怎样实现多台server之间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)

  • 相关阅读:
    新型监控告警工具prometheus(普罗米修斯)入门使用(附视频讲解)
    Nginx、OpenResty和Kong的基本概念与使用方法
    Kubernetes网络方案Flannel的学习笔记
    新型监控告警工具prometheus(普罗米修斯)的入门使用(附视频讲解)
    超级账本HyperLedger:Fabric nodejs SDK的使用(附视频讲解)
    超级账本HyperLedger:Fabric使用kafka进行区块排序(共识,附视频讲解)
    超级账本HyperLedger:Fabric Golang SDK的使用(附视频)
    超级账本HyperLedger:Fabric的Chaincode(智能合约、链码)开发、使用演示
    超级账本HyperLedger:Fabric源码走读(一):源代码阅读环境准备
    超级账本HyperLedger:Fabric从1.1.0升级到1.2.0
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6886047.html
Copyright © 2020-2023  润新知