Jboss集群(三)

1       集成配置

1.1     Apache+mod_jk设置

1.1.1  改变Apache 端口号

  • 因为默认的80端口经常是被占用的,所以我改成了8081,当然也可以不改,修改方式如下:文件路径:D:\Program Files\Apache Software Foundation\Apache2.2\conf\ httpd.conf   找到这一行:Listen 8081
  • 也需要配置一下ServerName,如果没有配置在mod_jk.log里会报错,同样在上面的文件中找到这行改为:ServerName localhost:8081

1.1.2  拷贝mod_jk-1.2.30-httpd-2.2.3.so

将上面下载的mod_jk-1.2.30-httpd-2.2.3.so文件拷贝到D:\Program Files\Apache Software Foundation\Apache2.2\modules目录下,因为在配置文件中要求引用这个文件,所以我们改一个简单的名叫mod_jk.so

1.1.3  在httpd.conf增加载入mod_jk配置

l  在上面提到httpd.conf文件中增加:LoadModule jk_module modules/mod_jk.so 根据测试这行不加也行,可能是因为在mod_jk.conf文件已经有了这个引用。

l  在上面提到httpd.conf文件中增加:include conf/mod_jk.conf

1.1.4  新建mod_jk配置文件mod_jk.conf

在在上面提到httpd.conf文件中增加:include conf/mod_jk.conf 配置,所以需要在D:\Program Files\Apache Software Foundation\Apache2.2\conf\文件夹下新建一个mod_jk.conf文件,其内容如下:

# Load mod_jk module

   # Specify the filename of the mod_jk lib

   #加载mod_jk Module:  将下载的 mod_jk-1.2.30-httpd-2.2.3.so 文件放入到Apache_Home\module 并改并为mod_jk.so

   LoadModule jk_module modules/mod_jk.so

   ## 配置 mod_jk

   #加载集群中的workers

   # Where to find workers.properties

   JkWorkersFile conf/workers.properties

   # Where to put jk logs

   JkLogFile logs/mod_jk.log

   # Set the jk log level [debug/error/info]

   JkLogLevel info

   # Select the log format

   JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

   # JkOptions indicates to send SSK KEY SIZE

   JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

   # JkRequestLogFormat

   JkRequestLogFormat "%w %V %T"

   # Mount your applications

  #指定哪些请求交给jboss处理,"loadbalancer"为在 workers.propertise里指定的负载分配控制器名

  JkMount /*   loadbalancer

  #JkMount /jkstatus*   jkstatus

   # You can use external file for mount points.

   # It will be checked for updates each 60 seconds.

   # The format of the file is: /url=worker

   # /examples/*=loadbalancer

   #加载workers的请求处理分配文件

   JkMountFile conf/uriworkermap.properties

   # Add shared memory.

   # This directive is present with 1.2.10 and

   # later versions of mod_jk, and is needed for

   # for load balancing to work properly

   JkShmFile logs/jk.shm

   # Add jkstatus for managing runtime data

   <Location /jkstatus*>

    JkMount jkstatus

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

           </Location>

其中JkMount /* loadbalancer的意思是,把所有的请求都发给loadbalancer处理。可以通过修改url来控制发送某些request。

1.1.5  增加workers.properties文件

因为在mod_jk.conf文件中配置了mod_jk的workersFile:JkWorkersFile conf/workers.properties,所以需要在D:\Program Files\Apache Software Foundation\Apache2.2\conf\文件夹下新建workers.properties文件,注意这里必须和引用的文件名相同。workers.properties的内容如下:

#定义request所要转发到的节点

#告诉 JK,哪些 worker 是可用的

 worker.list=loadbalancer,jkstatus

 # 定义节点 Node1

 #lbfactor定义该节点的权重,数字越大分发到该节点的request越多

 # modify the host as your host IP or DNS name.

worker.node1.port=8009

worker.node1.host=192.16.90.9

#server的加权比重,值越高,分得的请求越多

worker.node1.type=ajp13

worker.node1.lbfactor=1

 

# 定义节点 Node2

 

# modify the host as your host IP or DNS name.

worker.node2.port=8009

worker.node2.host= 192.16.90.87

worker.node2.type=ajp13

worker.node2.lbfactor=1

 

   # 负载配置

#server名为loadbalancer,用于负载均衡

 worker.loadbalancer.type=lb

 #指定分担请求的jboss

 worker.loadbalancer.balance_workers=node1,node2

#粘性Session(默认是打开的) 当该属性值=True(或1)时,代表Session是粘性的,即同一Session在集群中的同一个节点上处理,Session不跨越节点。在集群环境中,一般将该值设置为False

 worker.loadbalancer.sticky_session=True

 worker.loadbalancer.sticky_session_force=False

 # Status worker for managing load balancer

 worker.jkstatus.type=status

其中对于node的命名规则是worker.节点名.xxxx。所以上述文件定义了两个节点:node1和node2。

所有需要负载均衡的节点,都必须在worker.loadbalancer.balanced_workers参数中列举出来。

worker.loadbalancer.sticky_session=True表示当前使用的粘连session,要知道粘连session的具体情况,可以查看1.3.2

worker.loadbalancer.sticky_session_force=False表示如果与用户绑定的server连接不上时,自动转向别的server。

sticky_session=true表示某个请求始终由当前Tomcat处理,不会转移到其他Tomcat上。sticky_session_force=false表示,当前Tomcat挂掉的时候,自动将Session复制到其他Tomcat上。如果将sticky_session_force设置为true,当你关闭一台Tomcat并刷新网页,将得到503错误。但设置为false,关闭一台Tomcat并刷新网页,被关闭的那台Tomcat上的Session会被自动复制到其他Tomcat上,系统继续正常运行。(需要整个刷新页面才能进行session复制,即点浏览器地址上的刷新按钮,或者按F5键---王乐2013-1-14)。

1.1.6  增加workers的请求处理分配文件

在mod_jk.con 中配置了workers的请求处理分配文件,配置如下:

   JkMountFile conf/uriworkermap.properties

所以需要求在D:\Program Files\Apache Software Foundation\Apache2.2\conf\文件夹下新建uriworkermap.properties文件,其内容如下:

#所有请求都由loadbalancer这个server处理

 /*=loadbalancer

#所有包含jkstatus请求的都由status这个 server处理

#/jkstatus=jkstatus

#这里的"!”是“非”的意思。

/*.gif=loadbalancer

/*.jpg=loadbalancer

/*.png=loadbalancer

/*.css=loadbalancer

/*.js=loadbalancer

/*.htm=loadbalancer

/*.html=loadbalancer

注意:uriworkermap.properties文件中的loadbalancer、jkstatus是在worders.properties 文件中配置的名称。

1.2     Jboss的配置

说明:我使用的jboss版本为4.0.2

1.2.1  增加这个属性jmvRoute="node1"

D:\jboss-4.0.2-bap\server\default\deploy\jbossweb-tomcat55.sar\ server.xm修改为:

  <Engine name="jboss.web" defaultHost="localhost"  jmvRoute="node1">

请注意,jmvRoute的值必须和mod_jk中的节点名字正确对应,否则无法正确路由。另外这里有一个小bug, jboss这个属性正确的写法是jvmRoute,但是官司文档、网上都上好多人写成jmvRoute。(使用jvmRoute属性字段—王乐2013-1-14)。

不配置这个属性,粘性session不会起作用,因为负载均衡器会按照这个名称记录当前的 session是属于那个节点的。

1.2.2  建立AJP连接

<Connector port="8009" address="${jboss.bind.address}"

         emptySessionPath="true" enableLookups="false" redirectPort="8443"

         protocol="AJP/1.3"/>

这个一般就有的,只要看一下端口号就行了,这个端口号对于workers.properties 中的配置:worker.node1.port=8009。

1.2.3  打开JK 开关

D:\jboss-4.0.2-bap\server\default\deploy\jbossweb-tomcat55.sar\META-INF\ jboss-service.xml

<attribute name="UseJK">true</attribute>

posted @ 2013-01-14 14:42  wangle100  阅读(380)  评论(0编辑  收藏  举报