web应用构架LAMT及tomcat负载简析


Httpd    (mod_jk.so)

workers.properties文件

uriworkermap.properties文件


<--AJP1.3-->


Tomcat  --> jdk

大致流程:apache服务器通过mod_jk.so 模块处理jsp文件的动态请求。通过tomcat worker等待执行servlet/JSP的tomcat实例。使用 AJP1.3协议与tomcat通信。tomcat有借助jdk解析。

负载就是 多台tomcat。共同解析apache发送的jsp请求,实现高可用。

1.安装apache
    版本:(http://httpd.apache.org/download.cgi 下载地址。最新的是http-2.3.32)
    apache软件在1.3版本之前以apache开头。2.x版本后以httpd开头
        # cat /etc/redhat-release
        CentOS release 6.5 (Final)
        # uname -r
        2.6.32-431.el6.x86_64
        cd httpd-2.2.29
./configure \
--prefix=/usr/local/apache2 \
--enable-modules=most \
--enable-mods-shared=all \
--enable-so \
参数解析:
    --enable-mods-shared=all
    是加载全部动态库  去掉shared 是加载静态库动态加载的好处。性能比静态的效率高5%。
    静态编译:
    如果编译的时候没有使用enable-mods-shared=module或者enable-module=shared 这2个参数就是静态编译,何谓静态?  
    其实就是编译的时候所有的模块自己编译进 httpd 这个文件中(启动的时候这些模块就已经加载进来了,也就是可以使用)
    动态编译:
    编译的时候,使用enable-module=shared 或者enable-modules-shared=module 来动态编译。那么什么是动态?静态是直接编译进httpd中, 那么动态显然就不编译进去了,也就是你启动的时候根本不会加载这个模块, 而是给你一个module.so 文件,你一定要使用 loadmodule 这个语法来加载,这个模块才有效。
    --enable-so
    让 Apache 可以支持DSO模式,告诉编译器将所有标准模块都动态编译为DSO模块。
    DSO究竟是什么?事实上DSO是Dynamic SharedObjects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。
    它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法
     make && make install
2.安装jdk (安装在另一台主机上 地址192.168.1.141)
    jdk 是解析tomcat的容器( tomcat是java编写的)
    cd /usr/local
    tar xf jdk-7u79-linux-x64.tar.gz
3.安装tomcat (安装在另一台主机上 地址192.168.1.141)
   软件下载地址: http://tomcat.apache.org/download-80.cgi (版本从6-9)
   由于这个包是二进制包。只需要修改完放入 指定目录即可。
   tar xf apache-tomcat-8.0.32.tar.gz
   \mv apache-tomcat-8.0.32 /usr/local/tomcat8
    配置环境变量(为了让tomcat可以找到(调用)jdk。)
    cd /usr/local/tomcat8
    vim ./bin/catalina.sh
    export JAVA_HOME=/usr/local/jdk1.7.0_79
    这样的好处是:每次tomcat启动的时候加载jdk。(减少对系统环境的影响)
    进入配置文件修改端口;
    vim conf/server.xml
     <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
    这里默认是8009.修改为8109  保存退出。
    准备测试:
    下载jsp探针文件到webapps/ROOT 目录下
    启动tomcat:
        # ./bin/startup.sh
        Using CATALINA_BASE:   /usr/local/tomcat8
        Using CATALINA_HOME:   /usr/local/tomcat8
        Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
        Using JRE_HOME:        /usr/local/jdk1.7.0_79
        Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
        Tomcat started.
    现在就可以访问jsp程序了通过浏览器:
    http://192.168.1.141:8080/jspenv.jsp
    (这里jspenv.jsp 是下载的jsp探针文件类似于phpinfo)
    关闭tomcat:(这样速度快)
        # killall -9 java
4.安装JK 模块(安装在apache上面)
    一般httpd连接tomcat的模块有 mod_jk2.so ,mod_jk.so , proxy_ajg.so
    这里使用 mod_jk.so 而mod_jk2.so(社区停止开发维护)proxy_ajg.so(过滤静态文件功能不佳)
    下载网址http://apache.fayea.com/tomcat/tomcat-connectors
    # yum install libtool autoconf -y (需要这2个软件包的支持)
    (mod_jk.so这个模块是httpd和tomcat连接用的)
    # tar xf tomcat-connectors-1.2.41-src
    # cd tomcat-connectors-1.2.41-src/native/
    检查权限:# ll buildconf.sh
    -rwxr-xr-x. 1 root bin 1277 Dec 30  2014 buildconf.sh
    buildconf.sh(检查所需支持后会生成编译安装的配置文件。)
    # ./buildconf.sh
    # ./configure --with-apxs=/usr/local/apache2/bin/apxs
    # make && make install
    安装完成后会出现提示:chmod 755 /usr/local/apache2/modules/mod_jk.so
    检查文件是否存在。如果没有。可以拷贝到apache下面。
    安装完成后: tomcat-connectors-1.2.41-src]# ls native/apache-2.0/
    native/apache-2.0/ 目录下会出现 mod_jk.so  模块。(如果apache下没有可以拷贝这个注意权限755)、
    加载JK模块  vim conf/httpd.conf
    #添加JK模块加载
        LoadModule jk_module modules/mod_jk.so
5.创建tomcat workers (在apache上面)
    Tomcat worker是一个服务于web server、等待执行servlet/JSP的Tomcat实例,简单来说就是:指定tomcat的地址,指明那个tomcat去解析的。(特别是负载的时候,有多个tomcat一起要工作的。)创建tomcat workers需要增加3个配置文件,
    分别是Tomcat workers配置文件workers.properties,URL过滤规则文件uriworkermap.properties和JK模块日志输出文件mod_jk.log,mod_jk.log文件会在apache启动时自动创建,这里只需创建前两个文件即可。
    (1) 创建workers
     # vim /usr/local/apache2/conf/workers.properties
    worker.tomcat1.port=8109         #ajp13 端口号,在tomcat 下server.xml 配置, 默认8109
    worker.tomcat1.host=192.168.1.141 #tomcat 的主机地址,如不为本机,请填写ip 地址
    worker.tomcat1.type=ajp13       #定义apache与tomcat的通信协议
    worker.tomcat1.lbfactor = 1   #server 的加权比重,值越高,分得的请求越多
    (2)URL过滤规则文件uriworkermap.properties (在apache上面执行)
        #vi  /usr/local/apache2/conf/uriworkermap.properties
        /*=tomcat1
        !/*.jpg=tomcat1
        !/*.gif=tomcat1
        !/*.png=tomcat1
        !/*.bmp=tomcat1
        !/*.html=tomcat1
        !/*.htm=tomcat1
        !/*.swf=tomcat1
        !/*.css= tomcat1
        !/*.js= tomcat1
    然后在httpd.conf 主配置文件中加载workers.properties和uriworkermap.properties这两个文件并指明相关日志。
    apache下增加:
    JkWorkersFile /usr/local/apache2/conf/workers.properties
    JkMountFile   /usr/local/apache2/conf/uriworkermap.properties
    JkLogFile /usr/local/apache2/logs/mod_jk.log
    JkLogLevel info
    JkLogStampformat "[%a %b %d %H:%M:%S %Y]"
测试:确保本机的apache服务和 141上的tomcat启动。
    输入不存在的网址。看最后的错误信息。可以简单判断是否tomcat工作。
    tomcat的解析默认错误如下:
    HTTP Status 404 - /inex.jsp
    。。。。
    Apache Tomcat/8.0.32
    apache的错误如下:
    Not Found
    The requested URL /inex was not found on this server.
下面简单修改下内容:作tomcat的负载
    环境简析: 192.168.1.199  httpd  tomcat
                192.168.1.141  tomcat
    由于192.168.1.199上面没有tomcat:
    所以 可以直接把141 上的jdk和tomcat打包拷贝过来。为了方便查看将tomcat改名为tomcat81
    192.168.1.141上的操作:
    tar zcvf jdk1.7.0_79.tar.gz jdk1.7.0_79/
    scp jdk1.7.0_79.tar.gz [email protected]:/usr/local/
    tar zcvf tomcat81.tar.gz tomcat8/
    scp tomcat81.tar.gz [email protected]:/usr/local/
    192.168.1.199上的操作。
    cd /usr/local/
    tar xf tomcat81.tar.gz
    tar xf jdk1.7.0_79.tar.gz
    \mv tomcat8 tomcat81
进入199下面修改http服务
    workers.properties文件

worker.list = controller,tomcat1,tomcat2  #server 列表
#========tomcat1========
worker.tomcat1.port=8109         #ajp13 端口号,在tomcat 下server.xml 配置, 默认8109
worker.tomcat1.host=192.168.1.141  #tomcat 的主机地址,如不为本机,请填写ip 地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1   #server 的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8109       #ajp13 端口号,在tomcat 下server.xml 配置, 默认8009
worker.tomcat2.host=localhost  #tomcat 的主机地址,如不为本机,请填写ip 地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1   #server 的加权比重,值越高,分得的请求越多

#========controller, 负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2   # 指定分担请求的tomcat
worker.controller.sticky_session=1

uriworkermap.properties文件
/*.jsp=controller
#特别注意这里需要修改这里。第一次没有负载。值查询tomcat1 这里做了负载。所以请求要发给
负载均衡器。

最后利用探针文件,查看:用户目录在这2个目录下切换代表成功。
 用户目录    /usr/local/tomcat81
  用户目录   /usr/local/tomcat8

时间: 2024-10-06 00:30:50

web应用构架LAMT及tomcat负载简析的相关文章

借助LANMT构架,简析ngnix的使用

LNMP流程图 nginx PHP Mysql Nginx Fastcgi_pass <-FastCGI-> fastcgi-(php-fpm)<->wrapper Php 解析器 (Php.ini) <->mysql fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->

基于Apache+Tomcat负载均衡的两种实现方法

Apache+Tomcat实现负载均衡的两种实现方法 如果我们将工作在不同平台的apache能够实现彼此间的高效通信,因此它需要一种底层机制来实现--叫做apr Apr的主要目的就是为了其能够让apache工作在不同的平台上,但在linux上安装apache的时候通常都是默认安装的 [[email protected] ~]#rpm -qi aprName                 :apr                                        Relocation

Nginx+Tomcat负载均衡群集搭建

Tomcat简介 Tomcat最初是由Sun的软件构架师詹姆斯邓肯.戴维森开发 安装完Tomcat后安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件 Tomcat重要目录 bin:存放启动和关闭Tomcat脚本 conf:存放Tomcat不同的配置文件 doc:存放Tomcat文档 lib/japser/common:存放Tomcat运行需要的库文件 logs:存放Tomcat执行时的LOG文件 src:存放Tomcat的源代码 webapps:Tomcat的主要Web发布目录 w

搭建Nginx+Tomcat 负载均衡集群

实验拓扑: 实验要求: 客户访问192.168.10.10,第一次或者第一个请求将请求交给10.101,第二次或者第二个请求交给10.102.实现两台服务器负载,多台的搭建方法相同. 试验环境: 主机 操作系统 所需软件 Nginx服务器 rhel 6.5 x86_64 nginx-1.6.0.tar.gz Tomcat服务器1 CentOS 6.5   x86_64 apache-tomcat-7.0.54.tar.gz  jdk-7u65-linux-x64.gz Tomcat服务器2 Ce

Apache、Tomcat负载均衡与集群

一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2.0.55.so 下载地址: http://download.csdn.net/detail/crazyiter_com/4178657 2.软件安装 a)  Apache安装路径为:E:\ide\apache\Apache2 (具体可以根据自己的盘符而定) b) Tomcat放置位置和名称注意:

apache + tomcat 负载均衡模式下 getLocalAddr() 为null的解决办法

在apache + tomcat 负载均衡模式下,通过request.getLocalAddr()无法获取服务器端的ip地址,返回值为null的问题,查找了下,百度里没有有价值的回答,到官方网站上查找了下,说是: The AJP protocol only passes the web server host name and port. It does not pass the IP address. Therefore, getLocalName() will return whatever

Centos6.5系统下nginx反向代理实现tomcat负载均衡

查看当前系统的内核和系统参数以及版本. [[email protected] ~]# uname -a Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 2.安装nginx. 1)

java架构师课程、性能调优、高并发、tomcat负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr集群与应用、分布式实战、主从复制、高可用集群、大数据

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

Nginx+Tomcat负载均衡集群

第3章:部署Tomcat及其负载均衡(案例) 防伪码:成功之前必须与孤独为伍! Tomcat应用场景:  Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的的场合下被普遍应用,是开始和调试JSP程序的首选.但是由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端.如图所示 一.部署tomcat 1.安装JDK,配置Java环境 1)安装jdk,建立