通常情况下,一个tomcat站点由于可能出现单点故障及无法应对过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构。
Nginx是一款非常优秀的httpd服务器软件它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低,目前很多大型网站都应用Nginx服务器服务器作为后端网站程序的反向代理及负载均衡器,来提升整个网站的负载并发能力。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
本次实现将讲解以Nginx作为负载均衡器,Tomcat作为应用服务器的负载集群的设置方法
Nginx+Tomcat负载均衡集群
实验环境

主机 操作系统 IP地址 主要软件
Nginx服务器 CentOS-7-x86_64 192.168.75.131 Nginx
Tomcat服务器1 CentOS-7-x86_64 192.168.75.129 Tomcat、JDK
Tomcat服务器2 CentOS-7-x86_64 192.168.75.130 Tomcat、JDK

部署Tomcat

在安装Tomcat之前必须先安装JDK。编写好的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用JVM解释字节码文件,从而保证Java的跨平台性。

安装JDK,配置Java环境

  • 直接解压安装包,然后将安装包移动到/usr/local目录下重命名为java,便于系统管理
    tar zxvf jdk-8u91-linux-x64.tar.gz -C /opt/     //解压到/opt目录下
    mv jdk1.8.0_91/ /usr/local/java                 //移动文件并重命名
  • 在/etc/profile.d/下建立java.sh脚本,内容如下。
    export JAVA_HOME=/usr/local/java       //设置Java根目录
    export PATH=$PATH:$JAVA_HOME/bin       //在PATH环境变量中添加Java根目录下的bin/子目录
  • 将java脚本导入到环境变量中,使其生效
    source /etc/profile.d/java.sh
  • 运行java -version 命令查看Java版本是否和之前安装的一致。
    Nginx+Tomcat负载均衡集群

    安装配置Tomcat

  • 解压源码包,然后将其移动到/usr/local/下,并命名为tomcat8
  • 启动tomcat
    在/usr/local/tomcat8/bin/下,有tomcat的启动和关闭脚本。
    Nginx+Tomcat负载均衡集群
    Nginx+Tomcat负载均衡集群
    Tomcat默认运行在8080端口,可通过netstat命令查看8080端口监听的信息。
    netstat -ntap | grep 8080

    Nginx+Tomcat负载均衡集群

  • 关闭防火墙及selinux防火墙
    systemctl stop firewalld
    setenforce 0
  • 使用浏览器访问测试,如出现以下界面,则说明tomcat已经配置启动成功。
    Nginx+Tomcat负载均衡集群

    写入测试页面

  • 创建web目录
    mkdir -pv /web/webapp1
  • 修改tomcat的主配置文件
    修改该主配置文件/usr/local/tomcat8/conf/server.xml ,将网站文件目录更改到/web/webapp1路径下
    <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
    //docBase:web应用的文档基准目录,reloadable 设置监视“类”是否变化,path=""设置默认“类”

    Nginx+Tomcat负载均衡集群

  • 在/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>

    Nginx+Tomcat负载均衡集群

  • 重启服务
    Nginx+Tomcat负载均衡集群
  • 再次访问网站
    Nginx+Tomcat负载均衡集群
    两台Tomcat的搭建方式基本相同,在创建首页文件时要注意更改首页内容,不同的首页内容便于区别实验是否成功。

    Nginx服务器配置

  • 安装相关的依赖包
    yum install pcre-devel zlib-devel openssl-devel gcc gcc-c++ -y
  • 创建nginx用户
    useradd -s /bin/false www
  • 编译安装
    切换到配置目录下
    Nginx+Tomcat负载均衡集群
    ./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模块
  • 修改主配置文件(/usr/local/nginx/conf/nginx.conf)
    在http {···}中添加代码,设定负载均衡的服务器列表,weight参数表示权重,权值越高代表被分配到的概率越大,为了使测试效果比较明显,我们把权重设置为相同即可。
    upstream tomcat_server {
              server 192.168.75.129:8080 weight=1;     //tomcat1
              server 192.168.75.130:8080 weight=1;     //tomcat2
            }
    proxy_pass http://tomcat_server;

    Nginx+Tomcat负载均衡集群

  • 测试nginx配置文件是否正确,同时启动服务
    Nginx+Tomcat负载均衡集群
    如果出现启动失败,可能原因是系统有安装Apache,端口冲突,卸载A扒车软件即可
  • 关闭防火墙及selinux防火墙

    测试负载均衡效果

    打开浏览器访问,不断刷新网页,可以看到页面在我们之前设置的两个页面间切换。
    Nginx+Tomcat负载均衡集群
    Nginx+Tomcat负载均衡集群