Copy link to clipboard
Copied
Hello Community!
Working on application isolation paired with multi instance load balancing and came across what I would consider a bug.
The uriworkermap.properties file included in the mod_jk.conf for Apache on RHEL 7 is seemingly completely ignored by my virtualhost.
In all the documentation I came across, the uriworkermap.properties is where to specify the mount points for each of the workers.
What clued me into it not working as I had anticipated, was that every time I ran ab to test the load balancing between different application paths, the first worker listed in workers.properties->worker.list would always handle the requests.
The solutions I have come across so far :
1. Include the uriworkermap.properties inside of the <virtualhost> config
JkMountFile "/opt/coldfusion2016/config/wsconfig/1/uriworkermap.properties"
2. Or Add JkMount entries in the <virtualhost> config
#Load balanced application isolation
JkMount /mysecureapp1 secureapps
JKMount /mysecureapp1/* secureapps
JKMount /* generalapps
I am very curious if this is by design.
Here is the setup and configs (minus the tomcat instance's server.xml files) if anyone cares to have a look.
Setup :
RHEL 7 X64 Minimum install
Coldfusion2016 Enterprise Edition patched to 2016.0.02.299200
Tomcat Version 8.0.32.0
Java JRE Server 1.8.0_102
mod_jk shipped with cf2016
Config Files :
/etc/httpd/conf/httpd.conf (tail end)
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
Include "/etc/httpd/conf/mod_jk.conf"
/etc/httpd/conf/mod_jk.conf
# Load mod_jk module
LoadModule jk_module "/opt/coldfusion2016/config/wsconfig/1/mod_jk.so"
# Where to find workers.properties
JkWorkersFile "/opt/coldfusion2016/config/wsconfig/1/workers.properties"
JkMountFile "/opt/coldfusion2016/config/wsconfig/1/uriworkermap.properties"
# Where to put jk logs
JkLogFile "/opt/coldfusion2016/config/wsconfig/1/mod_jk.log"
# custom environment variables
JkEnvVar REDIRECT_URL
JkEnvVar REDIRECT_REMOTE_HOST
JkEnvVar REDIRECT_PATH
JkEnvVar REDIRECT_QUERY_STRING
JkEnvVar REDIRECT_HTTP_ACCEPT
JkEnvVar REDIRECT_HTTP_USER_AGENT
JkEnvVar REDIRECT_REMOTE_ADDR
JkEnvVar REDIRECT_SERVER_NAME
JkEnvVar REDIRECT_SERVER_PORT
JkEnvVar REDIRECT_SERVER_SOFTWARE
# Where to put jk shared memory
JkShmFile "/opt/coldfusion2016/config/wsconfig/1/jk_shm"
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf
DirectoryIndex index.cfm
Alias /cf_scripts "/opt/coldfusion2016/cfusion/wwwroot/cf_scripts"
<Directory "/opt/coldfusion2016/cfusion/wwwroot/cf_scripts">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Files ~ ".hbmxml$">
Require all denied
</Files>
/opt/coldfusion2016/config/wsconfig/1/workers.properties
worker.list=generalapps,secureapps,tomcatstatus
worker.cfusion1.type=ajp13
worker.cfusion1.host=localhost
worker.cfusion1.port=8012
worker.cfusion1.max_reuse_connections=250
worker.cfusion1.lbfactor=1
worker.cfusion1.cachesize=30
worker.cfusion1.route=cfusion1
worker.cfusion2.type=ajp13
worker.cfusion2.host=localhost
worker.cfusion2.port=8013
worker.cfusion2.max_reuse_connections=250
worker.cfusion2.lbfactor=1
worker.cfusion2.cachesize=30
worker.cfusion2.route=cfusion2
worker.cfusion3.type=ajp13
worker.cfusion3.host=wt-cf2016-2
worker.cfusion3.port=8012
worker.cfusion3.max_reuse_connections=250
worker.cfusion3.lbfactor=1
worker.cfusion3.cachesize=30
worker.cfusion3.route=cfusion3
worker.cfusion4.type=ajp13
worker.cfusion4.host=wt-cf2016-2
worker.cfusion4.port=8013
worker.cfusion4.max_reuse_connections=250
worker.cfusion4.lbfactor=1
worker.cfusion4.cachesize=30
worker.cfusion4.route=cfusion4
worker.tomcatstatus.type=status
worker.secureapps.type=lb
worker.secureapps.balance_workers=cfusion1,cfusion3
worker.secureapps.sticky_session=false
worker.generalapps.type=lb
worker.generalapps.balance_workers=cfusion2,cfusion4
worker.generalapps.sticky_session=false
/opt/coldfusion2016/config/wsconfig/1/uriworkermap.properties
/mysecureapp1=secureapps
/mysecureapp1/*=secureapps
/*=generalapps
Have something to add?