nginx+tomcat+memcached网页动态请求分配的安装与配置

 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

在这里我们以nginx作为http服务器,当发现外部的请求为jsp格式的动态页面请求时,Nginx服务器将请求连接至tomcat上面进行执行响应,这里的memached作为内存中的缓存系统在这里进行调用,通过使用memached系统来减小服务器访问数据库的次数,并增加读取速度。

这里nginx主服务器的IP为:172.25.9.1   主机名为:pt1.example.com

两个tomcat子服务器的IP为:172.25.9.3   主机名为:pt3.example.com

172.25.9.3   主机名为:pt3.example.com

一、主服务器的配置:

这里不再介绍nginx的源码安装以及配置,如有需要,请参照http://ptallrights.blog.51cto.com/11151122/1775242

下面直接进行配置文件nginx.conf 的修改:

http {

upstream    pt {            #指定自定义模块名字为pt

sticky;                    #使用的算法为sticky

server 172.25.9.3:8080;        #一个子服务器为172.25.9.3,监听的是8080端口

server 172.25.9.4:8080;        #一个子服务器为172.25.9.4,监听的是8080端口

}

include       mime.types;

default_type application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.php index.htmlindex.htm;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

location/status {

stub_status on;

access_log off;

}

location ~ \.jsp$ {

proxy_pass   http://pt;        #当请求是jsp格式时,调用pt这个模块

}

location ~ \.php$ {

root           html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

#fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;

include        fastcgi.conf;

}

}

server {

listen       443 ssl;

server_name  localhost;

ssl_certificate      cert.pem;

ssl_certificate_key  cert.pem;

ssl_session_cache   shared:SSL:1m;

ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers  on;

location / {

root   html;

index  index.html index.htm;

}

}

server{

listen       80;

server_name  wwwNaN.com alias  pt.com;        #虚拟主机

location / {

proxy_pass http://pt;

}

}

server{

listen       80;

server_name  wwwNaN1.com;        #虚拟主机

location / {

root   /virualhost/wwwNaN1.com;

index  index.html index.htm;

}

}

}

大部分默认的参数是不需要改动的,主要修改的部分如下:

[[email protected] conf]# nginx -t

nginx: the configuration file/usr/local/lnmp/nginx/conf/nginx.conf syntax is ok

nginx: configuration file/usr/local/lnmp/nginx/conf/nginx.conf test is successful

[[email protected] conf]# nginx -s reload

[[email protected] conf]# nginx

二、下面对两台tomcat服务器进行配置(步骤一样):

对tomcat进行配置,步骤如下:

1、安装jdk

sh jdk-6u26-linux-x64.bin        #安装jdk

mv jdk1.6.0_26/ /usr/local/lnmp/        #生成的jdk目录移动至/usr/local/lnmp/

Ln -s jdk1.6.0_2 java            #做一个软连接

2、安装tomcat服务器:

tar zxf apache-tomcat-7.0.37.tar.gz

tar zxf apache-tomcat-7.0.37.tar.gz -C/usr/local/lnmp/

ln -s apache-tomcat-7.0.37/ tomcat

3、配置环境变量

vim /etc/profile

export JAVA_HOME=/usr/local/lnmp/java

exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

session 的序列化方案官方推荐的有 4 种:

1. java serialization

2. msm-kryo-serializer

3. msm-javolution-serializer

4. msm-xstream-serializer

其中性能最好的序列化方案是Kryo,此文中我们采用 kryo 方式

把如下软件包放置到/usr/local/lnmp/tomcat/lib目录中

kryo-1.03.jar

kryo-serializers-0.8.jar

memcached-2.5.jar

memcached-session-manager-1.5.1.jarmemcached-session-manager-tc7-1.5.1.jar

minlog-1.2.jar

msm-kryo-serializer-1.5.1.jar

reflectasm-0.9.jar

vim  /usr/local/lnmp/tomcat/conf/context.xml

<Context>

......

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.0.91:11211,n2:192.168.0.92:11211"

failoverNodes="n1"

#在 node2 上此项设置为“n2”

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

</Context>

tail -f logs/catalina.out          #查看信息

启动 tomcat

#/usr/local/lnmp/tomcat/bin/startup.sh          #启动tomcat服务

# /usr/local/lnmp/tomcat/bin/shutdown.sh    #关闭 tomcat服务

三、安装memcached

yum install memcached -y

/etc/init.d/memcached start

这里只是简单地使用memcached服务,不过多介绍具体使用。

四、测试页面以及测试 

以下为测试页面,保存到/usr/local/lnmp/tomcat/webapps/ROOT/test.jsp<%@page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*"%>

<html><head><title>ClusterApp Test</title></head>

<body>

Server Info:

<%

out.println(request.getLocalAddr() + ": " + request.getLocalPort()+"<br>");%>

<%

out.println("<br> ID " +session.getId()+"<br>");

String dataName =request.getParameter("dataName");

if (dataName != null &&dataName.length() > 0) {

String dataValue =request.getParameter("dataValue");

session.setAttribute(dataName, dataValue);

}

out.print("<b>Sessionlist</b>");

Enumeration e = session.getAttributeNames();

while (e.hasMoreElements()) {

String name = (String)e.nextElement();

String value =session.getAttribute(name).toString();

out.println( name + " = " +value+"<br>");

System.out.println( name + " = "+ value);

}

%>

<form action="test.jsp"method="POST">

name:<input type=text size=20name="dataName">

<br>

key:<input type=text size=20name="dataValue">

<br>

<input type=submit>

</form>

</body>

</html>

访问http://pt1.example.com/test.jsp,不同的主机访问时会调度到不同的 tomcat 实例上处理

来自同一主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实

例,nginx 会自动把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。

时间: 2024-10-12 17:42:04

nginx+tomcat+memcached网页动态请求分配的安装与配置的相关文章

Nginx+Tomcat+Memcached 实现集群部署时Session共享

一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Session在服务端保存用户信息,如果浏览器不支持Cookie或者用户把Cookie禁掉了,Cookie就用不了,还有不同的浏览器采用不用方式保存Cookie,所以我们采用Session服务端来保存,上一节我们有介绍了Tomcat集群部署,怎么样集群的Tomcat对同个用户请求的都能获取保存在Session的用户信息,采用了Memcached管理Session,Memcached 是一

企业网站架构之Nginx+tomcat+memcached集群

nginx+tomcat+memcached应用 系统环境:RHEL6.4  x64   iptables -F   and selinux is disabled 主机角色:node1 :192.168.0.24 :lnmp环境 tomcat memcached node2 :192.168.0.99 : tomcat memcached 软件下载:在lnmp环境上测试tomcat,使用nginx简单发布jsp jdk-6u32-linux-x64.bin apache-tomcat-7.0.

Nginx+Tomcat+Memcached集群Session共享

提供给大家整合实例: http://download.csdn.net/detail/zld1987/9577962 cookie是怎样工作的? 例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是"Michael Jordan",同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path

Nginx + tomcat + Memcached(session共享)

Nginx + tomcat + Memcached(session共享) 实验拓扑 nginx   实现负载 tomcat   实现web功能 memcached 实现会话共享 安装Nginx [[email protected] ~]# yum -y install pcre pcre-devel [[email protected] ~]# tar -zxvf nginx-1.0.5.tar.gz [[email protected] ~]# cd nginx-1.0.5 [[email 

【转】Nginx+Tomcat+Memcached集群Session共享

cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael Jordan”,同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 上面这个H

【电商】nginx+tomcat+memcached实现session共享集群

在分布式多tomcat web集群环境下,首先要解决的是session的共享问题,一般的实现思路有: (1) session复制:多tomcat之间进行session的同步,集群中的tomcat存储相同的session信息 (2) 共享session存储:将session集中存储在同一个地方,如redis/memcached,甚至DB.tomcat本身的内存中并不存储session (3) session粘性:其实session粘性并不是session共享的方案,而是多tomcat的集群方案,配

session服务器Nginx+Tomcat+Memcached集群Session共享

cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jordan”,同时还对所创立的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 下面这个Hea

tomcat session会话保持实验-之Nginx+tomcat+memcached

tomcat session会话保持实验-之Nginx+tomcat+memcached 实验要求 1.nginx+tomcat 负载均衡 2.memcached 会话保持 实验拓扑   ip网络规划 Nginxnode2:172.16.76.20 tomcatAnode3:172.16.76.30  memcached tomcatBnode4:172.16.76.40  memcached 基础配置   node2 [[email protected]~]# yum install ngin

Nginx+Tomcat+Memcached负载均衡配置完整流程(多方总结,亲测可用)

Nginx+Tomcat+Memcached负载均衡配置完整流程: 前言: Nginx实现Tomcat的负载均衡和利用memcached实现session共享. 首先配置tomcat,JDK 将jdk,tomcat 放入站点/opt目录中 安装JDK cd /opt chmod 755 jdk-6u45-linux-x64-rpm.bin ./jdk-6u45-linux-x64-rpm.bin java -version      //检验版本 安装Tomcat tar -zxf apache