Tomcat使用及负载均衡(最全源码安装及配置使用教程)

devtools/2024/10/17 18:20:15/

目录

一 Tomcat概述

1.1 Tomcat 简介

1.2 Tomcat 下载

二 Tomcat 单主机配置

2.1 Tomcat 环境配置

2.2 Tomcat 安装与添加系统启动

2.3 Tomcat 启动与停止

三 Tomcat 配置文件及反向代理

3.1 配置文件详解

3.2 反向代理实现Tomcat部署

四 Memcached安装

4.1 简介

4.2 安装与操作

五 session共享服务器

5.1 简介

5.2 配置


一 Tomcat概述

1.1 Tomcat 简介

Tomcat,全称Apache Tomcat,是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,也是开源的轻量级Web应用服务器。它最初由Sun的软件架构师詹姆斯·邓肯·戴维森开发,并得到了Sun和其他一些公司及个人的共同支持。Tomcat不仅遵循最新的Servlet和JSP规范,还具备许多先进和稳定的特性,因此深受Java爱好者的喜爱,并得到部分软件开发商的认可。

Tomcat 管理应用程序的生命周期,包括启动、停止和重新加载应用程序。它还提供了资源管理、线程管理和安全管理等功能,以确保应用程序的稳定运行。

Tomcat 具有良好的可扩展性,可以通过添加插件来增强其功能。例如,可以添加安全插件、性能监控插件、日志记录插件等。

开发人员可以根据自己的需求选择和安装合适的插件,以满足特定的应用场景。

特点:

Tomcat 是一个相对轻量级的 Web 应用服务器,占用系统资源较少。它可以在资源有限的环境中运行,适合小型到中型规模的 Web 应用。

Tomcat 的部署和配置相对简单。可以通过将 WAR 文件复制到 Tomcat 的部署目录或使用管理界面进行部署。

Tomcat 的配置文件易于理解和修改,开发人员可以根据自己的需求

对于小型到中型规模的 Web 应用,Tomcat 可以直接在生产环境中使用。它具有良好的稳定性和性能,可以满足大部分应用的需求。在生产环境中,可以使用多个 Tomcat 实例进行集群部署,以提高应用程序的可用性和性能。

1.2 Tomcat 下载

官网 :
http://tomcat.apache.org/
官网文档 :
https://tomcat.apache.org/tomcat-8.5-doc/index.html
帮助文档 :
https://cwiki.apache.org/confluence/display/tomcat/
https://cwiki.apache.org/confluence/display/tomcat/FAQ
链接:https://pan.baidu.com/s/1zUCJcF3HJZ_wrktas4Lm5w?pwd=8023 
提取码:8023

二 Tomcat 单主机配置

2.1 Tomcat 环境配置

补充:除过nginx配置剩余其他的,两台tomcat服务器配置保持一致

最终实验需要三台主机,两台tomcat服务器,一台nginx服务器

tomcat1:172.25.254.10

tomcat2:172.25.254.100

nginx:172.25.254.20

需要java环境

两台tomcat服务器需要java环境

2.2 Tomcat 安装与添加系统启动

#解压 tomcat压缩包
tar zxf apache-tomcat-9.0.93.tar.gz  -C /usr/local/
#做个软连接
ln -s /usr/local/apache-tomcat-9.0.93/ /usr/local/tomcat

2.3 Tomcat 启动与停止

#生成主配置文件
vim /usr/local/tomcat/conf/tomcat.conf
#写入java路径
JAVA_HOME=/usr/java/jdk1.8.0-x64/jre

生成启动文件

#建立用户
useradd -s /sbin/nologin -M tomcat
#赋予权限
chown -R tomcat.tomcat /usr/local/apache-tomcat-9.0.93/

配置服务启动脚本

vim /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now tomcat
systemctl start tomcat   启动
systemctl stop tomcat   停止
 

三 Tomcat 配置文件及反向代理

3.1 配置文件详解

bin 目录:存放启动和关闭 Tomcat 的脚本文件,如 startup.bat(Windows 系统)和 startup.sh(Linux 和 macOS 系统),以及其他一些管理脚本

conf 目录:包含 Tomcat 的主要配置文件

  • server.xml:Tomcat 的核心配置文件,定义了服务器的整体结构、端口设置、虚拟主机等。
  • web.xml:Web 应用的部署描述文件,配置 Servlet、过滤器、监听器等。
  • context.xml:Web 应用的上下文配置文件,可以配置数据源等资源。

lib 目录

存放 Tomcat 运行所需的各种库文件,包括 Tomcat 自身的库和一些通用的 Java 库。

logs 目录

存储 Tomcat 的运行日志文件,包括访问日志、错误日志等

temp 目录:用作临时文件存储的目录

webapps 目录

默认的 Web 应用部署目录。将 WAR(Web Archive)文件或展开的 Web 应用目录放在此目录下,Tomcat 会自动部署这些应用。

work 目录:Tomcat 运行时生成的临时文件目录,例如 JSP 文件编译后的 Servlet 类文件等。

  1. server.xml

    • 如前文所述,定义了服务器的整体架构。可以配置多个 Connector(连接端口)以支持不同的协议和端口号,设置 Engine(Servlet 引擎)、Host(虚拟主机)和 Context(Web 应用上下文)等元素。
  2. web.xml

    • 配置 Web 应用的各种组件。包括定义 Servlet、设置 Servlet 映射、配置过滤器和监听器等。还可以设置错误页面、欢迎页面、安全约束等。
  3. context.xml

    • 用于配置 Web 应用的上下文信息。可以配置数据源、会话超时时间、资源引用等。在 Tomcat 的全局 conf 目录下的 context.xml 文件会应用于所有 Web 应用,而在每个 Web 应用的 META-INF 目录下的 context.xml 文件则只对该特定应用生效。

3.2 反向代理实现Tomcat部署

nginx 主机安装nginx

编辑子配置文件

[root@localhost ~]# vim /etc/nginx/conf.d/vhost.conf

并且在tomcat目录放测试文件

 cp test.jsp /usr/local/tomcat/webapps/ROOT/

测试

四 Memcached安装

4.1 简介

Memcached 是一个高性能的分布式内存对象缓存系统。

 

一、主要特点

 
  1. 高效缓存

    • Memcached 主要用于在内存中缓存数据,以减少对后端数据库或其他数据源的访问次数,从而提高系统的性能和响应速度。
    • 它将数据存储在内存中,因此可以快速地读取和写入数据,特别适用于处理频繁访问的数据。
  2. 分布式架构

    • Memcached 可以在多个服务器上运行,形成一个分布式的缓存系统。
    • 客户端可以通过一致性哈希等算法将数据存储到不同的 Memcached 服务器上,实现数据的分布式存储和负载均衡
    • 这种分布式架构可以提高系统的可扩展性和可用性,当系统负载增加时,可以通过添加更多的 Memcached 服务器来扩展缓存容量。
  3. 简单易用

    • Memcached 的使用非常简单,它提供了一组简单的 API,客户端可以通过这些 API 轻松地与 Memcached 服务器进行交互。
    • 支持多种编程语言的客户端库,如 Java、Python、PHP 等,使得开发人员可以在不同的编程语言环境中使用 Memcached。
  4. 数据过期策略

    • Memcached 支持设置数据的过期时间,当数据超过指定的时间后,会自动从缓存中删除。
    • 这可以帮助系统及时清理不再需要的数据,释放内存空间,同时也可以确保缓存中的数据始终是最新的。

4.2 安装与操作

下载软件

配置

重启

systemctl start memcached

使用:

五 session共享服务器

5.1 简介

在分布式系统中,由于多个服务器可能同时处理来自不同客户端的请求,而传统的服务器各自维护自己的会话(session)数据,这就导致了在不同服务器之间无法直接共享会话信息的问题。为了解决这个问题,引入了 session 共享服务器。

  1. 实现跨服务器的会话一致性

    • 当用户在一个服务器上建立了会话后,如果后续的请求被分发到其他服务器上,通过 session 共享服务器,可以确保在不同服务器上都能访问到相同的会话数据,从而保持用户的会话状态一致。
    • 例如,用户在服务器 A 上登录后,后续的请求可能被分发到服务器 B 或 C,有了 session 共享服务器,无论请求被分发到哪个服务器,用户都不需要再次登录,因为会话数据可以在各个服务器之间共享。
  2. 提高系统的可扩展性和可用性

    • 在分布式系统中,可以根据负载情况动态地增加或减少服务器的数量。如果没有 session 共享服务器,增加或减少服务器可能会导致会话数据丢失或不一致。而有了 session 共享服务器,系统可以更加灵活地进行扩展和收缩,同时保证会话数据的完整性和可用性。
    • 例如,当系统负载增加时,可以添加新的服务器来处理更多的请求,而不会影响用户的会话状态。当某个服务器出现故障时,其他服务器可以继续处理请求,并且用户的会话数据仍然可以通过 session 共享服务器获取。
  1. 大型分布式 Web 应用

    • 在大型分布式 Web 应用中,通常会有多个服务器来处理用户的请求。为了保证用户的会话状态一致,需要使用 session 共享服务器来存储和管理会话数据。
    • 例如,电商网站、社交网络等大型 Web 应用通常会使用 session 共享服务器来实现用户的登录、购物车、个人资料等功能。
  2. 微服务架构

    • 在微服务架构中,各个微服务通常是独立部署的,它们之间通过网络进行通信。为了实现用户的会话管理,需要使用 session 共享服务器来存储和管理会话数据。
    • 例如,在一个微服务架构的电商系统中,用户服务、商品服务、订单服务等微服务可能会分别部署在不同的服务器上。为了实现用户的登录和购物车功能,需要使用 session 共享服务器来存储用户的会话数据,以便各个微服务都能够访问到相同的会话信息。

5.2 配置

参考:

链接: https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

将jar包放到/usr/local/tomcat/lib

下载jar包

https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
配置过程
vim /usr/local/tomcat/conf/context.xml
@@@@ 内容省略 @@@@
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFacto
ry"
/>
[root@tomcat-2 tomcat]# vim /usr/local/tomcat/conf/context.xml
@@@@ 内容省略 @@@@
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFacto
ry"
/>
特别注意格式,建议按照下列格式排版
测试:
总结:配置好时当第一台tomcat服务坏掉之后,立马切换下一台,并且之前的数据不会丢失


http://www.ppmy.cn/devtools/100061.html

相关文章

Apache Commons-IO 库

Apache Commons-IO是Apache开源基金组织提供的一组有关IO&#xff08;Input/Output&#xff09;操作的小框架。这个库的主要目的是为了提高IO流的开发效率&#xff0c;减少在进行文件读写、目录遍历等操作时编写的样板代码量。通过使用Commons-IO库&#xff0c;开发者可以更加简…

每日Attention学习16——Multi-layer Multi-scale Dilated Convolution

模块出处 [CBM 22] [link] [code] Do You Need Sharpened Details? Asking MMDC-Net: Multi-layer Multi-scale Dilated Convolution Network For Retinal Vessel Segmentation 模块名称 Multi-layer Multi-scale Dilated Convolution (MMDC) 模块作用 多尺度特征提取与融合…

EXCEL 分段排序--Excel难题#86

Excel某表格有3列。 ABC1A1B1512A2B27213A3B33824A4B495A5B5736A6B65777A7B7918A13B131509A14B144910A17B1770211A18B1870512A34B343313A35B3540914A36B3657915A37B3710 现在要求对表格按照第3列进行分段排序&#xff0c;由小到大排列。第1段&#xff1a;第3列小于等于50&…

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中&#xff0c;经常需要处理一些接口请求的参数&#xff0c;参数来源形式很多&#xff0c;可能是Excel、知识库文档等&#xff0c;有些数据形式比较复杂&#xff0c;比如多行或者包含很多不同的字符&#xff0c;示例如下&#xff1a; **客服质检分析指引** …

RPA自动化流程机器人助力企业财务数字化转型

在数字经济时代&#xff0c;企业需要快速响应市场变化&#xff0c;而财务数字化转型是企业适应现代商业环境、提升竞争力的必要步骤。财务数字化转型不仅涉及企业财务能力的提升&#xff0c;推动了财务管理与决策模式的转变。RPA自动化流程机器人因其能通过自动化技术帮助企业实…

如何从单点到集群配置Eureka:最佳实践与配置详解

如何从单点到集群配置Eureka&#xff1a;最佳实践与配置详解 1. 引言 什么是Eureka&#xff1f; Eureka是Netflix开源的服务发现和注册中心&#xff0c;广泛应用于微服务架构中。它允许各个服务实例在启动时注册到Eureka Server&#xff0c;并通过Eureka Client获取其他服务…

前端开发工程师面试整理-ES6+的新特性

ES6(ECMAScript 2015)及后续版本引入了许多新特性,极大地增强了JavaScript的功能和开发体验。以下是一些主要的新特性: 变量声明 1. let 和 const: ● let 声明块作用域变量。 ● const 声明常量,值不能重新赋值。 ● 示例:

轻松实现PDF转图片!2024四大实用工具推荐!

有时候我们需要将PDF文件中的内容转换为图片格式&#xff0c;以便在不同的平台和设备上更好地展示和分享。"PDF转图片"这一需求催生了众多转换工具的出现&#xff0c;它们以高效、便捷的服务帮助用户轻松实现格式转换。 福昕PDF转换大师&#xff08;365客户端&#…