[WEB|WAS] WAS ์„œ๋ฒ„ ์ด์ค‘ํ™”

2026. 7. 17. 11:19ยทOS&Server/WEB | WAS

3-Tier ๊ตฌ์กฐ๋กœ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ด ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ ๋‹จ์ผ ์„œ๋ฒ„๋กœ๋งŒ ๊ตฌ์„ฑํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ๊ณผ๋ถ€ํ•˜๋กœ ์„œ๋ฒ„ ๋‹ค์ค‘ํ™”๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€ ๊นจ๋‹ฌ์•˜์œผ๋‹ˆ mod_proxy๋กœ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ HAProxy์™€ Keepalived๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋‘ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

2026.02.04 - [OS&Server/WEB | WAS] - [WEB/WAS] Apache ↔ Tomcat ์—ฐ๋™(Reverse Proxy)

 

[WEB/WAS] Apache ↔ Tomcat ์—ฐ๋™(Reverse Proxy)

์ผ๊ฒฝํ—˜ ์ธํ„ดํ˜•์„ ํ–ˆ์ง€๋งŒ ๋”ฐ๋กœ ์—…๋ฌด๋ฅผ ๋ฐ›์ง€๋Š” ์•Š์•„์„œ ๊ต์œก๋‹ค๋‹ˆ๋ฉด์„œ ๋“  ์ƒ๊ฐ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ฑธ ๊ธฐํšํ•ด์„œ ๊ฐ„๋‹จํ•œ ์žฅ์•  ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Apache, Tom

lucy-devblog.tistory.com


๋จผ์ € ์ด์ค‘ํ™”๋ฅผ ํ•˜๋ ค๋ฉด ์„œ๋ฒ„๊ฐ€ ๋‘ ๋Œ€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ 1๋Œ€๋ฅผ ๋” ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๋‚˜๋Š” ์›๋ž˜ VMware Workstation์œผ๋กœ ๊ตฌ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Clone ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ฒ„ 1๋Œ€๋ฅผ ๋ณต์ œํ–ˆ๋‹ค. VMware ESXi๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด Template์„ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„๋ฅผ 2๋Œ€๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค! (๋ฐ์Šคํฌํƒ‘์—์„œ ๊ดœํžˆ ESXi ์‚ฌ์šฉํ–ˆ๋‹ค๊ฐ€ ์ปดํ“จํ„ฐ์— ๋ฌธ์ œ ์ƒ๊ธธ๊นŒ๋ด ์•„์ง ๋„์ „์€ ๋ชปํ•ด๋ดค๋‹ค..)

1๏ธโƒฃ mod_proxy ํ™œ์šฉ

๋จผ์ € mod_proxy๋ฅผ ์‚ฌ์šฉํ•ด ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋‹ค์Œ ๋‚ด์šฉ์„ /etc/httpd/conf.d ํ•˜์œ„์— ๋งŒ๋“ค์—ˆ๋˜ ํŒŒ์ผ ๋‚ด์šฉ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.

<Proxy "balancer://tomcat_cluster"> # "balancer://tomcat_cluster"๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๊ทธ๋ฃน๋ช…
    BalancerMember {{ WAS1 }} route=was1
    BalancerMember {{ WAS2 }} route=was2

    ProxySet lbmethod=byrequests
</Proxy>

ProxyPass    /board  balancer://tomcat_cluster/board
ProxyPassReverse     /borad  balancer://tomcat_cluster/board

{{ WAS1 }}๊ณผ {{ WAS2 }} ์—๋Š” ๊ฐ๊ฐ์˜ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋‚˜ IP๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ์•„๋‹ˆ๋ฉด /etc/hosts์— IP๋ฅผ ๋™๋กํ•˜๊ณ  ํ˜ธ์ŠคํŠธ๋ช…์„ ์ž…๋ ฅํ•ด๋„ ๋œ๋‹ค.

2๏ธโƒฃ HAProxy+Keepalived ํ™œ์šฉ

HAProxy์™€ Keepalived๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ๋ณ„๋„์˜ ์„œ๋ฒ„ 2 ๋Œ€๋ฅผ ์ค€๋น„ํ•œ๋‹ค. Apache๊ฐ€ ์žˆ๋Š” WEB ์„œ๋ฒ„๋‚˜ Tomcat์ด ์žˆ๋Š” WAS ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๋ฉด ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ HAProxy์—๋„ ๊ฐ™์ด ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  HAProxy๋ฅผ ํ•œ ๋Œ€๋งŒ ์žˆ์œผ๋ฉด ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ  ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ๋‹ค์Œ ํŒจํ‚ค์ง€๋ฅผ ์„œ๋ฒ„์— ์„ค์น˜ํ•ด ํ™œ์„ฑํ™”ํ•œ๋‹ค.

1. HAProxy ์„ค์น˜

# HAProxy ์„ค์น˜
sudo dnf update -y
sudo dnf install -y haproxy

# HAProxy ํ™œ์„ฑํ™”
sudo systemctl enable haproxy
sudo systemctl start haproxy

2. ๋ฐฉํ™”๋ฒฝ ์„ค์ •

# ๋ฐฉํ™”๋ฒฝ ์„ค์ •
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

3. HAProxy ์„ค์ •

ํ˜น์‹œ ๋ชจ๋ฅผ ์ƒํ™ฉ์„ ๋Œ€๋น„ํ•ด ๋จผ์ € ๊ธฐ์กด ์„ค์ •์„ ๋ฐฑ์—…ํ•œ๋‹ค. 

# ๊ธฐ์กด ์„ค์ • ๋ฐฑ์—…
sudo cp \
/etc/haproxy/haproxy.cfg \
/etc/haproxy/haproxy.cfg.bak

๊ทธ๋ฆฌ๊ณ  /etc/haproxy/haproxy.cfg๋ฅผ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋ณ€๊ฒฝํ•œ๋‹ค.

WEB ์„œ๋ฒ„๊ฐ€ 80ํฌํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— bind ๋ถ€๋ถ„์„ 80์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Apache๋กœ WEB ์„œ๋ฒ„๊ฐ€ ๋”ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์–ด์„œ backend static์€ ์ฃผ์„์ฒ˜๋ฆฌํ–ˆ๋‹ค.

4. Keepalived ์„ค์ •

# keepalived ์„ค์น˜
sudo dnf install keepalived -y

keepalived๋ฅผ ๋จผ์ € ์„ค์น˜ํ•˜๊ณ  /etc/keepalived/keepalived.conf๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ๋‚˜๋Š” ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ํ˜น์‹œ ๋ชจ๋ฅผ ์ƒํ™ฉ์„ ๋Œ€๋น„ํ•ด ๋ฐฑ์—…์šฉ์œผ๋กœ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹ค.\

# Master ์„œ๋ฒ„ ์„ค์ •
! Configuration File for keepalived
vrrp_script chk_haproxy {
    script "/usr/bin/killall -0 haproxy"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface { ip addr๋กœ ํ™•์ธํ•œ ํ˜„์žฌ ๋‚ด ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค }
    virtual_router_id 51
    priority 100
    advert_int 1
    unicast_src_ip { HAProxy1 IP ์ฃผ์†Œ }
    unicast_peer {
        HAProxy2 IP ์ฃผ์†Œ
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        { ๊ฐ€์ƒ IP ์ฃผ์†Œ }
    }
    track_script {
        chk_haproxy
    }
}

๋‹ค๋ฅธ HAProxy ์„œ๋ฒ„์˜ keepalived.conf๋„ ์ž‘์„ฑํ•˜๋Š”๋ฐ state๋Š” BACKUP์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  priority๋Š” MASTER ์„œ๋ฒ„๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  multicast๋กœ ํ•  ๋•Œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ๋‚˜๋Š” unicast๋กœ ๋™์ž‘ํ•˜๋„๋ก ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ unicast๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด HAProxy1์€ ์œ„์ฒ˜๋Ÿผ ํ•˜๊ณ  HAProxy2๋Š” unicast_src_ip๋ฅผ HAProxy2 IP ์ฃผ์†Œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  unicast_peer์—๋Š” HAproxy1 IP ์ฃผ์†Œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

5. Apache ์ˆ˜์ •

WEB ์„œ๋ฒ„ ์ฆ‰, Apache์—์„œ ๊ธฐ์กด์— Tomcat์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜๋˜ ๊ฒƒ์„ HAProxy๋ฅผ ๊ฑฐ์ณ์„œ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋•Œ ์ฃผ์†Œ๋Š” keepalived๋กœ ํ• ๋‹นํ•œ ๊ฐ€์ƒ IP์ฃผ์†Œ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

# ProxyPass ๋Œ€์ƒ์„ HAProxy๋กœ ๋ณ€๊ฒฝ
ProxyPass    /board  http://{ Keepalived๋กœ ํ• ๋‹นํ•œ ๊ฐ€์ƒIP }:8080/board
ProxyPassReverse     /board  http://{ Keepalived๋กœ ํ• ๋‹นํ•œ ๊ฐ€์ƒIP }:8080/board

3๏ธโƒฃํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

HAProxy1 ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒํ•˜๋‹ˆ๊นŒ HAProxy2 ์„œ๋ฒ„๊ฐ€ MASTER๋กœ ์Šน๊ฒฉํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด HAProxy ๋‹จ์ผ ์ง€์  ์žฅ์•  ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ WAS ์ด์ค‘ํ™”๋Š” JMeter๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์„œ ์ถ”ํ›„์— ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๊ฒ ๋‹ค!

4๏ธโƒฃmod_proxy์™€ HAProxy ๋น„๊ต

ํ•ญ๋ชฉ Apache(mod_proxy) HAProxy
์ฃผ ์—ญํ•  ์›น ์„œ๋ฒ„ + ๊ฐ„๋‹จํ•œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ „์šฉ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ
์„ฑ๋Šฅ ๋ณดํ†ต ๋งค์šฐ ๋†’์Œ
๋Œ€๋Ÿ‰ ๋™์‹œ ์ ‘์† ๊ฐ€๋Šฅ ๋งค์šฐ ๊ฐ•ํ•จ
Health Check ๊ธฐ๋ณธ ์ง€์› ๋‹ค์–‘ํ•œ ๋ฐฉ์‹ ์ง€์›
์„ธ์…˜ ์œ ์ง€ ์ง€์› ์ง€์›(์„ค์ • ๋‹ค์–‘)
๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹ ๋งค์šฐ ๋‹ค์–‘
ํ†ต๊ณ„ ํŽ˜์ด์ง€ ์ œํ•œ์  ํ’๋ถ€ํ•œ ํ†ต๊ณ„ ์ œ๊ณต
์‹ค๋ฌด ์‚ฌ์šฉ ์†Œ๊ทœ๋ชจ ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉ

๐Ÿ’กํšŒ๊ณ 

์ด์ „์— ๋ฏธ๋ž˜๋‚ด์ผ์ผ๊ฒฝํ—˜์„ ํ†ตํ•ด์„œ ์ธํ„ด์„ ํ•  ๋•Œ ์˜†์— ๊ณ„์‹  ๋Œ€๋ฆฌ๋‹˜๊ป˜์„œ DB๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ๊ฐ€์ƒ IP๋ฅผ ํ™œ์šฉํ•ด์„œ ์—ฐ๊ฒฐํ•œ๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์…จ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ€์ƒIP๋ฅผ ์–ด๋–ป๊ฒŒ ํ• ๋‹นํ•˜๋Š”์ง€ ๋‚˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์ง€ ๋ชปํ•ด์„œ ๊ถ๊ธˆํ•ดํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด์ค‘ํ™”ํ•˜๋ฉด์„œ ์–ด๋–ป๊ฒŒ ๊ฐ€์ƒIP๋ฅผ ํ• ๋‹นํ•˜๋Š”์ง€ ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์€ ํ•™์Šต๊ฒฝํ—˜์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค!๐Ÿ˜†


๐Ÿ”—์ฐธ๊ณ  ์‚ฌ์ดํŠธ

  • https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/7/html/load_balancer_administration/ch-initial-setup-vsa#s3-initial-setup-conf-file-global-VSA
  • https://nginxstore.com/blog/haproxy/haproxy-keepalived-%EC%9D%B4%EC%A4%91%ED%99%94-%EA%B5%AC%EC%84%B1-%EA%B0%80%EC%9D%B4%EB%93%9C/
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'OS&Server > WEB | WAS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[WEB/WAS] Apache โ†” Tomcat ์—ฐ๋™(Reverse Proxy)  (0) 2026.02.04
[WEB/WAS] NGINX๋ž€?  (2) 2025.07.03
'OS&Server/WEB | WAS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [WEB/WAS] Apache ↔ Tomcat ์—ฐ๋™(Reverse Proxy)
  • [WEB/WAS] NGINX๋ž€?
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (204)
      • OS&Server (31)
        • Linux (28)
        • WEB | WAS (3)
      • Architecture (9)
      • Cloud (8)
        • AWS (4)
        • GCP (4)
      • Container (13)
        • Docker (4)
        • Kubernetes (9)
      • IaC | DevOps (12)
        • IaC (7)
        • DevOps (5)
      • Observability (6)
      • CS (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (99)
        • Algorithms (91)
        • SQL (7)
      • ETC (9)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    Linux
    ๋ฐฑ์ค€
    bfs
    ๋„์ปค
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    Baekjoon
    Java
    terraform
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    AWS
    network
    docker
    Shell Script
    Kubernetes
    ์ž๋ฐ”
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    K8s
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    Shell
    ๋ฆฌ๋ˆ…์Šค
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    ๋„คํŠธ์›Œํฌ
    programmers
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์˜ค๋ธ”์™„
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[WEB|WAS] WAS ์„œ๋ฒ„ ์ด์ค‘ํ™”
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”