tomcat实战演练

一.tomcat介绍

Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用, Tomcat 具有处理 HTML 页面的功能,它还是一个 Servlet 和 JSP容器。Tomcat 仅仅实现了 Java EE 规范中与 Servlet 、 JSP 相关的类库,是 JavaEE 不完整实现。

二.安装Tomcat

1.安装java环境

XML 复制代码
[root@tomcat1 ~]# yum install java-1.8.0-openjdk.x86_64 -y

2.安装并启动tomcat

XML 复制代码
[root@tomcat1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat1 ~]# ln -s /usr/local/apache-tomcat-9.0.93/ /usr/local/tomcat
[root@tomcat1 local]# /usr/local/tomcat/bin/startup.sh 

3.查看端口

XML 复制代码
[root@tomcat1 local]# netstat -antlupe | grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      0          59554      32787/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      0          59545      32787/java 

4.测试:查看端口

二.生成tomcat的启动文件

|----------|-------------------------------|
| 目录 | 说明 |
| bin | 服务启动、停止等相关程序和文件 |
| conf | 配置文件 |
| lib | 库目录 |
| logs | 日志目录 |
| webapps | 应用程序,应用部署目录,相当于 nginx 的默认发布目录 |
| work jsp | 编译后的结果文件,建议提前预热访问 |

  1. 生成 tomcat 的主配置文件
XML 复制代码
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/tomcat.conf

JAVA_HOME=/etc/alternatives/jre_openjdk
  1. 生成启动文件
XML 复制代码
[root@tomcat1 ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcat1 ~]# chown -R tomcat.tomcat /usr/local/apache-tomcat-9.0.93/
XML 复制代码
[root@tomcat1 ~]# 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

3.重启服务

XML 复制代码
[root@tomcat1 ~]# systemctl daemon-reload 
[root@tomcat1 ~]# systemctl enable --now tomcat.service 

三.实现tomcat中的负载均衡

动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是 Load Balance 负载 均衡。
当单机 Tomcat ,演化出多机多级部署的时候,一个问题便凸显出来,这就是 Session 。而这个问题的由来,都是由于 HTTP 协议在设计之初没有想到未来的发展。

1.将test.jsp文件放到 /usr/local/tomcat/webapps/ROOT/目录下

XML 复制代码
[root@tomcat1 ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.93.tar.gz  test.jsp
[root@tomcat1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/

2.nginx服务器编辑子配置文件并重启

XML 复制代码
[root@nginx ~]# vim /usr/local/nginx/conf.d/tomact.conf
XML 复制代码
upstream memcache {
    server 127.0.0.1:11211;
    keepalive 512;
}

upstream tomcat {
    hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}

server {
    listen *:80;
    server_name www.rhel9.org;
    root /data/web/html;
    index index.html;

    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}

3.浏览器测试www.rhel9.org/test.jsp

四.tomcat的session会话保持

Memcached 只支持能序列化的数据类型,不支持持久化,基于 Key-Value 的内存缓存系统 memcached虽然没有像 redis 所具备的数据持久化功能,比如 RDB 和 AOF 都没有,但是可以通过做集群同步的方式, 让各 memcached 服务器的数据进行同步,从而实现数据的一致性,即保证各 memcached 的数据是一样 的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢 失,当其他 memcached 重新加入到集群的时候 , 可以自动从有数据的 memcached 当中自动获取数据并 提供服务。
Memcached 借助了操作系统的 libevent 工具做高效的读写。 libevent 是个程序库,它将 Linux 的 epoll 、BSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高 性能。 memcached 使用这个 libevent 库,因此能在 Linux 、 BSD 、 Solaris 等操作系统上发挥其高性能。
Memcached 支持最大的内存存储对象为 1M ,超过 1M 的数据可以使用客户端压缩或拆分报包放到多个 key 中,比较大的数据在进行读取的时候需要消耗的时间比较长, memcached 最适合保存用户的 session 实现 session 共享。
Memcached 存储数据时 , Memcached 会去申请 1MB 的内存 , 把该块内存称为一个 slab, 也称为一个 page。

1.安装tomcat服务器安装缓存软件

XML 复制代码
[root@tomcat1 ~]# yum install memcached telnet -y

2.编辑memcached文件并开启服务

XML 复制代码
[root@tomcat1 ~]# vim /etc/sysconfig/memcached 
XML 复制代码
[root@tomcat1 ~]# systemctl start memcached.service 

3.将spymemcached.jar、memcached-session-manage、kyro相关的jar文件都放到Tomcat的lib目录中

XML 复制代码
[root@tomcat1 ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.93.tar.gz  jar  test.jsp
[root@tomcat1 ~]# cd jar/
[root@tomcat1 jar]# cp * /usr/local/tomcat/lib/
[root@tomcat1 jar]# ls
asm-5.2.jar                              minlog-1.3.1.jar
kryo-3.0.3.jar                           msm-kryo-serializer-2.3.2.jar
kryo-serializers-0.45.jar                objenesis-2.6.jar
memcached-session-manager-2.3.2.jar      reflectasm-1.11.9.jar
memcached-session-manager-tc9-2.3.2.jar  spymemcached-2.12.3.jar

3.修改context.xml配置文件并重启memcacged服务

XML 复制代码
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/context.xml 
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"
    />

4.浏览器测试

没做缓存前当其中一台服务器挂机时,页面所保存的内容刷新后会消失,做缓存后当其中一台服务器挂机时,页面所保存的内容刷新后会一直存在。

相关推荐
喜喜安18 分钟前
简述Git的使用
git
KingRumn22 分钟前
Linux进程间通信之消息队列(POSIX)
linux·服务器
laoliu199626 分钟前
Odoo 18企业版源码 包含 部署教程
运维·服务器
kk哥88991 小时前
Git 远程仓库操作
大数据·git·elasticsearch
开开心心就好1 小时前
免费卸载工具,可清理残留批量管理启动项
linux·运维·服务器·windows·随机森林·pdf·1024程序员节
Lbwnb丶1 小时前
检测服务器是否是虚拟化,如KVM,VM等
linux·运维·服务器
老猿讲编程1 小时前
【车载信息安全系列4】基于Linux中UIO的HSE应用实现
linux·运维·服务器
wanhengidc2 小时前
巨椰 云手机 云游戏稳定运行
运维·服务器·arm开发·游戏·云计算
不染尘.3 小时前
UDP客户服务器模型和UDP协议
服务器·网络·网络协议·计算机网络·udp
太行山有西瓜汁3 小时前
达梦DTS工具:批量导出与导入DDL脚本完整指南
运维·服务器·数据库