阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux环境搭建Nginx+Tomcat负载均衡集群

190次阅读
没有评论

共计 5497 个字符,预计需要花费 14 分钟才能阅读完成。

Tomcat 服务器是一个免费的开放源代码的 web 应用服务器,属于轻量级应用服务器,是开发和调试 JSP 程序的首选。由于 Tomcat 处理静态 HTML 的能力运不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

  • Nginx 服务器能支持高达 50000 个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低.

通常情况下,一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂请求等问题,不能单独应用于生产环境下,目前很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理及负载均衡器,简单来说就是 Nginx 作为负载均衡器,响应客户端的请求,Tomcat 作为应用服务器的负载集群, 处理客户端的请求,也就是说 Nginx 将访问请求转发给后端服务器池的服务器来处理。网站拓扑图如图所示:
Linux 环境搭建 Nginx+Tomcat 负载均衡集群

案例环境:

主机 操作系统 IP 地址 主要软件
Nginx 服务器 RedHat7.3 x86_64 192.168.113.151 nginx-1.12.0.tar.gz
Tomcat 服务器 1 CentOS7.4 x86_64 192.168.113.129 jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gz
Tomcat 服务器 2 CentOS7.4 x86_64 192.168.113.150 jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gz
  • Tomcat1 server 配置

1. 启动主机后关闭防火墙

systemctl disable firewalld.service    // 禁用防火墙服务 
systemctl stop firewalld.service       // 关闭防火墙服务 

2. 安装 JDK,配置 Java 环境

(1). 解压 jdk 软件至 /opt 目录下,并将解压后生成的 jdk 文件夹移到 /usr/local/ 下, 改名为 java。

tar zxvf jdk-7u65-linux-x64.gz -C /opt
mv jdk1.7.0_65/ /usr/local/java

(2). 在 /etc/profile.d/ 下建立 java.sh 脚本。

[root@centos7-1 ~]# vim /etc/profile.d/java.sh 

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

(3). 将 java.sh 脚本导入到环境变量,使其生效

source /etc/profile.d/java.sh

(4). 运行 java-version 命令查看 java 版本是否和之前安装的一致。

[root@centos7-1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

3. 安装配置 Tomcat

(1). 解压 apache-tomcat-8.5.16.tar.gz 包至 /opt 目录,并将解压后生成的文件夹移动到 /usr/local/ 下,改名为 tomcat8。

tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/
mv apache-tomcat-8.5.16/ /usr/local/tomcat8

(2). 启动 Tomcat

[root@centos7-1 ~]# /usr/local/tomcat8/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.

Tomcat 默认运行在 8080 端口,运行 netstat 命令查看 8080 端口监听的信息。

[root@centos7-1 ~]# netstat -ntap | grep 8080  
tcp6       0      0 :::8080                 :::*                    LISTEN      1583/java   

(3). 打开浏览器访问测试 http://192.168.113.129:8080/, 如果出现 x 下面的界面,则表示 Tomcat 已经配置启动成功。
Linux 环境搭建 Nginx+Tomcat 负载均衡集群

4. 建立 Java 的 web 站点

(1). 在根目录下建立一个 web 目录,并在里面建立一个 webapp1 目录,用于存放网站文件。

[root@centos7-1 ~]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"

(2). 在 webapp1 目录下建立一个 index.jsp 的测试页面。

[root@centos7-1 ~]# 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>

(3). 修改 Tomcat 的 server.xml 文件。
定义一个虚拟主机,并将网站文件路径指向已经建立的 /web/webapp1,在 host 段增加 context 段。

[root@centos7-1 ~]# vim /usr/local/tomcat8/conf/server.xml 

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context> 
  • docBase:web 应用的文档基准目录
  • reloadable: 设置监视“类”是否变化
  • path=””: 设置默认“类

(4). 关闭 Tomcat,再重新启动。

/usr/local/tomcat8/bin/shutdown.sh  // 关闭 Tomcat
/usr/local/tomcat7/bin/startup.sh   // 重启 Tomcat

(5). 通过浏览器访问 http://192.168.113.129:8080/,出现下面的界面,说明 Tomcat 站点配置成功并且能够运行 JSP 了。
Linux 环境搭建 Nginx+Tomcat 负载均衡集群

  • Tomcat2 server 配置

    Tomcat2 server 配置方法基本同 Tomcat1,其中包括:

1. 启动主机后关闭防火墙。

2. 安装 JDK,配置 Java 环境,版本与 Tomcat1 server 一致。

3. 安装配置 Tomcat,版本与 Tomcat1 server 一致。

4. 创建 /web/webapp1 目录,修改 Tomcat 配置文件 server.xml 文件,将网站文件目录更改到 /web/webapp1/ 路径下。

5. 在 /web/webapp1/ 路径下建立 index.jsp,为了区别将测试页 index.jsp 的内容更改如下:

[root@localhost ~]# vim /web/webapp1/index.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>    // 注释
<html>
 <head>
  <title>JSP test2 page</title>  // 测试页标题
 </head>
 <body>
  <% out.println("Welcome to test   site,http://www.test2.com");%>  // 测试页主体内容
 </body>
</html>

6. 启动 tomcat,浏览器访问 http://192.168.113.150:8080/,出现下面的界面,说明 Tomcat 站点配置成功并且能够运行 JSP 了。
Linux 环境搭建 Nginx+Tomcat 负载均衡集群

  • Nginx 服务器配置

    在 Nginx 服务器 192.168.113.151 上安装 Nginx,反向代理两个 Tomcat 站点,并实现负载均衡。

    1. 关闭防火墙

    systemctl disable firewalld.service
    systemctl stop firewalld.service

    2. 安装支持软件

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

    3. 解压并安装 Nginx

    useradd  -s /bin/false www     // 创建运行用户 www, 强制禁止登陆系统 shell 环境 
    tar zxvf nginx-1.12.0.tar.gz -C /opt   // 解压 nginx 软件至 /opt 目录下 
    cd /opt/nginx-1.12.0/    // 切换到解压后的 nginx 文件夹目录下 
    ./configure \           // 配置 nginx 的具体选项 
    --prefix=/usr/local/nginx \  
    --user=www \
    --group=www \
    --with-file-aio \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module \
    --with-http_ssl_module
  • –prefix=/usr/l,ocal/nginx:指定 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 模块

4. 配置 nginx.conf

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

(1). 在 http{…} 中加入以下代码,设定负载均衡的服务器列表,weight 参数表示权值,权值越高被分配到的概率越大。为了使测试效果明显,把权重设置为一样。

 upstream tomcat_server {server 192.168.113.129:8080 weight=1;
              server 192.168.113.150:8080 weight=1;    
            }         // 配置后端服务池 tomcat_server,以提供响应数据 

(2). 在 http{…} – server{…} – location /{…} 中加入一行“proxy_pass http://tomcat_server;”。

location / {root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat_server;// 配置将访问请求转发给后端服务器池的服务器处理
        }

利用以上方式,把 Nginx 的默认站点通过 proxy_pass 方法代理到了设定好的 tomcat_server 负载均衡服务器组上。

5. 测试 nginx 配置文件是否正确。

[root@RedHat7-1 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

6. 启动 Nginx 服务并查看其端口

[root@RedHat7-1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  // 创建 nginx 主程序的软链接,方便调用 nginx 命令 
[root@RedHat7-1 ~]# nginx                  // 启动 nginx 服务 
[root@RedHat7-1 ~]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17819/nginx: master
[root@RedHat7-1 ~]# killall -1 nginx     // 重启 nginx 服务 
  • 测试负载均衡效果

1. 打开浏览器访问 http://192.168.113.151/.

2. 不断刷新浏览器测试,可以看到由于权重相同,页面会反复在以下两个页面切换。

第一次访问,出现 test1 的测试页面,刷新后,第二次访问出现 test2 的测试页面,这说明负载均衡集搭建成功,已经可以在两个 tomcat server 站点间进行切换了。
Linux 环境搭建 Nginx+Tomcat 负载均衡集群

Linux 环境搭建 Nginx+Tomcat 负载均衡集群
真实环境中,服务器集群站点的内容相同,这里是为了测试负载均衡集的效果而建立 2 个不同的测试页面。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计5497字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中