本文阐述在一台Win10 PC 上面搭建tomcat集群(安装两台Tomcat应用)以及如何应用nginx实现负载均衡。
1. 搭建Tomcat集群
按照前一篇博文的步骤在Win 10 PC上面安装两台Tomcat应用。
2. 搭建nginx
到nginx官网下载windows版本的nginx。(http://nginx.org/en/download.html)
安装很简单,直接解压到某一固定目录下。我直接解压到D:\D\nginx-1.12.2下面。
3. 配置nginx
nginx的配置文件为“nginx.conf”,在安装目录下(D:\D\nginx-1.12.2\conf)。需要修改的地方有两处,如下所示:
第一处为配置upstream,此处就是添加tomcat集群的信息。
#keepalive_timeout 0;
keepalive_timeout 10;
#gzip on;
#设定负载均衡的服务器列表 支持多组的负载均衡,可以配置多个upstream 来服务于不同的Server.
#nginx 的 upstream 支持 几 种方式的分配
#1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
#2)、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 跟上面样,指定了权重。
#3)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#4)、fair
#5)、url_hash #Urlhash
upstream local_tomcat_cluster {
#weigth参数表示权值,权值越高被分配到的几率越大
#1.down 表示单前的server暂时不参与负载
#2.weight 默认为1.weight越大,负载的权重就越大。
#3.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
#server 192.168.1.116 down;
#server 192.168.1.116 backup;
server localhost:8091;
server localhost:8092;
#server localhost:8091 weight=1;
#server localhost:8092 weight=5;
}
第二处修改nginx监听端口(修改为9999),以及转发信息(proxy_pass http://local_tomcat_cluster; 此处用的是upstream的名字,并不带有端口号),如下:
#配置代理服务器的地址,即Nginx安装的服务器地址、监听端口、默认地址
server {
listen 9999;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://local_tomcat_cluster;
root html;
index index.html index.htm;
}
当nignx接收到来自9999端口的请求时,会转发给tomcat集群,有tomcat做对应的web处理。
4. 启动nginx
用CMD进入到nginx的安装路径下,直接执行“start nginx”指令。另外还有几条比较有用的指令:
“nginx -s reload”:此指令使nginx.conf文件修改直接生效,应该是重启一次nginx。
“nginx -s stop”: 停止nginx。
“nginx -t”: 测试nginx.conf文件是否合法。
当启动nginx但是还没有启动tomcat时会出现如下页面:
5. 启动tomcat
在tomcat1和tomcat2中添加web应用。添加如下文件D:\D\apache-tomcat-8.5.30-tomcat1\webapps\tomcat1\index.jsp,D:\D\apache-tomcat-8.5.30-tomcat2\webapps\tomcat2\ndex.jsp。
index.jsp 内容如下:
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<body>
<% out.println("hello, This is Tomcat1"); %>
</body>
</html>
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<body>
<% out.println("hello, This is Tomcat2"); %>
</body>
</html>
并修改tomcat1和tomcat2相对应的server.xml.
<Host name="localhost" appBase="webapps/tomcat1"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="" reloadable="true" />
<Host name="localhost" appBase="webapps/tomcat2"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="" reloadable="true" />
最后启动tomcat1和tomcat2.
6. 验证
7. 总结
此处nginx位于tomcat集群的前端,充当了反向代理服务器的功能。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。