一个最简单的负载均衡测试,不涉及到session复制,只是将请求分配到不同的服务器上去而已。
1、创建一个简单的web应用。只有一个index.jsp页面,,内容如下。
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>Index</title> </head> <body> Hello,Nginx! <% System.out.println("*****************Nginx做负载均衡将请求分配到本服务器*****************"); %> </body> </html>
打印一句话就ok,能在不同服务器打印出来,说明请求被分配到不同的服务器了。
2、配置nginx.conf
1)在http节点中添加如下内容
upstream localhost {
server localhost:18080;//tomcat服务器-1号
server localhost:28080;//tomcat服务器-2号
}
2)在http节点中的server节点内容添加如下内容
location / {
proxy_pass http://localhost;
}
3、将web应用分别部署到两台tomcat服务器,启动两台tomcat,启动nginx。然后访问http://localhost/index.jsp,看看两台tomcat服务器打印的内容
4、以上是默认使用轮询的方式实现负载均衡,还有另外两种方式
Least connected(将请求分配到最空闲的服务器上)
upstream localhost {
least_conn;
server localhost:18080;
server localhost:28080;
}
ip_hash (基于客户端ip将请求分配到一些固定的服务器上)
upstream localhost {
ip_hash;
server localhost:18080;
server localhost:28080;
}
5、在轮询的方式中,还可以指定服务器接受请求的权重
upstream localhost {
server localhost:18080 weight=2;
server localhost:28080 weight=1;
}