shenyg 发表于 2018-12-4 08:35:59

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服务器。
  http://s5.运维网.com/wyfs02/M00/81/FB/wKiom1dGp4nRW7Z3AAHSsj1eFtg849.png
  

      在这里我们以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.4   主机名为:pt4.example.com
  
  一、主服务器的配置:
  这里不再介绍nginx的源码安装以及配置,如有需要,请参照http://ptallrights.blog.运维网.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_timeout65;
  server {
  listen       80;
  server_namelocalhost;
  location / {
  root   html;
  indexindex.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_indexindex.php;
  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #fastcgi_paramSCRIPT_FILENAME$document_root/$fastcgi_script_name;
  include      fastcgi.conf;
  }
  }
  server {
  listen       443 ssl;
  server_namelocalhost;
  ssl_certificate      cert.pem;
  ssl_certificate_keycert.pem;
  ssl_session_cache   shared:SSL:1m;
  ssl_session_timeout5m;
  ssl_ciphersHIGH:!aNULL:!MD5;
  ssl_prefer_server_cipherson;
  location / {
  root   html;
  indexindex.html index.htm;
  }
  }
  server{
  listen       80;
  server_namewwwNaN.com aliaspt.com;      #虚拟主机
  location / {
  proxy_pass http://pt;
  }
  }
  server{
  listen       80;
  server_namewwwNaN1.com;      #虚拟主机
  location / {
  root   /virualhost/wwwNaN1.com;
  indexindex.html index.htm;
  }
  }
  }
  

  大部分默认的参数是不需要改动的,主要修改的部分如下:
http://s1.运维网.com/wyfs02/M02/81/F9/wKioL1dGpnPSJVzyAAAm84KdQqk910.png
http://s2.运维网.com/wyfs02/M01/81/FB/wKiom1dGpY7C8PgnAAAWuTgjk5o346.png
  # 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
  # nginx -s reload
  # 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
  
  ......
  
  
  tail -f logs/catalina.out          #查看信息
http://s3.运维网.com/wyfs02/M02/81/FB/wKiom1dGqNmzpi8uAAGxDYzVJs0246.png
  

  启动 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
  
  ClusterApp Test
  
  Server Info:
  
   0) {
  String dataValue =request.getParameter("dataValue");
  session.setAttribute(dataName, dataValue);
  }
  out.print("Sessionlist");
  Enumeration e = session.getAttributeNames();
  while (e.hasMoreElements()) {
  String name = (String)e.nextElement();
  String value =session.getAttribute(name).toString();
  out.println( name + " = " +value+"");
  System.out.println( name + " = "+ value);
  }
  %>
  
  name:
  
  key:
  
  
  
  
  
  

  访问http://pt1.example.com/test.jsp,不同的主机访问时会调度到不同的 tomcat 实例上处理
  来自同一主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实
  例,nginx 会自动把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。
  




页: [1]
查看完整版本: nginx+tomcat+memcached网页动态请求分配的安装与配置