一、安装Nginx
下载nginx :nginx-1.4.7.tar.gz 放到~/Software目录
# tar zxvf nginx-1.4.7.tar.gz
# tar zxvf nginx-1.4.7.tar.gz
# cd nginx-1.4.4
#./configure --prefix=/usr/local/nginx
# make
# make install
安装成功后 /usr/local/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。
其中 Nginx 的配置文件存放于 conf/nginx.conf,
bin文件是位于 sbin 目录下的 nginx 文件。
确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功
如果出错,请参考 http://blog.sina.com.cn/s/blog_4ad7c2540101duql.html
二 配置Nginx + tomcat
修改 /usr/local/nginx/conf/nginx.conf文件 :
worker_processes 2;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log logs/access.log;
###########################
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
tcp_nopush on;
tcp_nodelay on;
upstream localhost {
#ip_hash
server localhost:18081;
server localhost:18080;
}
##############################
sendfile on;
keepalive_timeout 65;
server {
listen 9999;
server_name localhost;
location / {
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://localhost;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
上面配置中, 9999 是nginx的监听端口,即访问端口,18080和 18081是 tomcat的端口。
tomcat配置文件中
<Connector port="18080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
这里使用的端口是 HTTP协议端口,而不是 apache跟 tomcat结合使用的ajp13协议端口
测试,在tomcat的webapps下面新建一个 test.jsp,内容如下:
Welcome,Here!
<%
System.out.println("============tomcat3======"+new java.util.Date());
session.setAttribute("name3","tomcat3");
%>
tomcat3================<%=new java.util.Date()%>
<br>name3===${name3}</br>
<br>name4===${name4}</br>
<br>i was created by tomcat3,my sesssion Id is <%=session.getId()%></br>
另外一个tomcat中的 test.jsp文件内容如下:
Welcome,Here!
<%
System.out.println("============tomcat4======"+new java.util.Date());
session.setAttribute("name4","tomcat4");
%>
tomcat4================<%=new java.util.Date()%>
<br>name3===${name3}</br>
<br>name4===${name4}</br>
<br>i was created by tomcat4,my sesssion Id is <%=session.getId()%></br>
测试:访问 http://localhost:9999/test.jsp,可以看到 tomcat3 和tomcat4 交替访问。
但是sessionId每次都不同,两个tomcat之间没有做到共享。下面介绍用 memcache做session服务器。
三、安装 Memcache
1.安装memcache,需要先安装libevent
http://libevent.org/ 下载最新稳定版 libevent,并安装:
tar -zxvf ***.tar.gz 解压完之后,进入目录,
./configure --with-prefix=/usr
make
make install
测试libevent是否安装成功:
ls -al /usr/lib | grep libevent
还不错,都安装上了。
2.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install
进行 bin目录,启动 memcache
方法如下:
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
或者以如下方式启动:./memcached -d -u nobody -vv >>/tmp/memcached.log 2>&1
这样可以方便的查看 memcache日志。
四。配置memcache + tomcat
① 下载下面几个jar包,放到 tomcat的 lib目录中:
memcached-2.5.jar
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc6-1.5.1.jar
msm-javolution-serializer-1.5.1.jar
volution-5.5.1.jar
②修改 tomcat的 conf目录下的context.xml文件:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot;" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false"/>
启动memcache ,并打开日志(tail -f /tmp/memcached.log) ,访问http://localhsot:9999/test.jsp
就可以看到 tomcat交替访问,但是sessionId始终保持不变。即完成了session共享实验。
不过用自己的一个 项目放在两个tomcat中,发现一个登录之后,再进入home页的时候又提示请登录,暂时还没有解决问题。
Welcome,Here! tomcat3================Mon Jun 09 16:36:52 CST 2014
name3===tomcat3
name4===tomcat4
I was created by tomcat3,my sesssion Id is 96B904259F76AA8DBC7CE22AC2ACCDCA-n1.tomcat-3
经过仔细查看发现,96B904259F76AA8DBC7CE22AC2ACCDCA-n1.tomcat-3 这个才是看到的sessionId,前面的一串ID始终没有变化,但是后缀一个是 tomcat-3,另外一个是tomcat-4,所以这个可能是导致没有完全共享的原因。
记录部分 memcache日志:
重启之后的访问
36: Client using the ascii protocol
<36 get ping-n1
>36 END
<36 get 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 sending key 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 END
<36 delete 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 DELETED
<36 set 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4 2048 1798 634
>36 STORED
刷新可以看到:
<42 get ping-n1>42 END
<42 get 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4
>42 sending key 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4
>42 END
<42 delete 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4
>42 DELETED
<42 set 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3 2048 1800 634
>42 STORED
再刷新可以看到:
<36 get ping-n1
>36 END
<36 get 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 sending key 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 END
<36 delete 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-3
>36 DELETED
<36 set 9DDEE1A3A887BCA205FCA16E496A105B-n1.tomcat-4 2048 1800 634
>36 STORED
相关推荐
基于nginx+tomcat+memcache的负载均衡架构
tomcat+nginx+memcache高可用
【Nginx+Memcache+Tomcat集群(session共享)】是一种常见的高可用性和负载均衡解决方案,主要用于提升Web应用的性能和可扩展性。这个配置利用Nginx作为反向代理和负载均衡器,Memcache作为分布式session存储,而...
在构建高性能的Web服务环境中,Nginx、Memcache、Linux和Tomcat的集群组合是一个常见的解决方案。这个集群架构能够提供高可用性、负载均衡以及缓存优化,从而提高系统的响应速度和处理能力。 首先,让我们详细了解...
【标题】"nginx+tomcat+memcached例子"揭示了一个集成Web服务器技术的场景,其中Nginx作为前端代理服务器,Tomcat作为后端Java应用服务器,而Memcached则作为一个分布式内存缓存系统来提高整体性能。这个组合常用于...
这个压缩包“Nginx+tomcat6+memcache所需jar包”提供了实现这一目标所需的组件。 首先,Nginx是一个高性能的反向代理服务器,常用于负载均衡,它能够将用户的请求分发到后端不同的服务器上,从而提高服务的响应速度...
在构建分布式系统时,Session共享是一个关键问题,特别是在使用多台服务器(如Tomcat)和负载均衡器(如Nginx)的环境中。本压缩包提供的资源是为了解决这个问题,通过集成Memcached来实现Session的集中式管理,从而...
Nginx+Tomcat7+Memcached集群Session共享 完整例子 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对...
1 jdk安装及tomcat7解压缩安装配置 不用说明 2 下载nginx1 4 2 for win32 解压安装 3 下载memcached服务端for win32 解压安装 设成windows服务端 执行memcached exe d install 4 下载tomcat7对应的memcached所需jar...
### Apache、Tomcat、Memcache与Nginx在分布式网站建设中的应用 #### Apache与Tomcat集成 Apache是一款广泛使用的Web服务器软件,而Tomcat是Apache基金会下的一个开源项目,主要作为Java应用程序的Servlet容器。...
在构建高性能、高可用性的Web应用系统时,整合Nginx、Tomcat和Memcache是常见的一种技术架构。这个程序包“tomcat7+nginx+memcached”旨在实现通过Nginx进行负载均衡,以及利用Memcache来共享Tomcat服务器之间的...
Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 Memcached分布式缓存 Nginx+Tomcat 动静分离 Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载...
Nginx的核心配置文件位于`/usr/local/server/nginx/conf/nginx.conf`。以下是一个简单的配置示例: ```nginx # 运行用户 user nobody nobody; # 启动进程数量 worker_processes 2; # 全局错误日志及PID文件 error...
在构建分布式系统时,session共享是一个关键问题,特别是在使用多个应用服务器如Nginx和Tomcat的情况下。本主题聚焦于如何使用Nginx、Tomcat 8.0和Memcached 1.5来实现session共享,确保用户在访问不同服务器时能够...
使用Nginx做的负载均衡,memcache做高速cache,tomcat7.0.22做web容器环境下的session共享及缓存。 能够做到重启tomcatsession不失效或多个tomcat应用下session共享。 该RAR包包含了配置所需要的全部jar文件。
memcached-session-manager-1.9.5, kryo-3.0.3,asm-5.0.3等,我用的jdk是1.8,解决了tomcat7java.lang.NoSuchFieldError: attributes等 错误。
nginx:1.4.4 apache:2.2.29、2.4.10 mysql:5.1.73、5.5.40、5.6.21 php:5.2.17、5.3.29、5.4.23、5.5.7 php扩展:memcache、Zend Engine/ OPcache jdk:1.7.0 tomcat:7.0.54 ftp:(yum/apt-get安装) phpwind...
描述中提到的“Nginx+Tomcat8.5.6 + Memcache集群 kryo-serializer方式序列化 实现session共享”,进一步解释了架构的关键组成部分和策略。Nginx作为一个高性能的反向代理服务器,负责将用户请求分发到后端的Tomcat...
描述 "tomcat+nginx+memcache 集群所需要的jar包" 表明这是一个用于构建基于Tomcat应用服务器、Nginx反向代理服务器和Memcache缓存服务的集群环境所需的相关组件。在这个环境中,Nginx主要负责分发请求,而Tomcat...
描述中提到"nginx做tomcat负载均衡时",意味着这里涉及的是使用Nginx作为反向代理和负载均衡器,将来自用户的请求分发到后端的多个Tomcat服务器上。这样可以提高服务的可用性和响应速度,同时也为伸缩性提供了基础,...