zoukankan      html  css  js  c++  java
  • Nginx负载均衡

    一、什么是负载均衡

      负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为 Load Balance,其意思就是分摊到多个操作单元上进行执行,例如 Web 服务器、FTP 服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

    二、负载均衡策略

    1、 轮询(默认)

      每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down掉,能自动剔除。

    2、指定权重

      指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

    3、IP 绑定 ip_hash

      每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

    4、fair(第三方)

      按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    5、url_hash(第三方)

      按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效。

    三、轮询(默认)

    1、模拟集群

      设置两个Tomcat同时访问一个servlet

      

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/NginxServlet")
    public class NginxServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("Nginx负载均衡!");
            System.out.println("当前访问端口:"+request.getServerPort());
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }

    2、修改nginx.conf文件

      

     3、启动Nginx和Tomcat

     4、访问www.znzn.com/NginxServlet  2次

      

     5、控制台效果  80和81端口输出一次

      

      

    四、设置权重

    1、模拟集群

      设置两个Tomcat同时访问一个servlet

      

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/NginxServlet")
    public class NginxServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("Nginx负载均衡!");
            System.out.println("当前访问端口:"+request.getServerPort());
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }

    2、修改nginx.conf文件

      

     3、启动Nginx和Tomcat

     4、访问www.znzn.com/NginxServlet  5次

      

     5、控制台效果  (底层算法默认先走一遍轮询)80输出2次 81输出1次

      

       

    五、IP 绑定 

    1、模拟集群

      设置两个Tomcat同时访问一个servlet

      

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/NginxServlet")
    public class NginxServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("Nginx负载均衡!");
            System.out.println("当前访问端口:"+request.getServerPort());
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }

    2、修改nginx.conf文件

      

     3、启动Nginx和Tomcat

     4、访问www.znzn.com/NginxServlet  

     5、控制台效果  无论访问几次都只会在80端输出

       

  • 相关阅读:
    Webpack配置
    闭包函数
    Vue2.0(一) 新手搭建环境
    用python编写一个合格的ftp程序,思路是怎样的?
    项目流程规范
    python: 基本数据类型 与 内置函数 知识整理
    前端知识 备忘录
    架构的演化路线
    深入理解并使用python的模块与包
    jquery 知识整理
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/12283418.html
Copyright © 2011-2022 走看看