tomcat实战演练

发布于:2024-08-25 ⋅ 阅读:(120) ⋅ 点赞:(0)

一.tomcat介绍

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

二.安装Tomcat 

1.安装java环境

[root@tomcat1 ~]# yum install java-1.8.0-openjdk.x86_64 -y

 2.安装并启动tomcat

[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.查看端口

[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 的主配置文件
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/tomcat.conf

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

[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/目录下

[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服务器编辑子配置文件并重启

[root@nginx ~]# vim /usr/local/nginx/conf.d/tomact.conf
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服务器安装缓存软件

[root@tomcat1 ~]# yum install memcached telnet -y

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

[root@tomcat1 ~]# vim /etc/sysconfig/memcached 

[root@tomcat1 ~]# systemctl start memcached.service 

3.spymemcached.jarmemcached-session-managekyro相关的jar文件都放到Tomcatlib目录

[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服务

[root@tomcat1 ~]# 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"
    />

4.浏览器测试

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


网站公告

今日签到

点亮在社区的每一天
去签到