nginx负载均衡_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

  f7f8353b5418fc6c5e4127f21d100e09.png

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文件

  1de6e5f0e20a66ddcc351f056c1a21d6.png

 3、启动Nginx和Tomcat
 4、访问www.znzn.com/NginxServlet  2次

  0619bc0cfafc93866a7430a7c5165f45.png

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

  d78c35d43fead88f91d603cc39afdc1a.png

  93c48e9b34fdbf9b19de2d6e84ff8d6f.png

四、设置权重

1、模拟集群

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

  f7f8353b5418fc6c5e4127f21d100e09.png

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文件

  93f9ecd709397af59ca67c0f4c16abb7.png

 3、启动Nginx和Tomcat
 4、访问www.znzn.com/NginxServlet  5次

  0619bc0cfafc93866a7430a7c5165f45.png

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

  7a5160336f1cb00e6e910129eb600c6e.png

   f24dff23ee2cda5cbacae2744c6ddb7c.png

五、IP 绑定 

1、模拟集群

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

  f7f8353b5418fc6c5e4127f21d100e09.png

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文件

  22c295af563c0e6cb81a7c1baa089b65.png

 3、启动Nginx和Tomcat
 4、访问www.znzn.com/NginxServlet 
 5、控制台效果  无论访问几次都只会在80端输出

   bd6ac0e8386d73e7f946ff6be1af998b.png

关注Linux公社(LinuxIDC.com)官方微信与QQ群,随机发放邀请码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值