Print
카테고리: [ Apache Tomcat ]
조회수: 20239

1. 개요

공석 문서 : http://tomcat.apache.org/connectors-doc/

Tomcat Connectors는 Tomcat을  앞 단의 Apache 등의 웹 서버와 연결 할 수 있게 해 주는 모듈이다. Apache JServer Protocol을 사용하며, 연결 가능한 웹 서버는 Apache, iPlanet, IIS 등이다.


2. 사전 작업

Tomcat Connector의 설치라는 것은, 앞단의 Apache HTTP Server와의 연동을 위하여 Connector를 컴파일하는 과정이다. 이 작업은 HTTP Server가 설치된 서버에서 수행한다.

우선 Connector를 다운로드 받는다.  Connector 버전은 1.2.37이다. (2014년 1월 말) Connector 버전은 1.2.41이다. (2016년 4월 초)

wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/${FILE_NAME}.tar.gz
FILE_NAME=tomcat-connectors-1.2.37-src
gzip -d ${FILE_NAME}.tar.gz
tar -xvf ${FILE_NAME}.tar

3. 컴파일

컴파일을 한다. 물론 Aapache HTTP Server는 미리 설치되어 있어야 한다.

cd ${FILE_NAME}/native
./configure --with-apxs=${SVC_DIR}/http/${HTTP_VER}/bin/apxs
make
make install

만일 컴파일 작업이 수월하지 않은 경우, 바이너리를 다운로드 받을 수도 있다.

-> http://apache.mirror.cdnetworks.com//tomcat/tomcat-connectors/jk/binaries/ 


3. 설정

우선 httpd.conf에 mod_jk 설정 파일을 include한다.

3-1. httpd.conf

echo "Include servers/${INST_NAME}/conf/extra/httpd_mod_jk.conf" >> httpd.conf

3-2. http_mod_jk.conf

LoadModule jk_module    modules/mod_jk.so

<IfModule mod_jk.c>
        JkWorkersFile servers/#INST_NAME#/conf/extra/workers.properties
#       JkLogFile "|bin/rotatelogs servers/#INST_NAME#/logs/mod_jk.log.%Y.%m.%d 86400"
        JkLogLevel error
        JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
        JkShmFile servers/#INST_NAME#/logs/jk.shm
        JkMountFile servers/#INST_NAME#/conf/extra/uriworkermap.properties
</IfModule>

<Location /jkstatus/>
        jkmount jkstatus
        Order deny,allow
        #Deny from all
        allow from all
</Location>

3-3. workers.properties 예제

3-3-1. 예제1

worker.list=lb_pets,jkstatus

worker.node_pets_11.type=ajp13
worker.node_pets_11.host=192.168.1.238
worker.node_pets_11.port=8009
worker.node_pets_11.lbfactor=1
worker.node_pets_11.socket_timeout=300
worker.node_pets_11.socket_keepalive=True
worker.node_pets_11.connect_timeout=20000
worker.node_pets_11.connection_pool_size=64
worker.node_pets_11.connection_pool_minsize=32
worker.node_pets_11.connection_pool_timeout=60

worker.node_pets_21.type=ajp13
worker.node_pets_21.host=192.168.1.239
worker.node_pets_21.port=8109
worker.node_pets_21.lbfactor=1
worker.node_pets_21.socket_timeout=300
worker.node_pets_21.socket_keepalive=True
worker.node_pets_21.connect_timeout=20000
worker.node_pets_21.connection_pool_size=64
worker.node_pets_21.connection_pool_minsize=32
worker.node_pets_21.connection_pool_timeout=60

worker.lb_pets.type=lb
worker.lb_pets.balance_workers=node_pets_11,node_pets_21
worker.lb_pets.sticky_session=1

worker.jkstatus.type=status

3-3-2. 예제2

worker.list=lb_tomcats,jkstatus

worker.tomcat1.type=ajp13
worker.tomcat1.host=10.0.10.132
worker.tomcat1.port=8109
worker.tomcat1.lbfactor=1

worker.tomcat2.type=ajp13
worker.tomcat2.host=10.0.10.132
worker.tomcat2.port=8209
worker.tomcat2.lbfactor=1

worker.lb_tomcats.type=lb
worker.lb_tomcats.balance_workers=tomcat1,tomcat2
worker.lb_tomcats.sticky_session=1

worker.jkstatus.type=status

3-4. uriworkermap.properties

3-4-1. 예제1

/*|/=lb_pets
!/*.html=lb_pets
!/images|/*=lb_pets
!/jmx-console|/*=lb_pets
!/web-console|/*=lb_pets
!/admin-console|/*=lb_pets
!/server-status|/*=lb_pets

3-4-2. 예제2

!/*.jsp|/=lb_tomcats
/*.dev|/=lb_tomcats
/*.do|/=lb_tomcats
!/server-status|/*=lb_tomcats

4. 오류 해결

Tomcat Connector 컴파일 시 만약 다음과 같은 오류가 발생한다면,

CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /sw/httpd/tomcat-connectors/1.2.41/module/native/scripts/build/unix/missing aclocal
configure.ac:164: warning: macro `AM_PROG_LIBTOOL' not found in library
 cd . && /bin/sh /sw/httpd/tomcat-connectors/1.2.41/module/native/scripts/build/unix/missing automake --foreign
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /sw/httpd/tomcat-connectors/1.2.41/module/native/scripts/build/unix/missing autoconf
configure.ac:154: error: possibly undefined macro: AC_PROG_LD
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:160: error: possibly undefined macro: AC_LIBTOOL_DLOPEN
configure.ac:162: error: possibly undefined macro: AM_PROG_LIBTOOL
make: *** [configure] Error 1
ERROR:   is failed. Check arguments.
compile is failed. Check the arguments..!!

libtool 패키지를 설치하여 해결할 수 있다.

# yum install libtool
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: data.nicehosting.co.kr
 * extras: data.nicehosting.co.kr
 * updates: data.nicehosting.co.kr
Resolving Dependencies
--> Running transaction check
---> Package libtool.x86_64 0:2.2.6-15.5.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================
 Package                        Arch                          Version                                Repository                   Size
=======================================================================================================================================
Installing:
 libtool                        x86_64                        2.2.6-15.5.el6                         base                        564 k

Transaction Summary
=======================================================================================================================================
Install       1 Package(s)

Total download size: 564 k
Installed size: 1.9 M
Is this ok [y/N]: y
Downloading Packages:
libtool-2.2.6-15.5.el6.x86_64.rpm                                                                               | 564 kB     00:04
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : libtool-2.2.6-15.5.el6.x86_64                                                                                       1/1
  Verifying  : libtool-2.2.6-15.5.el6.x86_64                                                                                       1/1

Installed:
  libtool.x86_64 0:2.2.6-15.5.el6

Complete!