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

news2024/11/26 10:48:20

目录

一 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.coloradmin.cn/o/2061068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ollama 企业私有化部署大模型最佳解决方案

为什么要私有化部署大模型&#xff1f; 很多企业为了控制成本和减少核心数据外泄的风险&#xff0c;会通过私有化部署大模型&#xff0c;来控制成本和保障企业的数据安全。 说到本地化部署&#xff0c;这时就需要说到Ollama框架了。 Ollama 是什么&#xff1f; Ollama 是一个开…

霸王茶姬小程序任务脚本

霸王茶姬小程序任务脚本 小白操作----仅供学习研究参考 功能&#xff1a; 积分签到 解析 该脚本用于“霸王茶姬小程序”的签到和积分查询操作。通过模拟网络请求登录账号&#xff0c;获取个人信息&#xff0c;执行每日签到&#xff0c;并查询积分情况。支持多账号操作&#…

3.js - 使用着色器实现各种图形

有更多案例&#xff0c;私我 main.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls import * as dat from dat.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js// ts-ignore import basi…

一篇初学者入门Python匿名函数与Lambda表达式详细教程

首先要了解了如何定义和使用函数的参数,以及如何从一个函数返回值.这篇文章将深入介绍Python中的“匿名函数”和“Lambda表达式”,这两个概念在实际编程中非常有用 如果你对Python感兴趣的话&#xff0c;可以试试我整理的这一份全套的Python学习资料&#xff0c;【点击这里】免…

数据库表转为库表设计文档

开发完之后&#xff0c;就一大堆文档需要写的&#xff0c;其中就有库表设计文档&#xff0c;所以直接写个接口&#xff0c;直接把库表转为库表设计文档就行&#xff0c;省一大堆时间摸鱼了。直接贴代码。 pom文件引入依赖 <!--引入数据库表结构文档生成器Screw依赖--> &…

《驾驭未来:大型语言模型的理论与实践》—— 探索大模型的奥秘

在这个信息爆炸的时代&#xff0c;人工智能尤其是大型语言模型&#xff08;LLM&#xff09;已经成为推动科技进步的关键力量。无论是科学研究、商业应用还是日常生活&#xff0c;大型语言模型都在不断地改变着我们的世界。对于那些渴望深入了解这一前沿技术的人来说&#xff0c…

JAVA实现单词词频统计-辅助英文考试学习

一、基于GUI的可以自行输入的英文单词词频统计软件

SpingBoot集成kafka发送读取消息

SpingBoot集成kafka开发 kafka的几个常见概念 1、springboot和kafka对应版本&#xff08;重要&#xff09;2、创建springboot项目&#xff0c;引入kafka依赖2.1、生产者EventProducer2.2、消费者EventConsumer2.3、启动生产者的方法SpringBoot01KafkaBaseApplication2.4、appli…

小程序学习day10-自定义组件的data数据、方法、属性,data与properties的关系、自定子组件之数据监听器

39、WXS脚本&#xff08;小程序独有的一套脚本语言&#xff09;&#xff08;续&#xff09; &#xff08;6&#xff09;自定义组件的data数据、方法、属性 1&#xff09;自定义组件的data数据&#xff08;在小程序组件中&#xff0c;用于组件模版渲染的私有数据&#xff09; …

定格精彩瞬间!详解六自由度技术原理及应用

在体育赛事中&#xff0c;观赏各项目的精彩瞬间&#xff0c;欣赏运动员的卓越表现是观众们最为关注的焦点。以体操跳马为例&#xff0c;运动员们全力助跑&#xff0c;然后奋力起跳、腾空&#xff0c;接着精准的推手和转体动作&#xff0c;最后稳稳落地&#xff0c;整个动作行云…

【JAVA CORE_API】Day19 多线程API(2)、多线程并发安全问题、同步

多线程API 进程和线程 进程&#xff1a;进程就像是一个程序在电脑里运行时的一个实例。你可以把它想象成一个独立的小工人&#xff0c;专门负责完成某项任务&#xff08;比如打开浏览器、播放音乐&#xff09;。每个进程都有自己独立的资源&#xff08;比如内存&#xff09;和…

python 可迭代,迭代器,生成器,装饰器

1. 可迭代&#xff08;Iterable&#xff09; 可迭代 是指一个对象可以返回一个迭代器的对象。也就是说&#xff0c;它实现了 __iter__() 方法或 __getitem__() 方法。常见的可迭代对象有列表、元组、字符串、字典和集合。 from collections.abc import Iterablei 100 s &qu…

墙裂推荐!云上机密计算,阿里云上体验了一下海光内存加密和远程认证

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 机密计算目录 前言1、构…

哈希原理实现

本节主要看源代码实现 哈希特点 哈希&#xff08;Hashing&#xff09;是一种将数据映射到固定大小的表中以实现快速查找的数据结构和算法方法。哈希的主要特点包括&#xff1a; 1. 高效的查找、插入和删除 时间复杂度&#xff1a;哈希表通常提供近乎常数时间的查找、插入和…

app安全评估报告的常见留存措施(内附独家资料)

对用户账号、操作时间、操作类型、网络源地址和目标地址、网络源端口、客户端硬件特征等日志信息以及用户发布信息记录的留存措施 1**. 用户账号信息**&#xff1a;我们将用户账号信息安全存储&#xff0c;只有授权的人员能够访问。这些信息包括用户名、电子邮件地址等&#xf…

【C++ 面试 - 面向对象】每日 3 题(六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

VAuditDemo审计之二次注入漏洞

目录 VAuditDemo二次注入漏洞 搜索危险函数&#xff0c;用户可控点 regCheck.php messageSub.php message.php 漏洞调用链 漏洞错误利用过程 注册用户 xxxx, 发表payload留言 漏洞正确利用过程 注册用户 wwww\ 退出用户 wwww\\ 使用 wwww\ 登录 发表留言 替换dat…

《javaEE篇》--定时器

定时器概念 当我们不需要某个线程立刻执行&#xff0c;而是在指定时间点或指定时间段之后执行&#xff0c;假如我们要定期清理数据库里的一些信息时&#xff0c;如果每次都手动清理的话就太麻烦&#xff0c;所以就可以使用定时器。定时器就可以比作一个闹钟&#xff0c;可以让…

C++ 设计模式(6. 适配器模式)

适配器模式Adapter Pattern是一种结构型设计模式&#xff0c;它可以将一个类的接口转换成客户希望的另一个接口&#xff0c;主要目的是充当两个不同接口之间的桥梁&#xff0c;使得原本接口不兼容的类能够一起工作。基本结构 Target 是目标接口&#xff0c;Adaptee 是需要适配的…

微信小程序实例代码解读

以微信 小程序开发工具给的示例代码为例&#xff1a; 主页代码&#xff1a; index.wxml 这个文件是一个微信小程序页面的 WXML 结构,主要功能是展示一个快速开始教程的步骤和内容。 源代码&#xff1a; <!--index.wxml--> <view class"container">&l…