본문 바로가기
WEB/APACHE

5. Apache - Jboss(Wildfly) 연동(mod_jk)

by coldplayer83 2022. 10. 28.
728x90

https://sarc.io/index.php/httpd/259-workers-properties-1#google_vignette

 

apache 웹서버와 연동 방법은 mod_jk, mod_proxy, mod_cluster를 이용한 방법이 있음

 

1. tomcat connectors(mod_jk) 모듈 다운로드 후 압축 해제

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

 

2. 모듈 컴파일 및 설치

--with-apxs=${apache경로}/bin/apxs 옵션으로 기존 설치된 아파치의 모듈을 빌드.
${apache경로}/module에 mod_jk.so 생성 확인
cd tomcat-connectors-1.2.48-src/native/
./configure --with-apxs=/sw/web/apache/bin/apxs

--with-apxs=/sw/web/apache/bin/apxs : 아파치 설치 경로의 apxs 모듈을 빌드


※ apxs가 없다면 설치.
루트경로에서 검색.
find ./ -name apxs
없다면 설치.
yum install httpd-devel
/usr/bin/apxs로 생성됨.

make && make install

 

컴파일된 모듈 확인

 

3. mod_jk.so 모듈 설정

1) httpd.conf 파일 설정

mod_jk.so 모듈을 로딩하도록 include 라인 추가

vi /etc/httpd/conf/httpd.conf

mod_jk.zip
0.00MB


2) mod_jk.conf 파일 설정

vi /etc/httpd/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

# the location of jk shared memory
JkShmFile /usr/local/httpd2/conf/mod_jk.shm

# Where to put jk logs
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 indicates to send SSK KEY SIZE
# Note: Changed from +ForwardURICompat.
# See http://tomcat.apache.org/security-jk.html
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"

# You can use external file for mount points
# It will be checked for updates each 60 secondes
# The format of the file is : /url=worker
# /examples/*=loadbalancer
JkMountFile conf/jkworkermap.properties
JkMount : 웹서버가 mod_jk 모듈로 전송할 URL을 지정 ex) JkMount /*.jsp lb
JkMountFile : URL 패턴을 포함한 파일 지정 ex) JkMountFile conf/jkworkermap.properties
JkWorkersFile : worker 지정 및 관련 옵션 설정
mod_jk.shm : mod_jk 설정 후 아파치 재기동시 생성됨

 

3) workers.properties 설정

worker는 was의 인스턴스를 의미

apache와 연결되는 worker는 worker.properties에 등록되어 있어야 mod_jk가 적절한 부하분산을 해준다

인스턴스별로 worker를 설정

 

worker 설정 : worker.<worker_name>.<directive>=<value>
worker_name은 jboss 인스턴스 id와 동일하게 맞춰줘야 함
 
[standalone mode]
worker.<node.name>.<directive>
ex) worker.jboss1.host=192.168.56.101

 

[domain mode]
worker.<slave_host>:<server.name>.<directive>
ex) worker.slave1:server-one.host=192.168.56.101

 

 
아래 예시는 domain mode 기준
vi /etc/httpd/conf/workers.properties
# 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=30
worker.template.reply_timeout=30000
worker.template.retries=0


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


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


#worker list
worker.list=slave
worker.slave.balance_workers=slave1:server-one,slave1:server-two,slave2:server-one,slave2:server-two
worker.slave.type=lb

#worker jkstatus
worker.jkstatus.type=status


#worker slave1
worker.slave1.method=Session
worker.slave1.session_cookie=JSESSIONID
worker.slave1.retries=0

#worker slave2
worker.slave2.method=Session
worker.slave2.session_cookie=JSESSIONID
worker.slvae2.retries=0


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


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


#slave1:server-one
worker.slave1:server-one.reference=worker.template
worker.slave1:server-one.host=192.168.56.126
worker.slave1:server-one.port=8159


#slave1:server-two
worker.slave1:server-two.reference=worker.template
worker.slave1:server-two.host=192.168.56.126
worker.slave1:server-two.port=8159


#slave2:server-one
worker.slave2:server-one.reference=worker.template
worker.slave2:server-one.host=192.168.56.127
worker.slave2:server-one.port=8159


#slave2:server-two
worker.slave2:server-two.reference=worker.template
worker.slave2:server-two.host=192.168.56.127
worker.slave2:server-two.port=8159


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

 

worker.worker_name.host : 클러스터링 및 로드밸런싱 대상 host

두 대의 물리적 서버에 설치된 worker를 연동할 경우 ip를 넣어야 함

DNS lookup하지 않도록 ip로 설정하는 것을 추천

 

worker.worker_name.port : apache와 jboss가 통신하는 포트로 단일 노드 기본 AJP 포트는 8009

(Socket Binding Port Offset 값이 150이기 때문에 8009 + 150 = 8159임)

 

worker.worker_name.type : worker와 연결시 사용할 프로토콜 타입

lbfactor는 workers, 즉 각 인스턴스의 부하분산 지수임

보통 1로 설정하여 모든 인스턴스를 균등하게 분산

 

공통 속성을 template로 만들어 적용

 

4) jkworkermap.properties 설정

웹서버와 jboss가 처리할 요청을 분리하는 URI worker mapping 설정

vi /etc/httpd/conf/jkworkermap.properties
# 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


#all url turn to ajp
#/*=ajp13


#jsp url turn to ajp
/*.jsp=slave
/*.jsp=slave : workers.properties에 설정한 worker name으로 작성.

 

5) 아파치 재기동 후 웹서버 ip:port로 접근 확인

'WEB > APACHE' 카테고리의 다른 글

4. 1024 이하 포트 사용 설정  (0) 2023.05.22
2.1. Compile 설치 과정  (0) 2023.05.22
2. 설치 [Compile]  (0) 2023.05.22
1. 설치 [YUM]  (0) 2023.05.22
3. apache 기동/중지 및 상태 확인  (0) 2022.10.26