本文阐述在一台Win10 PC 上面搭建tomcat集群(安装两台Tomcat应用)以及如何应用nginx实现负载均衡。javascript
1. 搭建Tomcat集群html
按照前一篇博文的步骤在Win 10 PC上面安装两台Tomcat应用。前端
2. 搭建nginxjava
到nginx官网下载windows版本的nginx。(http://nginx.org/en/download.html)nginx
安装很简单,直接解压到某一固定目录下。我直接解压到D:\D\nginx-1.12.2下面。web
3. 配置nginxapache
nginx的配置文件为“nginx.conf”,在安装目录下(D:\D\nginx-1.12.2\conf)。须要修改的地方有两处,以下所示:windows
第一处为配置upstream,此处就是添加tomcat集群的信息。后端
#keepalive_timeout 0;
keepalive_timeout 10;tomcat
#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上请求链接的客户端,此时代理服务器对外就表现为一个服务器。