现在两个tomcat都做好了,可以做到session复制
但apache还是连不到tomcat, 用mod_jk方式,一直配不好,装apache时发现改有的so文件没有编译到modules目录下
i)./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all
ii)make iii)make install是./configure后面参数有问题吗?有配过的给个过程吧?

解决方案 »

  1.   

    2.1获得mod_jk
          在tomcat的官方网站提供了两种下载,一种是编译好的二进制文件“.dll”或者“.so”。另外一种是源码下载,需要在本地编译。因为没有看到有SOLARIS10 版本的“.so”文件,在这里使用其源码进行编译。
          源码下载地址:
    http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.15/jakarta-tomcat-connectors-1.2.15-src.tar.gz
           二进制下载地址:
    http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
       2.2编译mod_jk
          因为要用到Solaris的编译工具,所以要先安装Sun Studio11。Sun Studio 11安装程序和安装手册在Sun的网站可以免费下载而且安装方式是“下一步”型的,固在这里就不多说了。接着要把下载的文件进行解压:
                      #gunzip jakarta-tomcat-connectors-1.2.15-src.tar.gz
                #tar xvf jakarta-tomcat-connectors-1.2.15-src.tar
                #cd jakarta-tomcat-connectors-1.2.15-src
          设置环境变量:PATH,LD_LIBRARY_PATH等
                 #export PATH=$PATH: /usr/ucb:/usr/ccs/bin      
    (含有编译工具和make)
               #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/etc/lib
    (含有可能用到的库)
             开始编译mod_jk
               #cd jk/native     相对于jakarta-tomcat-connectors-1.2.15-src
               #./configure –with-apxs=/usr/apache2/bin/apxs
               #make
          在make的过程中产生了下面的错误信息,这是由于在生成了mod_jk.so文件后要拷到apache的特定路径的过程中发生了错误。没有关系,最有用的mod_jk.so已经生成了。存放在相对于jakarta-tomcat-connectors-1.2.15-src目录的下的jk/native/apache-2.0/.libs目录中。
      

  2.   

    编译mod_jk比较繁琐而且也容易出问题,现在将编译好的文件放在网上。需要的朋友可以直接下载使用(但不保证任何机器都能使用)。
    For Solaris10 sparc:http://www.cublog.cn/u/15296/upfile/060316125507.gz
    For Solaris10 x86 :http://www.cublog.cn/u/15296/upfile/060316121254.gz
    3.      配置mod_jk到Apache
    3.1先把mod_jk.so(在jk/native/apache-2.0/.libs目录)文件拷贝到Apache的libexec目录下面。
    #cp mod_jk.so /usr/apache2/libexec/.
    3.2接着修改Apache的配置文件,使Apache能够将需要tomcat处理的文件通过mod_jk进行转发。有三处需要修改,见图。
       #vi /etc/apache2/httpd.conf并在LoadModule 模块的最后加入一行
    LoadModule jk_module libexec/mod_jk.so
      

  3.   

    请在下面的文档中查找:Mod_jk文档:
    http://tomcat.apache.org/connectors-doc/index.htmlWorkers文件说明:
    http://tomcat.apache.org/connectors-doc/config/workers.html
      

  4.   

    实现负载的步骤
    1.      验证Apache2是否能正常工作。
    1.1生成初始配置文件httpd.conf
                #cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf
    1.2初次启动Apache
                #/usr/apache2/bin/apachectl start
    1.3查看Apache进程是否已经启动
                #ps –ef|grep httpd   如果出现下面的情况则表示Apache没成功的启动。
       1.4查看没有启动成功的原因
                 #more /var/apache2/logs/error_log   发现如下
       
    可以看出是因为apache在启动的时候要把PID的信息写入到一个文件httpd.pid时候发生了问题,原因是/var/run/apache2这个目录不存在。现在用下面的命令把这个目录建立起来。
       #mkdir –p /var/run/apache2
    1.5第二次启动Apache
       为了查看本次启动中产生的错误欣,先删除原有的error_log文件
       #rm /var/apache2/logs/error_log
       接着启动apache
       #/usr/apache2/bin/apachectl start 
       1.6第二次查看apache的启动情况
    #ps –ef|grep httpd如果出现了下面的情况则说明启动成功。也可以通过浏览器验证Apache是否启动成功,如果浏览器出现如下信息则说明已经启动成功。              否则就是没有Apache没有成功启动,重复执行1.4-1.6直到成功为止。再去error_log中看一下有什么信息。
                 #more /var/apache2/logs/error_log       可以看出已经没有错误产生了。
    2.      安装mod_jk
    Mod_jk是连接Apache与Tomcat的接口。其工作方式如下:      Apache在接收到用户请求的JSP和servlet的时候会通过mod_jk把他们转发给tomcat,tomcat处理完成后在将结果通过mod_jk返回给apache。之后apache将结果呈现给用户。
       2.1获得mod_jk
          在tomcat的官方网站提供了两种下载,一种是编译好的二进制文件“.dll”或者“.so”。另外一种是源码下载,需要在本地编译。因为没有看到有SOLARIS10 版本的“.so”文件,在这里使用其源码进行编译。
          源码下载地址:
    http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.15/jakarta-tomcat-connectors-1.2.15-src.tar.gz
           二进制下载地址:
    http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
       2.2编译mod_jk
          因为要用到Solaris的编译工具,所以要先安装Sun Studio11。Sun Studio 11安装程序和安装手册在Sun的网站可以免费下载而且安装方式是“下一步”型的,固在这里就不多说了。接着要把下载的文件进行解压:
                      #gunzip jakarta-tomcat-connectors-1.2.15-src.tar.gz
                #tar xvf jakarta-tomcat-connectors-1.2.15-src.tar
                #cd jakarta-tomcat-connectors-1.2.15-src
          设置环境变量:PATH,LD_LIBRARY_PATH等
                 #export PATH=$PATH: /usr/ucb:/usr/ccs/bin       
    (含有编译工具和make)
               #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/etc/lib 
    (含有可能用到的库)
            开始编译mod_jk
               #cd jk/native     相对于jakarta-tomcat-connectors-1.2.15-src
               #./configure –with-apxs=/usr/apache2/bin/apxs
               #make
          在make的过程中产生了下面的错误信息,这是由于在生成了mod_jk.so文件后要拷到apache的特定路径的过程中发生了错误。没有关系,最有用的mod_jk.so已经生成了。存放在相对于jakarta-tomcat-connectors-1.2.15-src目录的下的jk/native/apache-2.0/.libs目录中。       编译mod_jk比较繁琐而且也容易出问题,现在将编译好的文件放在网上。需要的朋友可以直接下载使用(但不保证任何机器都能使用)。
    For Solaris10 sparc:http://www.cublog.cn/u/15296/upfile/060316125507.gz
    For Solaris10 x86 :http://www.cublog.cn/u/15296/upfile/060316121254.gz
    3.      配置mod_jk到Apache
    3.1先把mod_jk.so(在jk/native/apache-2.0/.libs目录)文件拷贝到Apache的libexec目录下面。
    #cp mod_jk.so /usr/apache2/libexec/.
    3.2接着修改Apache的配置文件,使Apache能够将需要tomcat处理的文件通过mod_jk进行转发。有三处需要修改,见图。
      #vi /etc/apache2/httpd.conf并在LoadModule模块的最后加入一行
    LoadModule jk_module libexec/mod_jk.so       找一个合适的位置(任何地方),将下面的信息添加上去       还要把需要转发的文件类型和路径配置好。具体的位置是在DocumentRoot指示器下。如下面已JkMount开头的两行。       3.3编写workers.properties文件
           这个文件用力定义与Apache进行交互的Tomcat的配置信息。具体如下:       可以看出worker1和worker2用来配置tomcat的信息,loaderbalancer用来配置负载均衡信息。下面的表格对涉及到的属性进行了说明。更多的属性说明可以参见worker文件的文档。
    属性 说明 
    worker.list 定义worker列表 
    worker.<workername>.type 定义worker的类型,有ajp13,ajp14,jni,lb,status等 
    worker.<workername>.host 定义worker所在主机的ip 
    worker.<workername>.port 定义worker服务监听端口 
    worker.<workername>.lbfactor 定义完成负载均衡的各个worker需要承担的负载份额 
    worker.<workername>.balanced_workers 指定加入到负载均衡的worker        3.4验证安装mod_jk之后Apache仍然可用。
           按照1.5,1.6中的方式进行验证即可。
    4.      配置Tomcat,实现负载均衡
    4.1Tomcat的获取和安装
                  本文使用了从tomcat官方网站上提供的二进制文件打包
    http://apache.roweboat.net/tomcat/tomcat-5/v5.5.16/bin/apache-tomcat-5.5.16.tar.gz。将其拷贝的各个worker主机的安装目录并进行如下操作就算安装完成。
                          #gunzip apache-tomcat-5.5.16.tar.gz
                #tar xvf apache-tomcat-5.5.16.tar
                #mv apache-tomcat-5.5.16 tomcat551
           4.2创建一个空测试web应用并创建一个文件测试JSP页面放在其下: 
                 #mkdir –p $TOMCAT_HOME/webapps/testload 
    其中$TOMCAT_HOME是Tomcat的安装目录。
              #vi $TOMCAT_HOME/webapps/testload/index.jsp分别填写如下
                worker1的index.jsp源代码
    <html>
    <body bgcolor="red">
    Session ID:<%=request.getSession().getId()%>
    </body>
    </html>
    Worker2的index.jsp源代码
    <html>
    <body bgcolor="blue">
    Session ID:<%=request.getSession().getId()%>
    </body>
    </html>
           4.3修改Tomcat的配置文件,以便与Apache进行请求转发
                         #vi $TOMCAT_HOME/conf/server.xml 修改其中的几处,如下图将其中的port分别改为“10008”和“10010”并将下面的这段注释掉(即将这段代码放在<!-- -->之间)。            配置Tomcat中Ajp13参数,将port分别改为“10009”和“10011”。       配置Tomcat中的AJPEngine。将上面图中的信息分别修改为       将测试web应用的加到Context中(在文件的尾部,</Host>前面)       4.4验证负载均衡
                  按前面的方法先启动Apache,之后分别启动Tocmat(别忘了先设置JAVA_HOME)
                         #$TOMCAT_HOME/bin/startup.sh
            用#ps –ef|grep java       查看一下Tomcat是否已经启动
           在不同的机器打开几个浏览器查看http://IP:Port/index.jsp,Apache将会把请求转发给这两个Tocmat进行处理。如下图,可以看出对用户的请求是由多个Tomcat分担完成的。其中红色表明用户的请求是由worker1进行处理和响应的,蓝色则表明用户的请求是由worker2负载响应的。页面中也打印出了请求的SessionId,可以用刷新来看看是否会变(在Session没有过期,Tomcat或Tomcat中的Context没有刷新的情况下这个值是不能变化的)。这样就可以验证这种负载均衡方式是不是能保持Session(也可以打开新的浏览器来看一下是否有相同的SessionId产生)。 参考资料:
    Mod_jk文档:http://tomcat.apache.org/connectors-doc/index.html
    Workers文件说明:http://tomcat.apache.org/connectors-doc/config/workers.html
    Tomcat5.5文档:http://tomcat.apache.org/tomcat-5.5-doc/index.html
    Apache2的文档:http://httpd.apache.org/docs/2.0/