目录
一 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.targetAfter=syslog.target network.target[Service]Type=forkingEnvironmentFile=/usr/local/tomcat/conf/tomcat.confExecStart=/usr/local/tomcat/bin/startup.shExecStop=/usr/local/tomcat/bin/shutdown.shPrivateTmp=trueUser=tomcatGroup=tomcat[Install]WantedBy=multi-user.targetsystemctl daemon-reloadsystemctl enable --now tomcatsystemctl 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 类文件等。
server.xml:
- 如前文所述,定义了服务器的整体架构。可以配置多个
Connector
(连接端口)以支持不同的协议和端口号,设置Engine
(Servlet 引擎)、Host
(虚拟主机)和Context
(Web 应用上下文)等元素。web.xml:
- 配置 Web 应用的各种组件。包括定义 Servlet、设置 Servlet 映射、配置过滤器和监听器等。还可以设置错误页面、欢迎页面、安全约束等。
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 是一个高性能的分布式内存对象缓存系统。
一、主要特点
高效缓存
- Memcached 主要用于在内存中缓存数据,以减少对后端数据库或其他数据源的访问次数,从而提高系统的性能和响应速度。
- 它将数据存储在内存中,因此可以快速地读取和写入数据,特别适用于处理频繁访问的数据。
分布式架构
- Memcached 可以在多个服务器上运行,形成一个分布式的缓存系统。
- 客户端可以通过一致性哈希等算法将数据存储到不同的 Memcached 服务器上,实现数据的分布式存储和负载均衡。
- 这种分布式架构可以提高系统的可扩展性和可用性,当系统负载增加时,可以通过添加更多的 Memcached 服务器来扩展缓存容量。
简单易用
- Memcached 的使用非常简单,它提供了一组简单的 API,客户端可以通过这些 API 轻松地与 Memcached 服务器进行交互。
- 支持多种编程语言的客户端库,如 Java、Python、PHP 等,使得开发人员可以在不同的编程语言环境中使用 Memcached。
数据过期策略
- Memcached 支持设置数据的过期时间,当数据超过指定的时间后,会自动从缓存中删除。
- 这可以帮助系统及时清理不再需要的数据,释放内存空间,同时也可以确保缓存中的数据始终是最新的。
4.2 安装与操作
下载软件
配置
重启
systemctl start memcached
使用:
五 session共享服务器
5.1 简介
在分布式系统中,由于多个服务器可能同时处理来自不同客户端的请求,而传统的服务器各自维护自己的会话(session)数据,这就导致了在不同服务器之间无法直接共享会话信息的问题。为了解决这个问题,引入了 session 共享服务器。
实现跨服务器的会话一致性
- 当用户在一个服务器上建立了会话后,如果后续的请求被分发到其他服务器上,通过 session 共享服务器,可以确保在不同服务器上都能访问到相同的会话数据,从而保持用户的会话状态一致。
- 例如,用户在服务器 A 上登录后,后续的请求可能被分发到服务器 B 或 C,有了 session 共享服务器,无论请求被分发到哪个服务器,用户都不需要再次登录,因为会话数据可以在各个服务器之间共享。
提高系统的可扩展性和可用性
- 在分布式系统中,可以根据负载情况动态地增加或减少服务器的数量。如果没有 session 共享服务器,增加或减少服务器可能会导致会话数据丢失或不一致。而有了 session 共享服务器,系统可以更加灵活地进行扩展和收缩,同时保证会话数据的完整性和可用性。
- 例如,当系统负载增加时,可以添加新的服务器来处理更多的请求,而不会影响用户的会话状态。当某个服务器出现故障时,其他服务器可以继续处理请求,并且用户的会话数据仍然可以通过 session 共享服务器获取。
大型分布式 Web 应用
- 在大型分布式 Web 应用中,通常会有多个服务器来处理用户的请求。为了保证用户的会话状态一致,需要使用 session 共享服务器来存储和管理会话数据。
- 例如,电商网站、社交网络等大型 Web 应用通常会使用 session 共享服务器来实现用户的登录、购物车、个人资料等功能。
微服务架构
- 在微服务架构中,各个微服务通常是独立部署的,它们之间通过网络进行通信。为了实现用户的会话管理,需要使用 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.KryoTranscoderFactory"/>[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.KryoTranscoderFactory"/>特别注意格式,建议按照下列格式排版![]()
测试:![]()
![]()
总结:配置好时当第一台tomcat服务坏掉之后,立马切换下一台,并且之前的数据不会丢失