设为首页 收藏本站
查看: 984|回复: 0

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

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-11-9 06:13:25 | 显示全部楼层 |阅读模式
一、环境:系统环境:centos 5.8 x86_64应用软件:所以应用软件都放在/usr/local/src目录下  nginx-1.2.2.tar.gz  yaoweibin-nginx_ajp_module-v0.2.5-17-ge971b84.zip          pcre-8.12.tar.gz          apache-tomcat-7.0.27.tar.gz  jdk-7u4-linux-x64.gz  apr-1.4.5.tar.gz  apr-iconv-1.2.1.tar.gz  apr-util-1.3.10.tar.gz  tomcat-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、jdk  server3: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
  •   加入如下内容:
  •   user  www www;
  •   worker_processes 4;
  •   worker_cpu_affinity 0001 0010 0100 1000;
  •   error_log  /usr/local/nginx/logs/nginx_error.log  crit;
  •   pid        /usr/local/nginx/nginx.pid;
  •   worker_rlimit_nofile 65535;
  •   events
  •   {
  •   use epoll;
  •   worker_connections 65535;
  •   }
  •   http
  •   {
  •   include       mime.types;
  •   default_type  application/octet-stream;
  •   charset  utf-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_length  1k;
  •   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_format  access  '$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.log  access;
  •   }
五、配置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服务器:
DSC0000.jpg

12服务器:
DSC0001.jpg

  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632497-1-1.html 上篇帖子: nginx生产环境常用功能include 、虚拟主机别名、rewrite、nginx status详细解析 下篇帖子: Nginx配合keepalived实现LVS负载均衡--生产环境实际案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表