欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Nginx+Tomcat负载均衡群集

Nginx+Tomcat负载均衡群集

2025/6/22 11:30:54 来源:https://blog.csdn.net/2301_81259717/article/details/148782744  浏览:    关键词:Nginx+Tomcat负载均衡群集

一、Nginx+Tomcat 负载均衡、动静分离

1、Tomcat 简介

名称由来:Tomcat 最初由 Sun 的软件构架师詹姆斯・邓肯・戴维森开发,后变为开源项目并由 Sun 贡献给 Apache 软件基金会。因 O’Reilly 开源项目常以动物命名相关书籍,他希望动物能自我照料,故命名为 Tomcat(公猫 ),O’Reilly 相关书籍封面及 Tomcat 的 Logo 兼吉祥物也设计成公猫形象 。且 Tomcat 早期叫 Catalina,安装后路径下有很多和 Catalina 相关、对使用或配置 Tomcat 重要的目录和文件。

2、应用场景

Tomcat 服务器是免费开源代码的 Web 应用服务器,属轻量级,在中小型系统、并发访问用户不多场景普遍使用,是开发和调试 JSP 程序首选。它虽和 Apache、Nginx 一样可处理 HTML 页面,但处理静态 HTML 能力不及后两者,通常作为 Servlet 和 JSP 容器单独运行在后端 

3、部署Nginx+Tomcat 负载均衡、动静分离

3.1、实验拓扑

3.2、案例环境

主机IP 地址操作系统应用
客户端192.168.10.104Windows——
Tomcat1 服务器192.168.10.103OpenEuler24apache-tomcat-9.0.8
Tomcat2 服务器192.168.10.102OpenEuler24apache-tomcat-9.0.8
Nginx 服务器192.168.10.101OpenEuler24nginx-1.26.3

Tomcat主机实验步骤:

1>关闭各节点防火墙及内核保护
systemctl stop firewalld
setenforce 0

2>安装Tomcat依赖环境(JAVA运行时)
dnf -y install java

3>解压绿色面安装版包

4>移动到合适位置
mv apache-tomcat-9.0.8 /usr/local/tomcat

5>将Tomcat服务加入守护进程
# 使用 vim 编辑 tomcat.service 服务单元文件,该文件用于 systemd 管理 Tomcat 服务
vim /lib/systemd/system/tomcat.service# [Unit] 部分:定义服务的基本描述、依赖关系等元数据
[Unit]
# Description:对服务的简短描述,说明这是 Apache Tomcat Web 服务器
Description=Apache Tomcat Web Server
# After:指定该服务在哪个系统目标(target)之后启动,这里表示在网络服务(network.target)就绪后再启动 Tomcat,
# 确保 Tomcat 启动时网络可用,避免因网络未就绪导致服务异常
After=network.target# [Service] 部分:定义服务的具体运行、控制逻辑
[Service]
# ExecStart:服务启动时执行的命令,调用 Tomcat 安装目录下 bin 目录里的 catalina.sh 脚本,以 run 参数启动 Tomcat 进程,
# 让 Tomcat 以前台运行模式(适配 systemd 管理)持续提供服务
ExecStart=/usr/local/tomcat/bin/catalina.sh run
# ExecStop:服务停止时执行的命令,调用 catalina.sh 脚本的 stop 参数,优雅停止 Tomcat 服务
ExecStop=/usr/local/tomcat/bin/catalina.sh stop
# Restart=on-failure:设置重启策略,当服务因非正常退出(如崩溃、错误等导致的失败)时,自动重启服务
Restart=on-failure
# RestartSec=5s:重启服务前等待的时间,这里是等待 5 秒后再尝试重启,避免频繁重启对系统造成过大压力
RestartSec=5s# [Install] 部分:定义服务的安装相关配置,即服务启用后要关联到哪个系统目标
[Install]
# WantedBy=multi-user.target:表示该服务启用(systemctl enable)后,会被关联到 multi-user.target 这个系统目标,
# 当系统进入多用户模式(常规的命令行、服务器运行模式)时,自动启动该 Tomcat 服务 
WantedBy=multi-user.target

6>重新加载守护进程
systemctl daemon-reload
7>启动服务并查看监听
systemctl start tomcatnetstat -anpt | grep java

8>创建web目录、编辑测试网页
mkdir -p /var/web/webapp1vim /var/web/webapp1/index.jsp###编辑内容###<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>JSP test2 page</title>
</head>
<body><% out.println("动态页面 1,http://www.test1.com");%>
</body>
<body><div>动态页面的图片 1</div><br><img src="logo.png">
</body>
</html><%@ 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.jpg">
</body>
</html>

9>修改Tomcat的server.xml 文件
<Context docBase="/var/web/webapp1" path="">
</Context>

10>访问测试

Nginx主机实验步骤:

 1>、编译安装Nginx
1.1、安装支持软件
#关闭防火墙
systemctl stop firewalld#禁用防火墙
systemctl disable firewalld#临时关闭内核保护机制
setenforce 0#永久关闭内核保护机制
vim /etc/sysconfig/selinux#在配置文件中修改参数为:
SELINUX=disabled

#提供编译安装的环境
dnf -y install gcc zlib-devel pcre-devel openssl-devel
1.2、创建程序用户
useradd -M -s /sbin/nologin nginx

1.3、编译安装 Nginx
#解压
tar zxf nginx-1.26.3_http_proxy.tar.gzcd nginx-1.26.3#配置
./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx  \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--add-module=./ngx_http_proxy_connect_module#编译
make#编译安装
make install#做软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

2>、Nginx 的运行控制
2.1、检查配置文件
nginx -t

2.2、Nginx的启、停
#开启
nginx#关闭
nginx -s stop#查看状态
netstat -anpt | grep nginx

2.3、添加 Nginx 系统服务
#切换目录
cd /lib/systemd/system#编辑服务文件
vim nginx.service#编写内容:
[Unit]
Description=cyauhiojpkl67tfyjop0k[ldrtuyfgiuvjnko
After=network.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/sbin/nginx
ExecStop=/usr/sbin/nginx -s stop
ExecReload=/usr/local/sbin/nginx -s reload[Install]
WantedBy=multi-user.targe

备注:
fork 其实本身就是一个进程。
当执行 Execstart 启动 nginx 进程的时候,fork 进程自身以 daemon 模式运行,将 nginx作为一个子进程,并启动起来这个 nginx 的子进程。然后 fork 父进程退出。并将 fork 出的 nginx 子进程作为服务主进程进行跟踪

3>编辑Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf###编辑内容###
upstream aaa {server 192.168.10.102:8080 weight 1;
server 192.168.10.103:8080 weight 2;}location ~ .*\.jsp$ {proxy_pass http://aaa;proxy_set_header HOST $host;proxy_set_header Client-IP $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location ~ .*\.(png|gpg|gpeg|gif) {root html/img;index index.html;}

4>修改Tomcat的server.xml 文件
vim /usr/local/tomcat/conf/server.xml###编辑内容###<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="{X-Real-IP}i %h %l %u %t &quot;%r&quot; %s %b" />

5>访问测试

6>查看日志中访问者的IP

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词