Configure JBoss EAP 6 to Communicate with Apache Mod_jk

1. 安装Apache

    我使用的版本是httpd-2.2.15。下载解压后进入httpd的根目录,依次执行如下命令:

     $ sudo ./configure --prefix=PREFIX --enable-so --enable-mods-shared=most
     $ sudo make
     $ sudo make install

     启动apache
     $ PREFIX/bin/apachectl start

     配置为service

     将apachectl拷贝到init.d

     sudo cp apachectl /etc/init.d/httpd

     sudo chkconfig --add httpd
     sudo chkconfig httpd on

     sudo service httpd start

     注意:

    1)PREFIX要替换为Apache的安装目录,如/usr/local/apache2.2

    2)如果您使用的是httpd2.4,安装包中不包含APR 、APR-Util 和 Perl-Compatible Regular Expressions Library (PCRE),如系统中未曾安装,需下载安装。

    安装apr:

    sudo ./configure --prefix=/usr/local/apr
    sudo make
    sudo make install

    安装apr-util:

    sudo ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    sudo make
    sudo make install

    安装pcre:

    sudo ./configure --prefix=/usr/local/pcre
    sudo make
    sudo make install

    重新执行命令:

    sudo ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so  --enable-mods-shared=most

     若启动后报错Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?

     修改httpd.conf配置文件,放开该模块即可。

2. 安装mod_jk

    下载mod_jk, 解压后进入native目录,依次执行如下命令:

    ./configure --with-apxs=/usr/local/apache2.2/bin/apxs
     make

    编译成功后,进入native/apache-2.0目录,将mod_jk.so拷贝到Apache的modules目录下。

3. 配置mod_jk

    在Apache的conf目录中创建三个文件:mod-jk.conf、workers.properties、uriworkermap.properties,内容如下:

mod-jk.conf

# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module modules/mod_jk.so
 
# Declare the module for <IfModule directive>
#AddModule mod_jk.c
 
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile conf/workers.properties
 
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
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 indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
 
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
 
# 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
 
# 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
JkMountFile conf/uriworkermap.properties

# Add jkstatus for managing runtime data
<Location /jkstatus/>
    JkMount status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

 

workers.properties

# Define list of workers that will be used
# for mapping requests
worker.list=loadbalancer,status

# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.reference=worker.template
worker.node1.host=192.168.50.1
worker.node1.port=8009
worker.node1.lbfactor=1

 

# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.reference=worker.template
worker.node2.host=192.168.50.2
worker.node2.port=8009
worker.node2.lbfactor=2

worker.template.type=ajp13
worker.template.socket_connect_timeout=5000
worker.template.socket_keepalive=true
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.ping_mode=A
 
# Load-balancing behaviour 
worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=true

# Status worker for managing load balancer
worker.status.type=status

 

uriworkermap.properties

/signac-web|/*=loadbalancer

#
# Mount jkstatus to /jkmanager
# For production servers you will need to
# secure the access to the /jkmanager url
#
/jkstatus=status

    最后在httpd.conf文件中添加:

    Include conf/mod-jk.conf

4、配置EAP

     mod_jk使用AJP协议进行通讯,需在web subsystem中配置 ajp connector;

     另外需配置jvmRoute,如未配置sticky_session是不起作用的。在EAP6中需添加属性instance-id="node1"(名称要与workers.properties中一致),如下:

      <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false" instance-id="node1">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
            ....
        </subsystem>

     绑定ajp端口

      <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        ...
        <socket-binding name="ajp" port="8009"/>

        <socket-binding name="http" port="8080"/>

        ....

       </socket-binding-group>

5、启动jboss和apache

      启动apache:

      ./apachectl start

      测试页面:

      jkstatus: http://127.0.0.1/jkstatus

      signac-web: http://127.0.0.1/signac-web

 

附:

如使用YUM安装apache,需执行

yum install httpd

yum install httpd-devel

httpd-devel中包含apxs。

 

你可能感兴趣的:(apache,EAP 6,mod_jk,sticky session)