一、什么是负载平衡
负载平衡 成立在现有网络布局之上,它提供了一种便宜有效透明的要领扩展网络设备和服务器的带宽、增加吞吐量、增强网络数据处理惩罚本领、提高网络的机动性和可用性。负载平衡,英文名称为 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);
}
}
3、启动Nginx和Tomcat 4、会见 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);
}
}
3、启动Nginx和Tomcat 4、会见 5次
5、节制台结果 (底层算法默认先走一遍轮询)80输出2次 81输出1次
五、IP 绑定 1、模仿集群
配置两个Tomcat同时会见一个servlet