共计 5497 个字符,预计需要花费 14 分钟才能阅读完成。
Tomcat 服务器是一个免费的开放源代码的 web 应用服务器,属于轻量级应用服务器,是开发和调试 JSP 程序的首选。由于 Tomcat 处理静态 HTML 的能力运不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。
- Nginx 服务器能支持高达 50000 个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低.
通常情况下,一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂请求等问题,不能单独应用于生产环境下,目前很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理及负载均衡器,简单来说就是 Nginx 作为负载均衡器,响应客户端的请求,Tomcat 作为应用服务器的负载集群, 处理客户端的请求,也就是说 Nginx 将访问请求转发给后端服务器池的服务器来处理。网站拓扑图如图所示:
案例环境:
主机 | 操作系统 | 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 已经配置启动成功。
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 了。
-
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 了。
-
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 站点间进行切换了。
真实环境中,服务器集群站点的内容相同,这里是为了测试负载均衡集的效果而建立 2 个不同的测试页面。
: