JBoss EAP 6์ Apache HTTP Server๋ฅผ
mod_cluster๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค. ์ ์ ์ธ ์ค์ ์์ด๋ WAS์ ์ถ๊ฐ/์ญ์ ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๋ ๋์ ํด๋ฌ์คํฐ๋ง์ ๊ตฌํํ๋ฉฐ, ๋ฉํฐ์บ์คํธ(Advertise) ์ค์ ์ ์ค์ฌ์ผ๋ก ๋ค๋ฃน๋๋ค.
0. ์ฌ์ ์ค๋น (Prerequisites)
- OS: Windows 10 (ํ ์คํธ ํ๊ฒฝ)
- Web Server: Apache 2.2.x (JBoss EWS ํฌํจ ๋ฒ์ ๊ถ์ฅ)
- Middleware: JBoss EAP 6.4.x
.so)์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. JBoss EWS(Enterprise Web Server) ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ์ต์ ํ๋ ๋ชจ๋์ด ํฌํจ๋์ด ์์ต๋๋ค.
1. Apache ์ค์ (Web Server)
Apache์ mod_cluster ๊ด๋ จ ๋ชจ๋์ ๋ก๋ํ๊ณ , JBoss๊ฐ ๋ณด๋ธ ๋ฉํฐ์บ์คํธ ์ ํธ๋ฅผ ์์ ํ ์ ์๋๋ก ์ค์ ํฉ๋๋ค.
1) ํ์ ๋ชจ๋ ๋ณต์ฌ
JBoss EAP ์ค์น ๊ฒฝ๋ก์ ํฌํจ๋ mod_cluster ๊ด๋ จ ๋ชจ๋(.so)์ Apache์ modules ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌํฉ๋๋ค.
- ์๋ณธ ์์น:
[EAP_HOME]/modules/system/layers/base/native/lib64/httpd/modules - ๋ณต์ฌํ ํ์ผ:
mod_advertise.somod_manager.somod_proxy_cluster.somod_slotmem.so
2) mod_cluster.conf ์์ฑ
httpd.conf์์ include ํ ์ค์ ํ์ผ์ ์์ฑํฉ๋๋ค. ํต์ฌ์ VirtualHost ๋ด์ ServerAdvertise On ์ค์ ์
๋๋ค.
# ํ์ ๋ชจ๋ ๋ก๋ (์์ ์ค์)
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
# ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ์ผ ์์น ์ง์
MemManagerFile "C:/Apache/logs/mod_cluster"
# JBoss ์ํ ๊ด๋ฆฌ ๋ฐ Advertise ์์ ํฌํธ
Listen 6666
Order deny,allow
Deny from all
Allow from 127.0.0.1 # ๋ณด์์ ๋ก์ปฌ ์ ๊ทผ๋ง ํ์ฉ ๊ถ์ฅ
# ๋ฉํฐ์บ์คํธ ๊ด๊ณ ํ์ฑํ (ํต์ฌ)
ServerAdvertise on
EnableMCPMReceive
# ๊ด๋ฆฌ ์ฝ์ URL
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
2. JBoss ์ค์ (Middleware)
JBoss๊ฐ ๊ธฐ๋๋ ๋ ์์ ์ ์ ๋ณด๋ฅผ ๋ฉํฐ์บ์คํธ๋ก ์ ํํ๊ฑฐ๋, ํ๋ก์(Apache) ๋ฆฌ์คํธ๋ฅผ ๋ฐ์์ค๋๋ก ์ค์ ํฉ๋๋ค.
1) Instance ID ์ค์ (domain.xml)
Sticky Session์ ์ํด ๊ฐ ์๋ฒ ์ธ์คํด์ค์ ๊ณ ์ ํ ID๋ฅผ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ${jboss.server.name} ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํฉ๋๋ค.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" instance-id="${jboss.server.name}" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
...
</subsystem>
2) ์์ผ ๋ฐ์ธ๋ฉ (Socket Binding) - ๋ฉํฐ์บ์คํธ ์ฃผ์
๋์ผ ๋คํธ์ํฌ ๋ด์ ์ฌ๋ฌ JBoss ํด๋ฌ์คํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ํผ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฉํฐ์บ์คํธ ์ฃผ์๋ ํฌํธ๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
domain.xml ์์ (socket-binding-group):
<socket-binding-group name="full-ha-sockets" default-interface="public">
...
</socket-binding-group>
-Djboss.modcluster.multicast.address=224.10.1.1
3. ๊ฒ์ฆ ๋ฐ ํ ์คํธ
์ค์ ์๋ฃ ํ Apache -> JBoss ์์๋ก ๊ธฐ๋ํฉ๋๋ค.
1) Apache ๊ด๋ฆฌ ์ฝ์ ์ ์
๋ธ๋ผ์ฐ์ ์์ http://[Apache_IP]:6666/mod_cluster_manager ๋ก ์ ์ํฉ๋๋ค.
- ์ ์: ํ๋จ์ ์ฐ๊ฒฐ๋ JBoss Node(Node Name, IP, Port) ๋ฆฌ์คํธ๊ฐ ๋ํ๋ฉ๋๋ค.
- ์คํจ: ๋ฆฌ์คํธ๊ฐ ๋น์ด์๋ค๋ฉด ๋ฉํฐ์บ์คํธ ํต์ ์ด ๋ฐฉํ๋ฒฝ์ ๋งํ์๊ฑฐ๋, Advertise ์ค์ ์ด ์๋ชป๋ ๊ฒ์ ๋๋ค.
2) ํด๋ฌ์คํฐ๋ง ๋์ ํ์ธ
์ ํ๋ฆฌ์ผ์ด์ ํธ์ถ ์ ์ธ์ ์ด ์ ์ง๋๋์ง ํ์ธํ๊ณ , ํ ์ชฝ ๋ ธ๋๋ฅผ ์ ง๋ค์ด ์์ผฐ์ ๋ Failover๊ฐ ์ผ์ด๋๋์ง ํ ์คํธํฉ๋๋ค.
[๊ทธ๋ฆผ] mod_cluster ๋งค๋์ ํ๋ฉด (๋ ธ๋ ์ธ์ ์ฑ๊ณต)
Next Step:
๋ฉํฐ์บ์คํธ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ด๋ผ๋ฉด, mod_cluster ์ค์ ์ TCP ์ ๋์บ์คํธ(Proxy List ์ง์ ๋ฐฉ์)๋ก ๋ณ๊ฒฝํ์ฌ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ฒํ ํด ๋ณด์ญ์์ค.
