共计 11729 个字符,预计需要花费 30 分钟才能阅读完成。
本节我将带大家认识 tomcat 以及如何基于 memcached 实现 tomcat 的会话保持。好了废话不多说,下面我们就开始了。
tomcat 的介绍
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。实际上 Tomcat 是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。通常在我们的应用过程中,我们让 Apache 来处理 HTML 页面请求,而 Tomcat 实际上运行 JSP 页面和 Servlet。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。
tomcat 的安装
首先我们要做到是 部署 Java 环境,只有安装 JDK 即可。
这里我已经有下好的 JDK 了
我使用的是 jdk-7u9-linux-x64.rpm 这个版本
直接安装即可。
[root@TomcatA ~]# rpm -ivh jdk-7u9-linux-x64.rpm
tomcat 的话我这里也是下载好了。直接解压就可以用了 apache-tomcat-7.0.55.tar.gz
[root@TomcatA ~]# tar xf apache-tomcat-7.0.55.tar.gz -C /usr/local/ 我们把它放在 /usr/local/
一般我们都做个链接
[root@TomcatA local]# ln -sv apache-tomcat-7.0.55/ tomcat
下面修改下环境变量
[root@TomcatA local]# cat /etc/profile.d/java.sh 这个是 Java 的变量
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@TomcatA local]# cat /etc/profile.d/tomcat.sh 这个是 tomcat 的
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
好了下面就可以使用 Catalina.sh 来启动了 Catalina.sh 是服务启动脚本
[root@TomcatA local]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
这样 tomcat 就启动了。
[root@TomcatA local]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1473/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1726/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1578/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1823/master
tcp 0 0 0.0.0.0:46718 0.0.0.0:* LISTEN 1549/rpc.statd
tcp 0 0 :::36716 :::* LISTEN 1549/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1473/rpcbind
tcp 0 0 :::8080 :::* LISTEN 2147/java
tcp 0 0 :::22 :::* LISTEN 1726/sshd
tcp 0 0 ::1:631 :::* LISTEN 1578/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1823/master
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2147/java
tcp 0 0 :::8009 :::* LISTEN 2147/java
通过上面的结果我们可以看出该服务启动了 3 个端口:8080 8009 8005
在 Ubuntu 12.04 LTS 上通过 Tomcat 部署 Solr 4 http://www.linuxidc.com/Linux/2012-09/71158.htm
Ubuntu 下部署 Solr(4.4)到 Tomcat(7.0.53) http://www.linuxidc.com/Linux/2014-05/101443.htm
Linux 下 Apache 与多个 Tomcat 集群负载均衡 http://www.linuxidc.com/Linux/2012-01/51731.htm
Nginx Tomcat 集群负载均衡解决笔记 http://www.linuxidc.com/Linux/2013-07/86827.htm
实例详解 Tomcat 组件安装 +Nginx 反向代理 Tomcat+Apache 使用 mod_jk 和 mod_proxy 反向代理和负载均衡 http://www.linuxidc.com/Linux/2013-06/85290.htm
CentOS 6.5 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2014-06/103836.htm
Apache+Tomcat 环境搭建(JK 部署过程)http://www.linuxidc.com/Linux/2012-11/74474.htm
下面我们就可以直接通过浏览器看下了。通过 8080 端口访问。
OK,tomcat 服务以及可以启用了。
那么下面我们就来看看如何构建 Apache+tomcat+memcached 架构
实验:
前端 Apache:192.168.1.200
tomcat 节点:192.168.1.201(TomcatA),192.168.1.202(TomcatB)
memcached 节点(一主一备实现高可用):192.168.1.201, 192.168.1.202(机器内存有限,所以就没有用独立的主机了)
实验拓扑图:
前端 Apache 服务器配置
我们这里用到的是 Apache 的代理模块,由于 centos6.5 中内核支持该代理模块,因此我们只需要直接 yum 安装 httpd 然后再配置文件中加入以下文件即可:
[root@bogon ~]# vim /etc/httpd/conf.d/mod_proxy.conf
<Proxy balancer://lbcluster1>
BalancerMember http://192.168.1.202:8080 loadfactor=1
BalancerMember http://192.168.1.201:8080 loadfactor=1
ProxySet lbmethod=byrequests
</Proxy>
ProxyVia Off
ProxyRequests Off
ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/
memcached 服务器
缓存服务器直接在 2 个节点上 yum 安装即可,非常简单
yum install memcached
安装好之后启动服务
[root@localhost ~]# service memcached start
Starting memcached: [OK]
可以看到 11211 端口打开
[root@localhost ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::11211 :::*
LISTEN 0 128 *:11211 *:*
tomcat 端配置
最关键的就是 tomcat 的配置了
实现会话保持我们用到的是 memcached-session-manager,而他需要一下几个类库,我已经下载好了
这个是项目官方地址,可以到这里进行下载 http://code.google.com/p/memcached-session-manager/
[root@TomcatA msm]# ls
javolution-5.5.1.jar
memcached-session-manager-tc7-1.8.2.jar
spymemcached-2.10.2.jar
memcached-session-manager-1.8.2.jar
msm-javolution-serializer-1.8.2.jar
将这几个类库放到 tomcat 的 lib 库中,
[root@TomcatA msm]# cp * /usr/local/tomcat/lib/
进去看下,确保复制成功
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-10/107520p2.htm
好了下面就开始修改配置文件/usr/local/tomcat/conf/server.xml
分别在两个 tomcat 上的 host 上定义一个用于测试的 context 容器,并在其中创建一个会话管理器,如下所示:
<Context path=
"/test"
docBase=
"/usr/local/tomcat/webapps/test"
reloadable=
"true"
>
<Manager className=
"de.Javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes=
"n1:192.168.1.201:11211,n2:192.168.1.202:11211"
# 这里分别指向 2 台 memcached 服务器
failoverNodes=
"n1"
requestUriIgnorePattern=
".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass=
"de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
<
/Context
>
提供测试相应的文件夹及测试文件:
tomcatA:
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
mkdir: created directory `/usr/local/tomcat/webapps/test’
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF’
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/classes’
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/lib’
# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language=”java” %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color=”red”>TomcatA.magedu.com</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>
复制 web.xml 文件
# cp /usr/local/tomcat/conf/web.xml /usr/local/tomcat/webapps/test/WEB-INF/
tomcatB:
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
mkdir: created directory `/usr/local/tomcat/webapps/test’
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF’
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/classes’
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/lib’
# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language=”java” %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color=”blue”>TomcatB.magedu.com</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>
复制 web.xml 文件
# cp /usr/local/tomcat/conf/web.xml /usr/local/tomcat/webapps/test/WEB-INF/
好了下面我们就可以开始测试了
OK,sessionID 没变,会话成功保持。
那么本节的内容就讲到这里,老规矩,有什么不好地方欢迎大家的批评指正,谢谢!
Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里
本节我将带大家认识 tomcat 以及如何基于 memcached 实现 tomcat 的会话保持。好了废话不多说,下面我们就开始了。
tomcat 的介绍
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。实际上 Tomcat 是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。通常在我们的应用过程中,我们让 Apache 来处理 HTML 页面请求,而 Tomcat 实际上运行 JSP 页面和 Servlet。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。
tomcat 的安装
首先我们要做到是 部署 Java 环境,只有安装 JDK 即可。
这里我已经有下好的 JDK 了
我使用的是 jdk-7u9-linux-x64.rpm 这个版本
直接安装即可。
[root@TomcatA ~]# rpm -ivh jdk-7u9-linux-x64.rpm
tomcat 的话我这里也是下载好了。直接解压就可以用了 apache-tomcat-7.0.55.tar.gz
[root@TomcatA ~]# tar xf apache-tomcat-7.0.55.tar.gz -C /usr/local/ 我们把它放在 /usr/local/
一般我们都做个链接
[root@TomcatA local]# ln -sv apache-tomcat-7.0.55/ tomcat
下面修改下环境变量
[root@TomcatA local]# cat /etc/profile.d/java.sh 这个是 Java 的变量
JAVA_HOME=/usr/java/latest
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@TomcatA local]# cat /etc/profile.d/tomcat.sh 这个是 tomcat 的
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
好了下面就可以使用 Catalina.sh 来启动了 Catalina.sh 是服务启动脚本
[root@TomcatA local]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
这样 tomcat 就启动了。
[root@TomcatA local]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1473/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1726/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1578/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1823/master
tcp 0 0 0.0.0.0:46718 0.0.0.0:* LISTEN 1549/rpc.statd
tcp 0 0 :::36716 :::* LISTEN 1549/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1473/rpcbind
tcp 0 0 :::8080 :::* LISTEN 2147/java
tcp 0 0 :::22 :::* LISTEN 1726/sshd
tcp 0 0 ::1:631 :::* LISTEN 1578/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1823/master
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2147/java
tcp 0 0 :::8009 :::* LISTEN 2147/java
通过上面的结果我们可以看出该服务启动了 3 个端口:8080 8009 8005
在 Ubuntu 12.04 LTS 上通过 Tomcat 部署 Solr 4 http://www.linuxidc.com/Linux/2012-09/71158.htm
Ubuntu 下部署 Solr(4.4)到 Tomcat(7.0.53) http://www.linuxidc.com/Linux/2014-05/101443.htm
Linux 下 Apache 与多个 Tomcat 集群负载均衡 http://www.linuxidc.com/Linux/2012-01/51731.htm
Nginx Tomcat 集群负载均衡解决笔记 http://www.linuxidc.com/Linux/2013-07/86827.htm
实例详解 Tomcat 组件安装 +Nginx 反向代理 Tomcat+Apache 使用 mod_jk 和 mod_proxy 反向代理和负载均衡 http://www.linuxidc.com/Linux/2013-06/85290.htm
CentOS 6.5 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2014-06/103836.htm
Apache+Tomcat 环境搭建(JK 部署过程)http://www.linuxidc.com/Linux/2012-11/74474.htm
下面我们就可以直接通过浏览器看下了。通过 8080 端口访问。
OK,tomcat 服务以及可以启用了。
那么下面我们就来看看如何构建 Apache+tomcat+memcached 架构
实验:
前端 Apache:192.168.1.200
tomcat 节点:192.168.1.201(TomcatA),192.168.1.202(TomcatB)
memcached 节点(一主一备实现高可用):192.168.1.201, 192.168.1.202(机器内存有限,所以就没有用独立的主机了)
实验拓扑图:
前端 Apache 服务器配置
我们这里用到的是 Apache 的代理模块,由于 centos6.5 中内核支持该代理模块,因此我们只需要直接 yum 安装 httpd 然后再配置文件中加入以下文件即可:
[root@bogon ~]# vim /etc/httpd/conf.d/mod_proxy.conf
<Proxy balancer://lbcluster1>
BalancerMember http://192.168.1.202:8080 loadfactor=1
BalancerMember http://192.168.1.201:8080 loadfactor=1
ProxySet lbmethod=byrequests
</Proxy>
ProxyVia Off
ProxyRequests Off
ProxyPass / balancer://lbcluster1/
ProxyPassReverse / balancer://lbcluster1/
memcached 服务器
缓存服务器直接在 2 个节点上 yum 安装即可,非常简单
yum install memcached
安装好之后启动服务
[root@localhost ~]# service memcached start
Starting memcached: [OK]
可以看到 11211 端口打开
[root@localhost ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::11211 :::*
LISTEN 0 128 *:11211 *:*
tomcat 端配置
最关键的就是 tomcat 的配置了
实现会话保持我们用到的是 memcached-session-manager,而他需要一下几个类库,我已经下载好了
这个是项目官方地址,可以到这里进行下载 http://code.google.com/p/memcached-session-manager/
[root@TomcatA msm]# ls
javolution-5.5.1.jar
memcached-session-manager-tc7-1.8.2.jar
spymemcached-2.10.2.jar
memcached-session-manager-1.8.2.jar
msm-javolution-serializer-1.8.2.jar
将这几个类库放到 tomcat 的 lib 库中,
[root@TomcatA msm]# cp * /usr/local/tomcat/lib/
进去看下,确保复制成功
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-10/107520p2.htm