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;

                }

       }

}


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

wKiom1dGpY7C8PgnAAAWuTgjk5o346.png

[root@pt1 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

[root@pt1 conf]# nginx -s reload

[root@pt1 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          #查看信息

nginx+tomcat+memcached网页动态请求分配的安装与配置_第1张图片


启动 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 也没有丢掉。

 

 


你可能感兴趣的:(tomcat,nginx,memcached)