`
sealbird
  • 浏览: 570665 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

apache2.2 tomcat6.0 负载均衡集群整理配置

阅读更多
worker.list=controller,tomcat1,tomcat2  #server 列表
#========tomcat1========
worker.tomcat1.port=8009         #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=8010       #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



workers.tomcat_home=D:\tomcat6.0.18_clusterone #让mod_jk模块知道Tomcat的位置
workers.java_home=D:\Java\jdk1.6.0\jre #让mod_jk模块知道jre的位置
ps=\

worker.list=tomcat1 #server 列表,tomcat2,controller
#========tomcat1========
worker.tomcat1.port=8009         #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1   #server的加权比重,值越高,分得的请求越多
#========tomcat2========
#worker.tomcat2.port=8010       #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 这里 balanced写错了,应是 balance
#worker.controller.sticky_session=1



workers.tomcat_home=D:\tomcat6.0.18_clusterone #让mod_jk模块知道Tomcat的位置
workers.java_home=D:\Java\jdk1.6.0\jre #让mod_jk模块知道jre的位置
ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修改
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改



===========================正确配置=======================
前期准备

下载mod_jk-1.2.28-httpd-2.2.3.so
http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/mod_jk-1.2.28-httpd-2.2.3.somod_jk-1.2.28-httpd-2.2.3.so
下载 Apache2.2
下载 tomcat6

环境
现在的环境,是在同一台机器中配置 一个apache ,两个tomcat

1\
apache http.conf
       在文件尾增加
         LoadModule jk_module modules\mod_jk-1.2.28-httpd-2.2.3.so
JkWorkersFile "D:\Apache2.2\conf\workers.properties"
JkMount /*.jsp controller
JkLogFile "D:\Tomcat 6.0\logs\mod_jk2.log"
JkLogLevel info

2\
新建workers.properties,并把workers.properties也放在D:\Apache2.2\conf\workers.properties目录下
并在文件中增加如下内容
        worker.list=controller,tomcatone,tomcattwo #server 列表,tomcat2,controller
#========tomcat1========
worker.tomcatone.port=8009         #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcatone.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcatone.type=ajp13
worker.tomcatone.lbfactor=1   #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcattwo.port=8010       #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcattwo.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcattwo.type=ajp13
worker.tomcattwo.lbfactor=1   #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcatone,tomcattwo   #指定分担请求的tomcat   这里 balanced写错了,应是 balance
worker.controller.sticky_session=1

3\如果在同一台机,增加两个Tomcat服务
          a:D:\tomcat6.0.18_clusterone
  b:D:\tomcat6.0.18_clustertwo
  c修改,a与b中的内容

    a:中的相应内容为
      

      第二处:<Connector port="8086" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
                 原来为
<Connector port="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

              第三处:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatone">
         原来为
<Engine name="Catalina" defaultHost="localhost"> (注:其实这行原来存在,只是把其注释掉)


    b:中的相应内容为
      第一处:<Server port="8007" shutdown="SHUTDOWN">=====原来为====><Server port="8006" shutdown="SHUTDOWN">

      第二处:<Connector port="8087" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
                 原来为
<Connector port="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

              第三处:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcattwo">
         原来为
<Engine name="Catalina" defaultHost="localhost"> (注:其实这行原来存在,只是把其注释掉)

4\ 增加虚似目录(注,把"1\"中的 "JkMount /*.jsp controller" 注释掉 )

<VirtualHost *:8089>
    ServerAdmin seal_bird21th@sohu.com
    DocumentRoot d:/www/wabappone/ROOT
    ServerName www.wabappone.com 
    ServerAlias wabappone
    ErrorLog "logs/wabappone.localhost-error.log"
    CustomLog "logs/wabappone.localhost-access.log" common
    JkMount /*.jsp controller 
    # 把JSPX程序映射到Jk连接器上
    JkMount /*.jspx controller
    # 把servlet程序映射到Jk连接器上
    JkMount /servlet/* controller
    JkMount /*.servlet controller
</VirtualHost>




==================================
注:apache与tomcat本来就能正常使用的前提下
==================================

能过以上四步负载作用了






============测试jsp文件====把下面内容保存成test.jsp文件并copy到相应目录下========================
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
  out.println("<br> ID " + session.getId()+"<br>");

  // 如果有新的 Session 属性设置
  String dataName = request.getParameter("dataName");
  if (dataName != null && dataName.length() > 0) {
     String dataValue = request.getParameter("dataValue");
     session.setAttribute(dataName, dataValue);
  }

  out.print("<b>Session 列表</b>");

  Enumeration e = session.getAttributeNames();
  while (e.hasMoreElements()) {
     String name = (String)e.nextElement();
     String value = session.getAttribute(name).toString();
     out.println( name + " = " + value+"<br>");
         System.out.println( name + " = " + value);
   }
%>
  <form action="test.jsp" method="POST">
    名称:<input type=text size=20 name="dataName">
     <br>
    值:<input type=text size=20 name="dataValue">
     <br>
    <input type=submit>
   </form>
</body>
</html>

==============================================================================================

5\
  在tomcat中的conf目录下的server.xml文件增加以下内容
     把 server.xml中注释部分 <!--   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>-->   替换成如下内容
  ==========================================================================
   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"   
                     channelSendOptions="8">    
              <!--      
                  
              <Manager className="org.apache.catalina.ha.session.BackupManager"   
                        expireSessionsOnShutdown="false"   
                       notifyListenersOnReplication="true"   
                       mapSendOptions="8"/> -->    
             <!--   -->    
             <Manager className="org.apache.catalina.ha.session.DeltaManager"   
                      expireSessionsOnShutdown="false"   
                      notifyListenersOnReplication="true"/>    
      
             <Channel className="org.apache.catalina.tribes.group.GroupChannel">    
               <Membership className="org.apache.catalina.tribes.membership.McastService"   
                           address="228.0.0.4"   
                            port="45564"   
                           frequency="500"   
                           dropTime="3000"/>    
               <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"   
                         address="auto"   
                         port="4000"   
                         autoBind="100"   
                         selectorTimeout="5000"   
                         maxThreads="6"/>    
               <!-- timeout="60000"-->    
               <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">    
                 <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />    
               </Sender>    
               <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>    
               <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>    
               <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>    
             </Channel>    
      
             <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>    
             <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>    
             <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>    
             <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>    
           </Cluster> 

  ==========================================================================

6\
  站点web.xml中加入 <distributable/>,distributable元素来告诉servlet/JSP容器,编写将在分布式Web容器中部署的应用



=====================
以上配置经测试,情况如下
  1\在ie中运行 test.jsp
   出现
    Server Info: null : 8089
    ID B4D24ADB547DEAAE02B35CC72A2BC147.tomcatone
    Session 列表asfdasdf = asdf
不断的刷,仍显示的是 "ID B4D24ADB547DEAAE02B35CC72A2BC147.tomcatone",说明没有变,
但我把 tomcattwo这个tomcat站点关掉时
   出现
   Server Info: null : 8089
   ID B4D24ADB547DEAAE02B35CC72A2BC147.tomcattwo
   Session 列表asfdasdf = asdf
这时就变了,为什么一定要关掉一个服务才能执行test.jsp时,结果才能变呢(即自动在两个站点间切换以达以分流负载均衡作用)
现在的环境,是在一台机器中配置 一个apache ,两个tomcat

2\如果新开ie,则session ID会变了,说明配置成功

===============================================================================================================================
注意: 对于webservice 的集群,特别要注意 CommonBusiness.wsdl 中的
         <wsdl:port binding="impl:CommonBusinessSoapBinding" name="CommonBusiness">
             <wsdlsoap:address location="http://www.jobservice.com:8089/JobService/services/CommonBusiness"/>
         </wsdl:port>
此处要与apache http 中的httpd-vhosts.conf  的端口一致,并且需增加如下行
JkMount /JobService/services/CommonBusiness controller ()
===============================================================================================================================



=====================
===================================================
===================================================
=============  更深入的配置方式(集群)===============
===================================================
===================================================

先配置成可扩散的服务,以可以灵活的增加数据处理服务端(数据处理服务端往往压大)



windows环境下安装myphpadmin

1\php5
 
  得到 php.ini文件(在D:\php5目录下有一个这样的文件,只需改一下名字就ok)
  增加环境变量(在path环境变量中增加) d:\php5;d:\php5\ext
  php.ini在实际应用中要做相应修改
2\apache 中的http.conf的修改
   a:
    在 #LoadModule vhost_alias_module modules/mod_vhost_alias.so 后面加上以下两行
LoadModule php5_module d:/php5/php5apache2_2.dll
        PHPIniDir "d:/php5"

   b:修改http.conf相应位置
       <Directory "D:/www">
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
   Allow from all
</Directory>
   c:
      在 AddType application/x-gzip .gz .tgz后面加上以下两行
AddType application/x-httpd-php .php
        AddType application/x-httpd-php .html

   d:增加 index.php
<IfModule dir_module>
    DirectoryIndex index.html index.jsp index.php
</IfModule>


   e:
      #Include conf/extra/httpd-vhosts.conf 中的"#"去除
      修改httpd-vhosts.conf文件为如下内容
#
# Use name-based virtual hosting.
#
NameVirtualHost *:8089

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

<VirtualHost *:8089>
   ServerAdmin seal_bird21th@sohu.com
   DocumentRoot d:/www/wabappone/ROOT
   ServerName www.wabappone.com 
   ServerAlias wabappone
   ErrorLog "logs/wabappone.localhost-error.log"
   CustomLog "logs/wabappone.localhost-access.log" common
    JkMount /*.jsp controller 
# 把JSPX程序映射到Jk连接器上
JkMount /*.jspx controller
  # 把servlet程序映射到Jk连接器上
JkMount /servlet/* controller
JkMount /*.servlet controller
</VirtualHost>

3\
       phpmyadmin的安装配置

     打开phpmyadmin 目录中的 config.inc.php 找到以下这些:

     $cfg[’PmaAbsoluteUri’] = ’http://localhost/phpmyadmin’; //假设是有域名的服务器,可改成http://域名/phpmyadmin

     $cfg[’Servers’][$i][’user’] = ’admin’;

     $cfg[’Servers’][$i][’password’] = ’00000000’; //分别填上你mysql的用户和密码

     $cfg[’Servers’][$i][’auth_type’] = ’http’; // 这里也可以改为cookie

     改好了保存,在浏览器打开http://localhost/phpmyadmin (/index.php)输入你的用户名和密码,便可以管理mysql了.


4\修改
  d:\php5\php.ini
  把如下四行中的";"去掉
  ;extension=php_mcrypt.dll
  ;extension=php_msql.dll
  ;extension=php_mssql.dll
  ;extension=php_mysql.dll
  ;extension=php_mysqli.dll
  ;extension=php_mbstring.dll






  ====================================
  url rewrite
  ====================================



1、在 httpd.conf 中搜索 LoadModule rewrite_module,将该行前面的 # 号删除。
2、将下面的内容加入在</VirtualHost>之前
  <IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteRule ^(.*)/testrewrite.html$                $1/index.php
  </IfModule>

技巧:
果在httpd中打开调用rewrite_module的设置,查看一下是不是能调用了,要通过 httpd -M的参数来查看;
#/usr/sbin/httpd -M



==================================
======支持php的基本配置步骤==========
==================================
==================================
配置支持php的步骤
首先要下载
apache2.2
php5

1\
  在php5目录下找到php.ini文件,查看解压缩后的文件夹内容,找到“php.ini-dist”文件,将其重命名为“php.ini”,打开编辑,找到下面图中的地方, Ln385,有一个“register_globals = Off”值,这个值是用来打开全局变量的,比如表单送过来的值,如果这个值设为“Off”,就只能用“$_POST['变量名']、$_GET['变量名 ']”等来取得送过来的值,如果设为“On”,就可以直接使用“$变量名”来获取送过来的值,当然,设为“Off”就比较安全,不会让人轻易将网页间传送的数据截取。这个值是否改成“On”就看自己感觉了,是安全重要还是方便重要?

2\——在“我的电脑”上右键,“属性”,选择“高级”标签,点选“环境变量”,在“系统变量”下找到“Path”变量,选择,双击或点击“编辑”,将“;D:\php;D:\php\ext”加到原有值的后面,当然,其中的“D:\php” 是我的安装目录,你要将它改为自己的php安装目录
E:\DEDECMS\php5;E:\DEDECMS\php5\ext
3\
加入到#LoadModule vhost_alias_module modules/mod_vhost_alias.so 后面
LoadModule php5_module E:/DEDECMS/php5/php5apache2_2.dll
PHPIniDir "E:/DEDECMS/php5"
4\
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html

/index.html出现
出现 Parse error: syntax error, unexpected T_STRING
取消  AddType application/x-httpd-php .html 这句就ok了,真tmd怪了

发现与php.ini 中的 ;extension=php_mbstring.dll 这行取消";"有关
要么取消http.conf中
AddType application/x-httpd-php .html
或php.ini中的改为
;extension=php_mbstring.dll
则正常运行

====================================
参看 http://www.idouye.com 爱豆叶资料分享
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics