본문 바로가기

WEB/Apache,OHS

[Apache] WildFly, JBoss 연동 (mod_jk 사용)

#. mod_jk 설정 파일 샘플

수정 날짜 : 2023년 03월 23일

modjk_sample_20230323.zip
0.00MB

 


 

#. 참고 글

(연동 가이드)

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hanajava&logNo=221589635317&parentCategoryNo=40&categoryNo=&viewDate=&isShowPopularPosts=false&from=postList 

https://ktdsoss.tistory.com/152

https://knight76.tistory.com/entry/modjk%EC%9D%98-workersproperties-%EC%84%A4%EB%AA%85

 

(로드밸런싱 설정)

https://chanchan-father.tistory.com/769

https://tomcat.apache.org/connectors-doc/reference/workers.html

https://www.epari.net/vlink/b/cd

https://waspro.tistory.com/288

 

(jboss/wildfly node name 관련)

https://stackoverflow.com/questions/41748704/how-to-get-the-instance-name-instance-id-of-a-jboss-eap-7-instance-serving-the

 

(socket_timeout 관련)

https://mobicon.tistory.com/245

https://wwwnghks.tistory.com/44

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=blue_0227&logNo=130095949447&parentCategoryNo=48&viewDate=¤tPage=1&listtype=0

 

(연동 지연 발생)

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=aumjs&logNo=221137814168

 

(그 외 각종 workers.properties 옵션 관련)

https://mungpack.tistory.com/entry/workersproperties-%EC%98%B5%EC%85%98-%EB%82%B4%EC%9A%A9

 


 

#. 테스트 환경

Apache 2.4.54

WildFly 23.0.2, 26.1.2

JBoss 7.4.*

 


 

#. mod_jk 다운로드

https://tomcat.apache.org/download-connectors.cgi

 


 

#. mod_jk 모듈 컴파일

해당 작업 진행하기 전에 Apache 서버가 설치되어 있어야 한다.

다운로드 받은 mod_jk connector 파일을 설치 대상 서버에 업로드 후 압축 해제한다.

 

아래 절차대로 mod_jk 모듈 컴파일을 진행한다.

Apache 서버의 modules 디렉토리 내에 mod_jk.so 파일이 생성되었다면 성공.

cd .../tomcat-connectors-1.2.48-src/native
./configure --with-apxs={APACHE_HOME_DIRECTORY}/bin/apxs

make
make install

cd {APACHE_HOME_DIRECTORY}/modules
ls -al mod_jk.so

 

 


 

#. mod_jk 설정 - httpd.conf 수정

Apache 서버 기동 시 mod_jk.so 모듈이 load 되도록 설정해야 한다.

httpd.conf 파일에 아래 내용을 추가한다.

Include conf/mod_jk.conf

 

 


 

#. mod_jk 설정 - mod_jk.conf 수정

mod_jk.conf 파일에 아래와 같이 LoadModule 내용이 작성되어 있다.

이 외에도, WAS서버 연동 설정 외의 mod_jk 자체 관련 설정은 모두 해당 파일에 작성되어 있다.

LoadModule jk_module modules/mod_jk.so

 

 

 

mod_jk 로그 관련 설정을 수정해준다.

(로그레벨)
JkLogLevel info

(mod_jk 로그 경로 - modjk 로그도 rotatelogs로 로테이션 가능)
JkLogFile "||{APACHE_HOME}/bin/rotatelogs logs/mod_jk.log_%Y%m%d 86400 +540"

 

 


 

#. mod_jk 설정 - workers.properties 수정

여러 개의 node를 하나의 worker로 묶는 방식이다.

wildfly/jboss와 연동 시, node의 이름은 정해진 이름 대로 설정해야 한다.

 

jboss.node.name 의 value 값으로

node 이름을 설정해야 한다.

 

(standalone 모드 예시)

 


 

 

(Domain 모드 예시 - host_name:server_name 순으로 적혀있다)

 

(Domain 모드에서의 jboss.node.name 규칙)

Host 이름 : slave 

Server 인스턴스 이름 : m1

jboss.node.name : Host 이름:Server 인스턴스 이름 (slave:m1)

 


 

(workers.properties 설정 예시)

connection_pool_minsize, connection_pool_size 옵션의 경우

Event MPM 사용 기준으로 ThreadsPerChild 옵션값과 동일하게 세팅해야 한다.

(ThreadsPerChild 옵션의 default 값은 25 이다)

# Define list of workers that will be used
# for mapping requests
# The configuration directives are valid
# for the mod_jk version 1.2.18 and later
#----------------------------------------------------------

####################
#01. worker templates
####################

worker.template.type=ajp13
worker.template.lbfactor=1
worker.template.socket_timeout=300
worker.template.reply_timeout=300000
worker.template.retries=0
worker.template.ping_mode=A
worker.template.recovery_options=3
worker.template.connection_pool_minsize=25
worker.template.connection_pool_size=25

#----------------------------------------------------------

####################
#02. worker list
####################

#worker list
worker.list=jkstatus,ehc

#worker jkstatus
worker.jkstatus.type=status

#worker ehc
worker.ehc.balance_workers=server1,server2
worker.ehc.type=lb

#----------------------------------------------------------

####################
#03. node list
####################

#node1 (jboss standalone mode example)
worker.server1.reference=worker.template
worker.server1.host=1.1.1.1
worker.server1.port=7010

#node2 (jboss domain mode example)
worker.slave:m1.reference=worker.template
worker.slave:m1.host=1.1.1.1
worker.slave:m1.port=7020

#----------------------------------------------------------

 


 

 

#. mod_jk 설정 - uriworkermap.properties 수정

WAS서버와 연동 시, JkMount로 URL을 구분한다.

URL 내에 특정 문자열 포함 시, 해당 요청은 WAS 서버에서 처리하게 된다.

 

앞서 workers.properties 에서 설정한 worker가

특정 URL 패턴을 처리하도록 설정한다.

# Simple worker configuration file

# Mount the Servlet context to the ajp13 worker
#/jmx-console=ajp13
#/jmx-console/*=ajp13
#/web-console=ajp13
#/web-console/*=ajp13

#jkstatus
/jkstatus=jkstatus
/jkstatus/*=jkstatus

#jsp url turn to ajp
/*.jsp=ehc
/resources/*=ehc

 


 

https 로 들어오는 요청에 대해서는

extra/httpd-ssl.conf 파일에 jkmount 설정을 별도로 해야 한다.

 

uriworkers.properties 파일에 작성할 때와 문법이 다르다.

JkMount 키워드를 앞에 작성해야 한다.

 


 

#. 특정 URL 패턴을 Apache에서 먼저 처리하도록 설정

jkmount 설정에 아래와 같이 추가 시

/resources/ URL이 포함되는 패턴은 WAS가 아닌 WEB에서 처리하게 된다.

 

WebLogic Proxy Plugin 옵션과 비교했을 시에는

WLExcludePathOrMimeType 옵션과 비슷한 역할을 한다

 

SetEnvIf Request_URI "/resources/*" no-jk