tomcat memcache sticky sessions

什么是tomcat?

Apache Tomcat 是由Apache 软件基金会 开发的开源web服务器和servlet容器。它实现了Java Servlet,JavaServer页面(JSP),Java的统一表达式语言,以及Sun Microsystems的Java的WebSocket规范,并提供了一个运行java代码的web服务器环境。

Install and Config Java

Tomcat要求安装在服务器端Java,Java web应用程序代码才可执行
利用 yum 安装执行下面命令。

  • OpenJDK
    1
    # yum install java-1.8.0-openjdk-devel
    alternatives 在常用用于安装同类软件不同版本

tomcat通过JAVA_HOME变量找jdk安装目录。

设置JAVA_HOME环境变量

1
2
3
4
5
6

# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr
export PATH=$JAVA_HOME/bin:$PATH
# chmod u+x java.sh
  • Oracle JDK
    1
    2
    3
    4
    5
    # vim /etc/profile.d/java.sh

    epport JAVA_HOME=/usr/java/default
    export PATH=$JAVA_HOME/bin:$PATH
    # chmod u+x java.sh

Tomcat install

我们前往tomcat官方站点下载

1
2
3
4
5
6
7
8
9
10
11
12
13
#
# tar xvf apache-tomcat-VERSION.tar.gz -C /usr/local/
# cd /usr/local/
# ln -sv apache-tomcat-VERSION tomcat

# 添加变量
# vim /etc/profile.d/tomcat.sh
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin:$PATH

# . /etc/profile.d/tomcat.sh


Add tomcat user & group

1
2
3
4
5
# groupadd tomcat
# useradd -g tomcat -s /sbin/nologin -d /usr/local/tomcat/ tomcat
# chown -Rf tomcat.tomcat /usr/local/tomcat


Runing Tomcat

1
2
3

# /usr/local/tomcat/bin/catalina.sh start 或 #catalina.sh start

Config

  • tomcat目录结构

    • bin: 脚本启动时用到的类
    • lib: 类库
    • conf: 配置文件
    • logs: 日志文件
    • webapps: 应用默认程序部署目录
    • work: 工作目录
    • tmp: 临时文件目录
  • 配置文件

    • server.xml: 主配置文件;
    • context.xml: 每个webapp可以有专有的配置文件,这些配置文件通常位于webapp应用程序目录下的WEB-INF,用于定义会话管理,JDBC等;conf/context.xml是为webapp提供默认配置;
    • web.xml:每个webapp“部署”之后才可以被访问;此文件用于所以webapp的默认配置文件;
    • tomcat-users.xml: 用户认证帐号密码配置文件;
    • catalina.policy: 当使用-security选项启动tomcat实例,会读取此配置文件来实现其安全运行策略;
    • catalina.properties: Java属性定义文件,用于设定类加载器路径,以及一些JVM相关性能调优参数;
    • logging.properties; 日志相关的配置信息;

测速页

vim

创建目录

1
2
3
4
# cd tomcat/webapps

# mkdir myapp/{lib,class,WEB-INF,META-INF} -pv


# vim myapp/index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="red">TomcatA.magedu.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("magedu.com","magedu.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>

###
环境目录如下
/usr/share/tomcat/webapps

# tree /data/wepapps/

1
2
3
4
5
6
7
/data/wepapps/
└── ROOT
├── class
├── index.jsp
├── lib
├── META-INF
└── WEB-INF

配置

tomcat

memcached-session-manager项目地址下载地址,

需准备用到的jar扩展

注意:不同的tomcat版本(tomcat6,tomcat7,tomcat8)所需的包不一样,需要针对tomcat版本下载对应的包.

这是采用的javolution的序列化方式所有需要的包:

移动所有jar包到
mv *.jar /usr/share/tomcat/lib

配置memcache

### Example for sticky sessions + javolution

# vim $TOMCAT_HOME/conf/server.xml

1
2
3
4
5
6
7
8
9
10

<!-- <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
此处下添加如-->
<Context path="" docBase="/usr/share/tomcat/webapps/test/" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.0.10:11211,n2:192.168.0.12:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Context>

另一节点如此。

Config nginx load balancing

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#安装nginx
yum install nginx
#配置负载均衡
upstream tomcat_server {
server 192.168.0.12;
server 192.168.0.10;
}

server {
listen 80;
server_name 192.168.0.13;

location / {

proxy_pass http://tomcat_server;
proxy_set_header X-Real-IP $remote_addr;

}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!