Nginx+Tomcat实现应用负载均衡

概述

当单个应用服务器压力过大时,可以使用多个应用服务器提供服务减轻单服务器的压力,再结合一个代理转发服务器,完成tomcat的负载均衡。

部署架构图

特点:
当请求达到nginx,nginx会根据weight和配置的服务器列表,完成请求的转发,实现应用服务器的负载均衡。
该架构适用于无状态共享的应用服务,因为session并没有设置共享。

用到工具

  • nginx 1.10
  • tomcat 1.8

环境准备

三个节点

  • 172.16.2.41 Tomcat tomcat_41
  • 172.16.2.42 Tomcat tomcat_42
  • 172.16.2.43 Nginx nginx_43

配置tomcat

配置端口(conf/server.xml)

1
2
3
<Connector port="1010" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

新增首页

新增应用服务器首页,tomcat/webapps/ROOT/index.html

1
2
3
4
[root@bigdata01 ROOT]# echo 'tomcat at 41 !' > index.html
[root@bigdata01 ROOT]# cat index.html
tomcat at 41 !
[root@bigdata01 ROOT]#

启动tomcat

1
2
3
4
5
6
7
8
[root@transwarp1 bin]# ./startup.sh 
Using CATALINA_BASE: /mnt/disk1/ray/tomcat
Using CATALINA_HOME: /mnt/disk1/ray/tomcat
Using CATALINA_TMPDIR: /mnt/disk1/ray/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /mnt/disk1/ray/tomcat/bin/bootstrap.jar:/mnt/disk1/ray/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@transwarp1 bin]#

配置tomcat2

方法同上。

部署Nginx

Nginx 安装

参考文章:Nginx 安装配置

配置nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
http {
upstream infullstack.com{ #集群名称
server 172.16.2.41:1010 weight=1;# 服务器列表,请求会转发到这些服务器
server 172.16.2.42:1010 weight=2;
}
server {
listen 88; # nginx端口
server_name localhost;
location / {
proxy_pass http://infullstack.com; #集群名称
proxy_redirect default;
}
...
}

启动和访问Nginx

访问http://172.16.2.43:88/

刷新页面,会发现请求会转发到41和42服务器


根据应用服务器的配置和需求,可以修改weight,配置服务器的权重。