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

目录

[一 Tomcat概述](#一 Tomcat概述)

[1.1 Tomcat 简介](#1.1 Tomcat 简介)

[1.2 Tomcat 下载](#1.2 Tomcat 下载)

[二 Tomcat 单主机配置](#二 Tomcat 单主机配置)

[2.1 Tomcat 环境配置](#2.1 Tomcat 环境配置)

[2.2 Tomcat 安装与添加系统启动](#2.2 Tomcat 安装与添加系统启动)

[2.3 Tomcat 启动与停止](#2.3 Tomcat 启动与停止)

[三 Tomcat 配置文件及反向代理](#三 Tomcat 配置文件及反向代理)

[3.1 配置文件详解](#3.1 配置文件详解)

[3.2 反向代理实现Tomcat部署](#3.2 反向代理实现Tomcat部署)

[四 Memcached安装](#四 Memcached安装)

[4.1 简介](#4.1 简介)

[4.2 安装与操作](#4.2 安装与操作)

[五 session共享服务器](#五 session共享服务器)

[5.1 简介](#5.1 简介)

[5.2 配置](#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 安装与添加系统启动

bash 复制代码
#解压 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 启动与停止

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

生成启动文件

bash 复制代码
#建立用户
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 共享服务器获取。
  3. 大型分布式 Web 应用

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

    • 在微服务架构中,各个微服务通常是独立部署的,它们之间通过网络进行通信。为了实现用户的会话管理,需要使用 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 @@@@ 内容省略 @@@@ \

测试:



总结:配置好时当第一台tomcat服务坏掉之后,立马切换下一台,并且之前的数据不会丢失

相关推荐
李小白667 分钟前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp20 分钟前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗1 小时前
常用类晨考day15
java
骇客野人1 小时前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言
yuanbenshidiaos2 小时前
c++---------数据类型
java·jvm·c++
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
Lojarro2 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
莫名其妙小饼干2 小时前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
isolusion3 小时前
Springboot的创建方式
java·spring boot·后端