bobbai 发表于 2018-11-9 06:13:25

【APP & Web架构】企业web高可用集群实战之Nginx+nginx_ajp实现Tomcat负载均衡集群+Session

一、环境:系统环境:centos 5.8 x86_64应用软件:所以应用软件都放在/usr/local/src目录下nginx-1.2.2.tar.gzyaoweibin-nginx_ajp_module-v0.2.5-17-ge971b84.zip          pcre-8.12.tar.gz          apache-tomcat-7.0.27.tar.gzjdk-7u4-linux-x64.gzapr-1.4.5.tar.gzapr-iconv-1.2.1.tar.gzapr-util-1.3.10.tar.gztomcat-native-1.1.23各应用软件官方站点:nginx: http://www.nginx.orgnginx_ajp: https://github.com/yaoweibin/nginx_ajp_modulepcre: http://pcre.org/apache-tomcat: http://tomcat.apache.orgjdk: http://www.oracle.com/technetwork/java/javase/downloads/index.html所需服务器:          server1:nginx服务器192.168.8.10   -->安装nginx,作为分发器server2:jvm1服务器192.168.8.11   -->安装apache-tomcat、jdkserver3:jvm2服务器192.168.8.12   -->安装apache-tomcat、jdk二、安装nginx+ajp
[*]  1.建立运行用户
[*]  groupadd www
[*]  useradd -g www -s /sbin/nologin -M www
[*]  cd /usr/local/src
[*]  2.安装pcre
[*]  tar zxf pcre-8.12.tar.gz
[*]  cd pcre-8.12
[*]  ./configure
[*]  make ; make install
[*]  3.安装nginx_ajp和nginx
[*]  unzip yaoweibin-nginx_ajp_module-v0.2.5-17-ge971b84.zip
[*]  tar zxf nginx-1.2.2.tar.gz
[*]  cd nginx-1.2.2
[*]  patch -p1 < ../yaoweibin-nginx_ajp_module-e971b84/ajp.patch
[*]  ./configure --prefix=/usr/local/nginx --user=www --group=www--with-http_stub_status_module--with-http_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module--without-http_memcached_module --without-http_autoindex_module --without-http_ssi_module --add-module=../yaoweibin-nginx_ajp_module-e971b84
[*]  make ; make install
三、安装tomcat、jdk
[*]  1.安装tomcat
[*]  cd /usr/local/src
[*]  tar zxf apache-tomcat-7.0.27.tar.gz
[*]  mv apache-tomcat-7.0.27 /usr/local/tomcat
[*]  2.安装jdk
[*]  tar zxf jdk-7u4-linux-x64.gz
[*]  mv jdk1.7.0_04 /usr/local/jdk
[*]  3.设置java、tomcat运行环境变量
[*]  vi /etc/profile
[*]  在文件最后加入如下内容:
[*]  #Set java & tomcat Environment
[*]  JAVA_HOME=/usr/local/jdk
[*]  export JAVA_HOME
[*]  JRE_HOME=/usr/local/jdk/jre
[*]  export JRE_HOME
[*]  CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jdk/jre/lib
[*]
  export>
[*]  PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jdk/jre/bin
[*]  export PATH
[*]  TOMCAT_HOME=/usr/local/tomcat
[*]  export TOMCAT_HOME
[*]  让环境变量立即生效:
[*]  source /etc/profile
四、安装apr、native
[*]  (1)安装apr
[*]  wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
[*]  tar zxf apr-1.4.5.tar.gz
[*]  cd apr-1.4.5
[*]  ./configure --prefix=/usr/local/apr
[*]  make
[*]  make install
[*]  (2)安装apr-iconv
[*]  wget http://archive.apache.org/dist/apr/apr-iconv-1.2.1.tar.gz
[*]  tar -zxf apr-iconv-1.2.1.tar.gz
[*]  cd apr-iconv-1.2.1
[*]  ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
[*]  make
[*]  make install
[*]  (3)安装apr-util
[*]  wget http://archive.apache.org/dist/apr/apr-util-1.3.10.tar.gz
[*]  tar zxf apr-util-1.3.10.tar.gz
[*]  cd apr-util-1.3.10
[*]  ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
[*]  make
[*]  make install
[*]  (4)安装tomcat-native
[*]  安装好tomcat7之后,tomcat-native已经在tomcat的bin目录下了,可以直接使用
[*]  cd /usr/local/tomcat/bin
[*]  tar zxf tomcat-native.tar.gz
[*]  cd tomcat-native-1.1.23-src/jni/native
[*]  ./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/jdk
[*]  make
[*]  make install
[*]
[*]  (5)设置 apr 的环境变量:
[*]  vi /etc/profile
[*]  在文件后面添加以下内容:
[*]  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
[*]
[*]  让配置生效: source /etc/profile
PS:对于为什么要安装apr和native,是apache-tomcat-7.0.27这个版本需要这些包的支持,不然启动会出现如下错误:cat /usr/local/tomcat/logs/catalina.out Jul 27, 2012 7:19:34 PM org.apache.catalina.core.AprLifecycleListener initINFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib安装上面几个包即可解决!!!!!!!!!!!四、配置nginx在192.168.8.10服务器上操作所以环境都搭建好,下面开始配置!
[*]  1.创建 nginx 配置文件
[*]  cd /usr/local/nginx/conf/
[*]  mv nginx.conf nginx.conf.bak
[*]  vi nginx.conf
[*]  加入如下内容:
[*]  userwww www;
[*]  worker_processes 4;
[*]  worker_cpu_affinity 0001 0010 0100 1000;
[*]  error_log/usr/local/nginx/logs/nginx_error.logcrit;
[*]  pid      /usr/local/nginx/nginx.pid;
[*]  worker_rlimit_nofile 65535;
[*]  events
[*]  {
[*]  use epoll;
[*]  worker_connections 65535;
[*]  }
[*]  http
[*]  {
[*]  include       mime.types;
[*]  default_typeapplication/octet-stream;
[*]  charsetutf-8;
[*]  server_names_hash_bucket_size 128;
[*]  client_header_buffer_size 2k;
[*]  large_client_header_buffers 4 4k;
[*]  client_max_body_size 8m;
[*]  sendfile on;
[*]  tcp_nopush   on;
[*]  keepalive_timeout 60;
[*]  open_file_cache max=204800 inactive=20s;
[*]  open_file_cache_min_uses 1;
[*]  open_file_cache_valid 30s;
[*]  tcp_nodelay on;
[*]  gzip on;
[*]  gzip_min_length1k;
[*]  gzip_buffers   4 16k;
[*]  gzip_http_version 1.0;
[*]  gzip_comp_level 2;
[*]  gzip_types       text/plain application/x-javascript text/css application/xml;
[*]  gzip_vary on;
[*]  upstream tomcats {
[*]  server 192.168.8.11:8009 srun_id=jvm1;
[*]  server 192.168.8.12:8009 srun_id=jvm2;
[*]
[*]  #jvm_route $cookie_JSESSIONID reverse;
[*]  keepalive 10;
[*]  }
[*]  server
[*]  {
[*]  listen       80 default_server;
[*]  server_name_;
[*]  index   index.htm index.html;
[*]  root/data/www/;
[*]  location / {
[*]  ajp_pass tomcats;
[*]  }
[*]  location /status
[*]  {
[*]  stub_status on;
[*]  }
[*]  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
[*]  {
[*]  expires      30d;
[*]  }
[*]  }
[*]  log_formataccess'$remote_addr - $remote_user [$time_local] "$request" '
[*]  '$status $body_bytes_sent "$http_referer" '
[*]  '"$http_user_agent" $http_x_forwarded_for';
[*]  access_log/usr/local/nginx/logs/access.logaccess;
[*]  }
五、配置tomcat集群在11、12服务器操作修改server.xml配置文件:
[*]  192.168.8.11服务器:
[*]  1.在/usr/local/tomcat/conf/server.xml 中修改Enginx节点信息,大概在103行:
[*]  把
[*]  修改成:
[*]  
[*]  2.加入Cluster节点信息,大概在110行左右处加入如下内容:
[*]
  
[*]
  
[*]  expireSessionsOnShutdown="false"
[*]  notifyListenersOnReplication="true"/>
[*]
  
[*]
  
[*]  address="228.0.0.4"
[*]  port="45564"
[*]  frequency="500"
[*]  dropTime="3000"/>
[*]
  
[*]  address="192.168.8.11"
[*]  port="4000"
[*]  autoBind="100"
[*]  selectorTimeout="5000"
[*]  maxThreads="6"/>
[*]
  
[*]
  
[*]  
[*]
  
[*]
  
[*]  
[*]
  
[*]  filter=""/>
[*]
  
[*]
  
[*]  tempDir="/tmp/war-temp/"
[*]  deployDir="/tmp/war-deploy/"
[*]  watchDir="/tmp/war-listen/"
[*]  watchEnabled="false"/>
[*]
  
[*]
  
[*]  
[*]  192.168.8.12服务器:
[*]  1.在/usr/local/tomcat/conf/server.xml 中修改Enginx节点信息,大概在103行:
[*]  把
[*]  修改成:
[*]  
[*]  2.加入Cluster节点信息,大概在110行左右处加入如下内容:
[*]
  
[*]
  
[*]  expireSessionsOnShutdown="false"
[*]  notifyListenersOnReplication="true"/>
[*]
  
[*]
  
[*]  address="228.0.0.4"
[*]  port="45564"
[*]  frequency="500"
[*]  dropTime="3000"/>
[*]
  
[*]  address="192.168.8.12"
[*]  port="4000"
[*]  autoBind="100"
[*]  selectorTimeout="5000"
[*]  maxThreads="6"/>
[*]
  
[*]
  
[*]  
[*]
  
[*]
  
[*]  
[*]
  
[*]  filter=""/>
[*]
  
[*]
  
[*]  tempDir="/tmp/war-temp/"
[*]  deployDir="/tmp/war-deploy/"
[*]  watchDir="/tmp/war-listen/"
[*]  watchEnabled="false"/>
[*]
  
[*]
  
[*]  
[*]  3.测试目录负载均衡
[*]  在11、12服务器上建立测试目录,观察负载均衡情况。
[*]  mkdir -p /data/www/
[*]  cat /data/www/test.jsp
[*]  

[*]  4.启动各服务器服务
[*]  10服务器:
[*]  /usr/local/nginx/sbin/nginx
[*]  11、12服务器
[*]  startup.sh

[*]  在浏览器上输入:192.168.8.10/test.jsp,然后分别在11、12服务器查看输出日志:
[*]  11服务器:

12服务器:
  5.测试负载session
  在/data/www目录下创建admin目录,再在admin目录下创建WEB-INF目录
  mkdir -p /data/www/admin/WEB-INF

[*]  cd /data/www/admin/WEB-INF
[*]  vi web.xml
[*]  加入如下内容:
[*]  
[*]  TomcatDemo
[*]  
[*]  
[*]  PS: 这个必须加进去,不然也实现不了复制!
[*]  在admin目录下创建测试代码:
[*]  cat index.jsp
[*]  
[*]  
[*]  Cluster App Test
[*]  
[*]  Server Info:
[*]  
[*]  
页: [1]
查看完整版本: 【APP & Web架构】企业web高可用集群实战之Nginx+nginx_ajp实现Tomcat负载均衡集群+Session