无法使用mod_jk

时间:2016-11-03 10:27:59

标签: apache load-balancing httpd.conf jboss6.x mod-jk

我正在尝试在RHEL 7 VM上设置一个具有两个节点的JBOSS 6.4 EAP集群。我已经在2个JBOSS实例上部署了我的应用程序,并在Apache HTTPD服务器中配置了mod_jkhttpd.conf如下:

ServerRoot "/usr/local/apache2"
Listen 192.168.xxx.xxx:83
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon
</IfModule>
</IfModule>
ServerAdmin you@example.com
DocumentRoot "/usr/local/apache2/htdocs"
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
ErrorLog "logs/error_log"
LogLevel debug
<IfModule log_config_module>
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Include /usr/local/apache2/conf/mod-jk.conf

mod-jk.conf如下:

# Load mod_jk module
# Specify the filename of the mod_jk lib
LoadModule jk_module modules/mod_jk.so

# 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 debug

# 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
# The default setting only sends Java application data to mod_jk.
# Use the commented-out line to send all URLs through mod_jk.
# JkMount /* loadbalancer
JkMount /* loadbalancer
# 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 status1
Order deny,allow
#Deny from all
#Allow from 127.0.0.1
Allow from 0.0.0.0
</Location>

JkMountFile conf/uriworkermap.properties

workers.properties如下:

# workers to contact, that's what you have in your httpd.conf
worker.list=loadbalancer,status1

#setup node1
worker.node1.port=8009
worker.node1.host=xyz.abc.com
worker.node1.type=ajp13
worker.node1.lbfactor=1

#setup node2
worker.node2.port=8010
worker.node2.host=xyz.abc.com
worker.node2.type=ajp13
worker.node2.lbfactor=1

#setup the load-balancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1

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

此配置有效,我可以从负载均衡器访问应用程序,但登录页面上的图像没有显示(302重定向Location指向loadbalancer URL在http响应。) JBOSS实例在端口80808081上运行,而带有mod_jk的Apache HTTPd 2.4在端口83上运行。

我没有在Apache中安装其他模块,除了mod_jk。 我的研究使我发现在SSL中配置应用服务器时会遇到这样的问题。我没有使用SSL,我只使用HTTP。

请帮忙。提前谢谢。

修改1:

我发现我的应用程序中的安全模块存在问题。 mod_jk转发到节点的请求与从客户端接收的请求完全相同,即与Apache HTTPD的主机名和端口号一起。

因此,如果Apache在http://abc.mydomain.com:83/上运行并且收到的请求是http://abc.mydomain.com:83/myApp,则mod_jk会将请求(http://abc.mydomain.com:83/myApp)转发给正在运行的工作节点,例如URL上的JBOSS { {1}}。  假设我有两个具有相同应用程序http://pqr.mydomain.com:8081/myApp的工作节点。

我认为myApp中的安全模块将收到的主机名和端口号请求URL与自己的URL进行比较。这是绝对必要的要求。 所以我必须使用mod_rewrite作为工作节点的请求URL。 我的问题是:如何配置mod_rewite以便请求负载平衡并适当重写?

就像,一个网址为myApp的请求被转发到node1并重写为http://abc.mydomain.com:83/myApp

而下一个转发到node2并重写为http://pqr.mydomain.com:8081/myApp? 提前谢谢。

0 个答案:

没有答案