Web应用服务器Tomcat

一、tomcat

        Tomcat是Java语言开发的,Tomcat服务器是一个免费的开放源代码的Web应用服务器,是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。

同步
交互式网页,用户提交了请求,就是想看到查询的结果。服务器响应到来后是一个全新的页面内容,哪怕URL 不变,整个网页都需要重新渲染。例如,用户填写注册信息,只是 2 次密码不一致,提交后,整个注册页面重新刷新,所有填写项目重新填写( 当然有办法让用户减少重填 ) 。这种交互非常不友好。从代价的角度看,就是为了注册的一点点信息,结果返回了整个网页内容,不但浪费了网络带宽,还需要浏览器重新渲染网页,太浪费资源了,影响了用户体验和感受。上面这些请求的过程,就是同步过程,用户发起请求,页面整个刷新,直到服务器端响应的数据到来并重新渲染。
异步
传统的网页如果需要更新内容,必需重载整个网页面。 Ajax 的出现,改变这一切,同时极大的促进了Javascript的发展。 Ajax "Asynchronous Javascript And XML" (异步 JavaScript XML ),是指一种创建交互式、快速动态网页应用的网页开发技术,最早起源于1998 年微软的 Outlook Web Access 开发团队。Ajax 通过在后台与服务器进行少量数据交换, 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。Javascript 通过调用浏览器内置的 WEB API 中的XMLHttpRequest 对象实现 Ajax 技术。早期 Ajax 结合数据格式 XML ,目前更多的使用 JSON 。利用 AJAX 可实现前后端开发的彻底分离,改变了传统的开发模式。

安装

1.安装jdk

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

2.解压tomcat

[root@tomcat-node1 ~]# tar -zxvf apache-tomcat-9.0.93.tar.gz -C /usr/local/

3.设置软连接

[root@tomcat-node1]# cd /usr/local
[root@tomcat-node1 local]# ln -s apache-tomcat-9.0.93 tomcat

4.开启tomcat

[root@tomcat-node1 ~]# /usr/local/tomcat/bin/startup.sh

5.生成tomcat主配置文件

[root@tomcat-node1 ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre_openjdk

6.创建用户

[root@tomcat-node1 ~]# useradd -s /sbin/nologin -M tomcat

7.生成启动文件

# 修改权限
[root@tomcat-node1 ~]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node1 ~]# 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
[root@tomcat-node1 ~]# systemctl daemon-reload 

8.重启tomcat

[root@tomcat-node1 ~]# systemctl restart tomcat

 另一台主机同上

[root@tomcat-node2 ~]# yum install -y java-1.8.0-openjdk.x86_64
[root@tomcat-node2 ~]# tar -zxvf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat-node2 ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre_openjdk
[root@tomcat-node2 ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcat-node2 ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre_openjdk
# 修改权限
[root@tomcat-node2 ~]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node2 ~]# 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
[root@tomcat-node2 ~]# systemctl daemon-reload 
[root@tomcat-node2 ~]# systemctl restart tomcat

二、反向代理实现Tomcat

2.1 常见部署方式

准备一台安装好nignx的服务器

2.2 Nginx反向代理

反向代理单台web服务器

[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf 
server {
    listen *:80;
    server_name www.lm.org;
    root /data/wb/html;
    index index.html;
    location ~ \.jsp$ {
        proxy_pass http://172.25.254.10:8080;
    }
}
[root@nginx-node1 ~]# systemctl restart nginx

2.3 负载均衡

1.ip_hash

[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf 
upstream tomcat {
    ip_hash;
    #hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}
server {
    listen *:80;
    server_name www.lm.org;
    root /data/wb/html;
    index index.html;
    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}
[root@nginx-node1 ~]# systemctl restart nginx

源地址哈希,后端服务器不会改变 

2.cookie哈希

[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhost.conf 
upstream tomcat {
    #ip_hash;
    hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}
server {
    listen *:80;
    server_name www.lm.org;
    root /data/wb/html;
    index index.html;
    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}
[root@nginx-node1 ~]# systemctl restart nginx

三、session 共享服务器

msm

msm memcached session manager )提供将 Tomcat session 保持到 memcached 可以实现高可用。项目早期托管在google code, 目前在 Github github网站链接 : https://github.com/magro/memcached-session-manager
部署:

1.解压

[root@tomcat-node1 ~]# tar -zxvf apache-tomcat-9.0.93.tar.gz -C /usr/local/

2.复制

[root@tomcat-node1 ~]# cp test.jsp /usr/local/tomcat/webapps/
[root@tomcat-node1 ~]# scp test.jsp root@172.25.254.20:/usr/local/tomcat/webapps/
root@172.25.254.20's password: 
test.jsp                                                         100%  968   409.9KB/s   00:00  

3. 修改tomcat

172.25.254.10

[root@tomcat-node2 ~]# vim /usr/local/tomcat/conf/context.xml
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
      memcachedNodes="m1:172.25.254.10:11211,m2:172.25.254.20:11211"
      failoverNodes="m1"
      requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
      transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
[root@tomcat-node1 ~]# systemctl restart tomcat.service

172.25.254.20

[root@tomcat-node2 ~]# vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
      memcachedNodes="m1:172.25.254.10:11211,m2:172.25.254.20:11211"
      failoverNodes="m2"
      requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
      transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
[root@tomcat-node2 ~]# systemctl restart tomcat.service

4.下载

[root@tomcat-node2 ~]# yum install -y memcached

 

[root@tomcat-node1 ~]# yum install -y memcached

测试

1. 在两台 tomcat 都开启的情况下:
2. n1 被停止后继续提交信息看是否可以读取到之前的会话信息

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值