Nginx+Tomcat负载均衡群集

发布于:2025-06-04 ⋅ 阅读:(25) ⋅ 点赞:(0)

目录

一:案例:部署Tomcat

1:案例分析

1.1:案例前置知识点

(1)Tomcat简介

(2)应用场景

1.2:案例环境

(1)本案例环境

(2)案例需求

2:案例实施

2.1:实施准备

2.2:安装配置Tomcat

2.3:测试

2.4:Tomcat配置相关说明

(1)主要目录说明

(2)配置文件说明

2.5:Tomcat主配置文件说明

2.6:Tomcat Server的组成部分说明

2.7:建立Java的Web站点

(1)配置Java的Web站点

(2)测试

二:案例:Nginx+Tomcat负载均衡群集

1:案例分析

1.1:案例环境

(1)本案例环境

(2)案例需求

2:案例实施

2.1:Tomcat2 Server配置

2.2:Nginx服务器配置

2.3:测试


一:案例:部署Tomcat

1:案例分析

1.1:案例前置知识点

(1)Tomcat简介

Tomcat 最初是由 Sun 的软件构架师詹姆斯・邓肯・戴维森开发的。后来他帮助将其变为开源项目,并由 Sun 贡献给 Apache 软件基金会。由于大部分开源项目 O’Reilly 都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为 Tomcat(公猫)。而 O’Reilly 出版的介绍 Tomcat 的书籍的封面也被设计成了一个公猫的形象。而 Tomcat 的 Logo 兼吉祥物也被设计成了一只公猫。

其实 Tomcat 在开始研发的时候并不叫这个名字,早期 Tomcat 项目的名字叫 Catalina,所以当我们安装完 Tomcat 后会发现安装路径下面有很多和 Catalina 有关的目录和文件,而这些文件通常也是我们使用或者配置 Tomcat 的重要文件。

(2)应用场景
  • 运行基于Java的动态网站(如Spring Boot、Struts等框架)。

  • 作为测试环境或中小型生产环境的Web服务器。

  • 与Nginx/Apache配合实现动静分离。

1.2:案例环境

(1)本案例环境
主机 IP 地址 操作系统 应用
Tomcat 服务器 OpenEuler24 192.168.10.101 apache - tomcat - 9.0.8
(2)案例需求

① 服务器及硬件选购;
② 测试并安装 tomcat;
③ 部署 tomcat 站点。

2:案例实施

2.1:实施准备

#关闭防火墙:
systemctl stop firewalld
setenforce 0	

#Java运行时(跑服务用到的环境)
dnf -y install java
java -version		#查看JDK是否安装

2.2:安装配置Tomcat

#上传Tomcat安装包
#解压Tomcat安装包
tar xf apache-tomcat-9.0.8.tar.gz
#移动Tomcat安装包
mv apache-tomcat-9.0.8.tar.gz /usr/local/tomcat
cd bin/
./startup.sh		#开启程序
#查看服务是否开启
netstat -anpt | grep tomcat
netstat -anpt | grep java

2.3:测试

访问默认页面
浏览器打开:http://服务器IP:8080,应看到Tomcat欢迎页。

2.4:Tomcat配置相关说明

(1)主要目录说明
/opt/tomcat
├── bin/     # 启动/关闭脚本(startup.sh、shutdown.sh)
├── conf/    # 配置文件(server.xml、web.xml)
├── webapps/ # 应用部署目录(ROOT为默认应用)
├── logs/    # 日志文件(catalina.out)
└── lib/     # 依赖库(JAR文件)
(2)配置文件说明
[root@localhost ~]# ll /usr/local/tomcat9/conf/
总计 228
drwxr-x--- 3 root root 4096 4月 14日 18:24 Catalina
-rw------- 1 root root 13531 2018年 4月 28日 catalina.policy
-rw------- 1 root root 7202 2018年 4月 28日 catalina.properties
-rw------- 1 root root 1400 2018年 4月 28日 context.xml
-rw------- 1 root root 1149 2018年 4月 28日 jaspc-providers.xml
-rw------- 1 root root 2313 2018年 4月 28日 jaspc-providers.xsd
-rw------- 1 root root 3850 2018年 4月 28日 logging.properties
-rw------- 1 root root 7593 4月 14日 18:58 server.xml
-rw------- 1 root root 2164 2018年 4月 28日 tomcat-users.xml
-rw------- 1 root root 2633 2018年 4月 28日 tomcat-users.xsd
-rw------- 1 root root 170202 2018年 4月 28日 web.xml
  •   catalina.policy:权限控制配置文件。
  •   catalina.properties:Tomcat属性配置文件。
  •   context.xml:上下文配置文件。
  •   logging.properties: 日志log相关配置文件。
  •   server.xml:主配置文件。
  •   tomcat-users.xml :manager-gui管理用户配置文件(Tomcat安装提供一个manager-gui的管理界面,通过配置该文件可以开启访问)。
  •   web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相关配置。

2.5:Tomcat主配置文件说明

server.xml 为 Tomcat 的主要配置文件,通过配置该文件,可以修改 Tomcat 的启动端口、网站目录、虚拟主机、开启 https 等重要功能。

整个 server.xml 由以下结构构成:<Server>、<Service>、<Connector />、<Engine>、<Host>、<Context>、</Context>、</Host>、</Engine>、</Service>和</Server>。以下是默认安装后 server.xml 文件的部分内容,其中内的内容是注释信息,黑色斜体部分是需要注意和需要经常更改的部分。

<?xml version="1.0" encoding="UTF-8"?>
…… //省略部分内容
<Server port="8005" shutdown="SHUTDOWN">
// Tomcat关闭端口,默认只对本机地址开放,可以在本机通过telnet 127.0.0.1 8005访问
// 对Tomcat进行关闭操作
…… //省略部分内容
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
//Tomcat启动的默认端口号8080,可以根据需要进行更改
…… //省略部分内容
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
//Tomcat启动AJP 1.3连接器时默认的端口号,可以根据需要进行更改
…… //省略部分内容
// 以下为 Tomcat 定义虚拟主机时的配置及日志配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!—
<Valve className="org.apache.catalina.authenticator.SingleSignOn" /> -->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

2.6:Tomcat Server的组成部分说明

Tomcat Server 由 Server、Service、Connector、Engine、Host 和 Context 组成。

(1)Server

Server 元素代表了整个 Catalina 的 servlet 容器。

(2)Service

Service 是这样一个集合:它由一个或者多个 Connector,以及一个 Engine(负责处理所有 Connector 所获得的客户请求)组成。

(3)Connector

一个 Connector 在某个指定端口上侦听客户请求,并将获得的请求交给 Engine 来处理,从 Engine 处获得回应并返回客户。

 

Tomcat 有两个典型的 Connector,一个直接侦听来自 browser 的 http 请求,一个侦听来自其他 WebServer 的请求。

(4)Engine

Engine 下可以配置多个虚拟主机 Virtual Host,每个虚拟主机都有一个域名。当 Engine 获得一个请求时,它把该请求匹配到某个 Host 上,然后把该请求交给该 Host 来处理。

 

Engine 有一个默认虚拟主机,当请求无法匹配到任何一个 Host 上的时候,将交给该默认 Host 来处理。

(5)Host

Host 代表一个 Virtual Host,即虚拟主机,每个虚拟主机和某个网络域名 Domain Name 相匹配。

 

每个虚拟主机下都可以部署 (deploy) 一个或者多个 Web App,每个 Web App 对应于一个 Context,有一个 Context path。

 

当 Host 获得一个请求时,将把该请求匹配到某个 Context 上,然后把该请求交给该 Context 来处理,匹配的方法是 “最长匹配”,所以一个 path=="" 的 Context 将成为该 Host 的默认 Context。

 

所有无法和其他 Context 的路径名匹配的请求都将最终和该默认 Context 匹配。

(6)Context

一个 Context 对应于一个 Web Application,一个 Web Application 由一个或者多个 Servlet 组成。

2.7:建立Java的Web站点

(1)配置Java的Web站点
mkdir -p /web/webapp1		#自定义目录
cd /web/webapp1		

#上传index.jsp的测试页面
修改:vim index.jsp

#关闭防火墙:
systemctl stop firewalld
setenforce 0	

#修改Tomcat的server.xml文件
vim /usr/local/tomcat/conf/server.xml
在添加<Host>下:
<Context docBase="/web/webapp1" path="" />

#开启程序
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
(2)测试

访问默认页面
浏览器打开:http://服务器IP:8080,应看到Tomcat欢迎页。

二:案例:Nginx+Tomcat负载均衡群集

1:案例分析

1.1:案例环境

(1)本案例环境
主机 IP 地址 操作系统 应用
Tomcat1 服务器 OpenEuler24 192.168.10.101 apache - tomcat - 9.0.8
Tomcat2 服务器 OpenEuler24 192.168.10.102 apache - tomcat - 9.0.8
Nginx 服务器 OpenEuler24 192.168.10.103 nginx - 1.26.3
(2)案例需求

① 安装 nginx、tomcat;
② nginx、tomcat 配置;
③ 编写动静分离页面。

2:案例实施

2.1:Tomcat2 Server配置

(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 的内容更改如下。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<html>   
<head>
     <title>JSP test2 page</title>   </head>
   <body>
     <% out.println("动态页面 2,http://www.test2.com");%>
   </body> 
   <body> 
    <div>动态页面的图片 2</div><br><img src="logo.png"> 
   </body> 
</html>

(6)启动 Tomcat,浏览器访问 Tomcat2 server,测试 http://172.16.16.173:8080/。

2.2:Nginx服务器配置

编辑nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
添加tomcat模块:
upstream my_tomcat {
	server 192.168.10.202:8080 weight=1;
	server 192.168.10.203:8080 weight=1;
}
去掉注释,语言编码(charset utf-8;)
添加代理:
location ~ .*\.jsp$ {
	proxy_set_header HOST $host;
	proxy_pass http://my_tomcat;
}
location ~ .*\.(png|jpg|gif|jpeg|bmp|swf|css)$ {
	root /usr/local/nginx/html/img;
	expires 30d;
}

cd /usr/local/nginx/
cd html/
mkdir img
cd img/         #上传图片

nginx -t
systemctl restart nginx	#重启服务

2.3:测试

访问默认页面
浏览器打开:http://服务器IP:8080,应看到Tomcat欢迎页。


网站公告

今日签到

点亮在社区的每一天
去签到