Nginx+Tomcat负载均衡集群

  • Tomcat服务器是一个免费的开房源代码的Web应用服务器,属于轻量级应用服务器;虽然Tomcat和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,但通常情况下,单个Tomcat站点由于可能出现单点故障而无法应付客户复杂多样的请求,所以需要结合Nginx强大的处理并发连接能力,将Nginx作为负载均衡器,用于调度Tomcat服务器,从而实现负载均衡群集。

Nginx+Tomcat网站拓补结构

案例环境

主机 操作系统 IP地址 主要软件
Nginx服务器 CentOS 7.3 x86_64 192.168.27.128 nginx-1.12.0.tar.gz
Tomcat服务器1 CentOS 7.3 x86_64 192.168.27.129 ①jdk-8u102-linux-x64.rpm②apache-tomcat-8.5.11.tar.gz
Tomcat服务器2 CentOS 7.3 x86_64 192.168.27.130 ①jdk-8u102-linux-x64.rpm②apache-tomcat-8.5.11.tar.gz

Tomcat服务器配置

1、配置Java环境

tar zxvf jdk-8u91-linux-x64.gz -C /opt //解压jdk软件包

mv jdk1.8.0_91/ /usr/local/java //设置工作目录

cd /etc/profile.d/

vim java.sh //配置环境变量脚本

export JAVA_HOME=/usr/local/java          //设置Java根目录//
export PATH=$PATH:$JAVA_HOME/bin          //在PATH环境变量中添加Java根目录下的bin/子目录//

source java.sh //java.sh脚本导入到环境变量,使其生效//

java -version //查看版本//

2、配置Tomcat1

tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/ //解压Tomcat软件包

mv apache-tomcat-8.5.16/ /usr/local/tomcat8 //设置工作目录

创建测试首页:

mkdir -pv /web/webapp1 //创建web目录//

vim /web/webapp1/index.jsp //编辑测试首页内容

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
  <title>JSP test1 page</title>
 </head>
 <body>
  <% out.println("Welcome to test site,http://www.test1.com");%>  
 </body>
</html>

vim /usr/local/tomcat7/conf/server.xml //编辑主配置文件,添加首页站点

<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>                           

//注解:docBase:web应用的文档基准目录
        reloadable 设置监视“类”是否变化
        path=""设置默认“类”

/usr/local/tomcat7/bin/startup.sh //启动tomcat//

netstat -ntap | grep 8080 //监听8080端口//

关闭防火墙与安全功能:

systemctl stop firewalld.service

setenforce 0

配置完成后访问其服务器进行验证:

3、配置Tomcat2

Tomcat2配置与Tomcat1配置相同,只需将测试首页内容中test1修改为test2,来区分两台Tomcat服务器:

Nginx服务器配置

安装环境:

yum install pcre-devel zlib-devel openssl-devel gcc gcc-c++ -y

解压并安装Nginx:

useradd -s /bin/false www 添加NGINX用户

tar zxvf nginx-1.6.0.tar.gz -C /opt

cd /opt/nginx-1.6.0/

./configure \  
--prefix=/usr/local/nginx \ //指定安装路径
--user=www \                //指定用户
--group=www \               //指定组
--with-file-aio \           //启用文件修改支持
--with-http_stub_status_module \    //启用状态统计
--with-http_gzip_static_module \    //启用gzip静态压缩
--with-http_flv_module \            //启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_ssl_module              //启用SSL模块

make && make install //安装编译安装

编辑Nginx主配置文件,使其可调用Tomcat服务器;

vim /usr/local/nginx/conf/nginx.conf

 #gzip  on;

    upstream tomcat_server {        //添加Tomcat服务器地址池,
              server 192.168.27.129:8080 weight=1;
              server 192.168.27.130:8080 weight=1;    
            }

    server {
        listen       80;
(.....省略)
location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;    //添加,调用前面服务器地址池
        }

/usr/local/nginx/sbin/nginx -t //检测是否成功//

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //创建软链接,以便管理员直接执行“Nginx”命令可直接调用Nginx主程序

nginx //启用nginx服务//

netstat -ntap | grep nginx //查看服务是否开启

关闭防火墙与安全功能:

systemctl stop firewalld.service

setenforce 0

测试负载均衡

  • 客户端直接访问Nginx服务器,Nginx服务器会调用提供Web服务的Tomcat服务器,每次调用不同Tomcat服务器,从而实现负载均衡: