[실행환경]

CentOS Linux release 7.9.2009 (Core)

openjdk version "11.0.19" 2023-04-18 LTS

Apache 2.4.6

Tomcat 10.1.11

 

앞서 진행한, 아파치-톰캣 연동 진행 내용에 이어지는 내용이다.

https://jparkk.tistory.com/15

 

아파치와 톰캣 연동

[실행환경] CentOS Linux release 7.9.2009 (Core) openjdk version "11.0.19" 2023-04-18 LTS Apache 2.4.6 Tomcat 10.1.11 1. 톰캣 홈페이지에서 다운로드 링크를 복사하고, 원하는 위치에 wget으로 다운로드 한다. 다운 받은 후

jparkk.tistory.com

 

1. 톰캣 설정파일에서(server.xml)에서 포트를 변경한다.

여러개의 톰캣을 연동하기 위해서 포트를 변경해야 하고, 각 톰캣의 포트 번호를 아래와 같이 변경했다.

(기본적용 포트 번호 → ajp 8009, 셧다운포트 8005, 톰캣http포트 8080)

tomcat-test1 http 포트 8180, 셧다운 포트 8105, ajp 포트 8109

tomcat-test2 http포트 8280, 셧다운 포트 8205, ajp 포트 8209

* 포트가 겹치게 되면 정상적으로 작동하지 않음

 

2. mod_jk.so 모듈 사용할 수 있도록 설정하기

1) conf.d 아래에 mod_jk.conf 만들기

LoadModule jk_module modules/mod_jk.so

<ifModule jk_module>
        JkWorkersFile conf.d/workers.properties

        JkShmFile logs/mod_jk.shm
        JkLogFile logs/mod_jk.log

        JkLogLevel error
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>

 

2) workers.properties

→ balancer가 node1, node2에게 분배하는 방식

####################################################
# worker list
####################################################
worker.list=node1,node2,balancer

####################################################
# balancer
####################################################
worker.balancer.type=lb
worker.balancer.balance_workers=node1,node2

####################################################
# tomcat-test1
####################################################
worker.node1.reference=worker.template
worker.node1.host=localhost
worker.node1.port=8109

####################################################
# tomcat-test2
####################################################
worker.node2.reference=worker.template
worker.node2.host=localhost
worker.node2.port=8209

####################################################
# Worker Setting
####################################################
worker.template.type=ajp13
worker.template.socket_connect_timeout=7000
worker.template.socket_keepalive=true
worker.template.ping_mode=A
worker.template.ping_timeout=10000
worker.template.connection_pool_minsize=0
worker.template.connection_pool_timeout=600
worker.template.reply_timeout=300000
worker.template.recovery_options=3

ex2)

#worker_list
worker.list=balancer

#balancer
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2

worker.tomcat1.type=ajp13
worker.tomcat1.port=8109
worker.tomcat1.host=localhost

worker.tomcat2.type=ajp13
worker.tomcat2.port=8209
worker.tomcat2.host=localhost

 

3. 가상호스트에서 특정 도메인으로 접근시, 톰캣 인스턴스에게 분배되게 설정 하기

/etc/httpd/conf.d/vhosts.conf에서 아래 내용 추가

 

ex1)

<VirtualHost *:80>
       ServerName vhost3.hello.com
       DocumentRoot /var/www/html_vhost2
       ErrorLog "logs/vhost3.hello.com_error_logs"
       CustomLog "logs/vhost3.hello.com_access_logs" combined
       JkMount	/* balancer  >>>>>>>>>>>>> 이 부분이 두 톰캣 인스턴스에 분배 되게 하는 설정임
</VirtualHost>

ex2)

<VirtualHost *:80>
	ServerName www1.test.com

	CustomLog	"|/usr/bin/rotatelogs /usr/local/src/httpd-2.4.58/logs/www1.test.com.log 3600 " combined env=!VLOG
	ErrorLog	"|/usr/bin/rotatelogs /usr/local/src/httpd-2.4.58/logs/www1.test.com.error 3600 "

	JkMount		/* balancer
</VirtualHost>

 

 

+ Recent posts