奇忠诚 发表于 2017-1-1 11:32:37

Apache+Tomcat实现负载均衡

安装Apache ,配置负载均衡

参考:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html
http://hi.baidu.com/luodaijun/blog/item/5bbe4cfb5ffef864034f56a1.html




1.1.1      安装 ( 1 )点击文件 apache_2.0.48-win32-x86-no_ssl.msi

( 2 )安装路径为 D:/ JIANGXI/Apache Group/Apache2
说明:

A、 需要输入 Network Domain 、 Server Name 和 Administrator's Email Address 在 “Network Domain” 里输入域。如果用本站的二级域名,例如 “test.dnschek.net” ,请输入 “test.dnschek.net” 。如果用顶级域名,请输入 “xxx.com” 。 ( 1166.jx163.com )
  在 “Server Name” 里输入服务器名。如果用本站的二级域名,请输入您的域名 “test.dnschek.net” 。如果用顶级域名,请输入 “www.xxx.com” 。
  在 “Administrator's Email Address” 里输入网站管理员的 Email 地址。

B、 选择典型安装。

C、 其他 采用默认配置。

D、 如果系统安装了其他 Web 服务器,如 IIS 、 WPS 等,占用了 80 端口的话,可以在 Apache 安装的时候,选择使用其他端口,如 8080 等。或者把 IIS 的所有 Web 站点停止。



1.1.2      Modules 下添加.so文件 ( 1 )下载 apache 的一个组件 Jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip

解压缩后将 modules 目录里面的 mod_jk2.so 文件, copy 到 Apache 安装目录下 modules 文件夹里 。



1.1.3      配置参数 httpd.conf 需要注意参数配置如下:

(1) 在行 "# LoadModule foo_module modules/mod_foo.so", 加入如下行 :
# Load mod_jk
LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info


( 2 )在参数 DocumentRoot 下加入如下行:
   JkMount /* loadbalancer   
   另外如果配置了http-vhosts.conf文件, 则要加入:
      JkMount /*.do loadbalancer
    JkMount /*.jsp loadbalancer
    JkMount /servlet/* loadbalancer
    JKMount /MoreSearch loadbalancer


( 3 )编辑 Apache\Apache Group\Apache2\conf\ 目录下的 httpd.conf 文件,找到 ServerName 这一项参数,这一行是被注释掉的(前面有#的符号)。去掉前面的在 "#" 符号,并在后面填入你的 hostname 或 IP 地址,在这里设置为:

ServerName 1166.jx163.com:80

说明:详细的配置信息,参见 .\4-WEB\Apache\Apache Group\Apache2\conf\httpd.conf

1.1.4          配置参数 workers.properties ( 1 ) 定义 Workers 列表:
# list the workers by name
worker.list=tomcat1, tomcat2, tomcat3,loadbalancer



( 2 ) 定义 Workers 的类型: # First tomcat server
worker.tomcat1.port= 8009       ( Tomcat worker 主机的侦听端口。 )
worker.tomcat1.host= 127.0.0.1   ( 侦听 ajp13 请求的 Tomcat worker 主机 )
worker.tomcat1.type= ajp13   (说明: 其使用 ajpv13 协议与 Tomcat 进程通讯 )


# Specify the size of the open connection cache.
worker.tomcat1.cachesize= 1000

( 当在多线程的 web server (例如 apache2.0 、 IIS 、 Netscape )中使用 JK 时,此属性是有效的。如果将 cachesize 的值设置为较高的值,这些支持多线程的 web server 将获得很好的处理能力。如果此属性不被设置,则连接 cache 特性将失效。 )

#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#----> lbfactor must be > 0
#----> Low lbfactor means less work done by the worker.
worker.tomcat1.lbfactor= 100

( 当此 Tomcat worker 被用于一个负载平衡 worker 使用时,此属性将被使用。它定义了此 worker 的负载平衡权值。 )

(2)       Second 和 3th 的 tomcat server 配置跟 First tomcat server 类似,区别的地方:

Second 和 3th 的 worker.tomcat1.port 分别为: 8019 、 8029

( 5 ) 定义一个名为 “loadbalancer” 的 worker ,其作为对多个 Tomcat 进程的负载平衡使用:

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=tomcat1, tomcat2, tomcat3

( 负载平衡类型的 worker 并不与 Tomcat worker 通讯,它负责管理这些 Tomcat worker 。 )

1.2          安装Tomcat及web内容
说明:为保障平台的稳定运行,系统提供 3 个 tomcat (命名 webserver-1 , webserver-2 , webserver-3 )运行。

1.2.1      安装    ( 1 )在 D:/ JIANGXI/ 下创建 webserver-1 文件夹。

( 2 )将“ 5-WEB/1-Tomcat ”下的文件复制到 D:/ JIANGXI/webserver-1 。要求 Tomcat5.0 版本。

1.2.2      配置参数 l         打开文件“ ..\ 5-WEB\1-Tomcat\conf\server.xml ”

l         ( 1 ) 3 个 Tomcat 的 server.xml 配置需要注意项目如下:

A 、 Change the control port : 配置服务器监听 shutdown 命令的端口 Port : SHUTDOWN , 3 个 Tomcat 分别为:

<Server port="8035" shutdown="SHUTDOWN" debug="0">

<Server port="8045" shutdown="SHUTDOWN" debug="0">

<Server port="8055" shutdown="SHUTDOWN" debug="0">



A、 定义 Tomcat 的标准独立服务 Service , 3 个 Tomcat 分别为:

<Service name="tomcat1">

<Service name="tomcat2">

<Service name="tomcat3">



C 、定义非 SSL 的 HTTP/1.1 连接器 Connector :

<Connector port="XXXX"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />

XXXX 对应 3 个 Tomcat 分别设置为: 8060 、 8070 、 8080



D 、 Change the AJP13 port : 定义 Coyote/JK2 AJP 1.3 连接器 Connector :

<Connector port=" XXXX"
               enableLookups="false" redirectPort="YYYY" debug="0"
               protocol="AJP/1.3" maxThreads="1100" minSpareThreads="25" maxSpareThreads="100"acceptCount="0"/>

YYYY 对应 3 个 Tomcat 分别设置为: 8009 、 8019 、 8029
YYYY 对应 3 个 Tomcat 分别设置为: 8443 、 8453 、 8463



E 、 Add a unique jvmRoute to the Catalina engine : 设置容器体系中最高级别的容器,各个 Tomcat 跟 B 项的设置对应, 3 个 Tomcat 分别为:

将 <Engine name="Standalone" defaultHost="localhost" debug="0"> 替换为:

<Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">
<Engine jvmRoute="tomcat2" name="Standalone" defaultHost="localhost" debug="0">
<Engine jvmRoute="tomcat3" name="Standalone" defaultHost="localhost" debug="0">



F 、设置用户图片、用户上传杂志图片存放目录。 3 个 Tomcat 配置相同:

<Context path="/faceImage" docBase="D:\jiangxi\uploadimages\faceImage" debug="0" reloadable="false" crossContext="true">

</Context>      

<Context path="/magazineImage" docBase="D:\jiangxi\uploadimages\magazineImage" debug="0" reloadable="false" crossContext="true">
</Context>



G 、此外需要的其他配置项有:

监听器: Listener

全局 JNDI 资源:GlobalNamingResources

全局日志设置,除非在更低的级别上覆盖它的设置   : Logger

配置: Realm

定义默认的虚拟主机 : Host

屏蔽: A 、 屏蔽 WARP connector

       B 、屏蔽 standalone HTTP port
   

F 、 server.xml 配置全文:

<Server port="8035" shutdown="SHUTDOWN" debug="0">
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
          debug="0"/>
<!-- Global JNDI resources -->
<GlobalNamingResources>
    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
            type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
      <parameter>
      <name>factory</name>       <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
      <name>pathname</name>
      <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>
</GlobalNamingResources>
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="tomcat1">
    <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
    <Connector port="8080"
               maxThreads="800" minSpareThreads="25" maxSpareThreads="100"
               enableLookups="false" redirectPort="8443" acceptCount="0"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />
<!--Connector port="8443"               
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"               

enableLookups="false" disableUploadTimeout="true"               

acceptCount="100" debug="0" scheme="https" secure="true"               

clientAuth="false" sslProtocol="TLS"               

keystoreFile="conf\.keystore"               

keystorePass="changeit" /-->

    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->

   <Connector port="8009"

               enableLookups="false" redirectPort="8443" debug="0"

               protocol="AJP/1.3" maxThreads="1100" minSpareThreads="25" maxSpareThreads="100"acceptCount="0"/>

    <!-- You should set jvmRoute to support load-balancing via JK/JK2 ie :

    <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1">         

    -->

    <!-- Define the top level container in our container hierarchy -->

    <Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">

      <!-- Global logger unless overridden at lower levels -->

      <Logger className="org.apache.catalina.logger.FileLogger"

            prefix="catalina_log." suffix=".txt"

            timestamp="true"/>

      <!-- This Realm uses the UserDatabase configured in the global JNDI

         resources under the key "UserDatabase".Any edits

         that are performed against this UserDatabase are immediately

         available for use by the Realm.-->

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

               debug="0" resourceName="UserDatabase"/>

      <!-- Define the default virtual host

         Note: XML Schema validation will not work with Xerces 2.2.

       -->

      <Host name="localhost" debug="0" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

       <!-- <Logger className="org.apache.catalina.logger.FileLogger"

               directory="logs"prefix="localhost_log." suffix=".txt"

            timestamp="true"/>-->
      <Context path="/faceImage" docBase="D:\jiangxi\uploadimages\faceImage" debug="0" reloadable="false" crossContext="true">
      </Context>         
          <Context path="/magazineImage" docBase="D:\jiangxi\uploadimages\magazineImage" debug="0" reloadable="false" crossContext="true">
      </Context>
      </Host>
    </Engine>
</Service>
</Server>
页: [1]
查看完整版本: Apache+Tomcat实现负载均衡