IT/DevOps

[AWS] ๊ฐœ๋ณ„ EC2 ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ• – Nginx ๋ฆฌ๋ฒ„์Šคํ”„๋ก์‹œ + Tomcat 2๋Œ€

๊ผฌ๋น„๋žฉ 2025. 2. 15.

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์•„ํ‚คํ…์ฒ˜ ๋ฒ„์ „2๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃฌ๋‹ค.

๋ฒ„์ „1์—์„œ๋Š” Web, WAS1,2๋ฒˆ์„ ํ•˜๋‚˜์˜ EC2 ์ธ์Šคํ„ด์Šค์—์„œ Docker compose๋กœ ๊ด€๋ฆฌํ–ˆ์ง€๋งŒ

์ด๋ฒˆ์—๋Š” ๊ฐ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ณ„ EC2 ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„๋ฆฌํ–ˆ๊ณ  ๊ฐ ์„œ๋ฒ„์—์„œ Docker๋กœ ์ปจํ…Œ์ด๋„ˆ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

ํฌ๊ฒŒ ์–ด๋ ค์šธ ๊ฑด ์—†๊ณ  ์ค‘์š”ํ•œ ์ ์€ WAS1,2๋ฒˆ ์„œ๋ฒ„์—์„œ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์— EC2 1๋ฒˆ Nginx ์„œ๋ฒ„์—๊ฒŒ 9090, 9091ํฌํŠธ(๊ฐœ๋ฐœ์ž ๋งˆ์Œ)๋ฅผ ํ—ˆ์šฉํ•ด์ค˜์•ผ ํ•˜๊ณ  RDS์—์„œ 2,3๋ฒˆ EC2 ์„œ๋ฒ„์—๊ฒŒ 3306ํฌํŠธ๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ฒซ๋ฒˆ ์งธ EC2 ์ธ์Šคํ„ด์Šค์— ํ”„๋ฆฌํ‹ฐ์–ด ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰์„ ์ตœ๋Œ€์น˜์ธ 30GB๋ฅผ ํ• ๋‹นํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 2๋ฒˆ ์งธ 3๋ฒˆ ์งธ ์ธ์Šคํ„ด์Šค์˜ ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰์€ t2.micro ์œ ํ˜•์˜ ์ตœ์†Œ์šฉ๋Ÿ‰์ธ 8GB๋กœ ํ• ๋‹นํ•ด์„œ ์ƒ์„ฑํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์™ธ๋ถ€์—์„œ ์ ‘์† ํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒ„๋ ฅ์  IP ๊ฐ๊ฐ ํ• ๋‹น ํ›„ ์—ฐ๊ฒฐํ–ˆ๋‹ค.(ํƒ„๋ ฅ์  IP ํ˜„์žฌ 3๊ฐœ ์—ฐ๊ฒฐ)

๋ณด์•ˆ๊ทธ๋ฃน ์„ค์ •

WAS ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  EC2 2,3๋ฒˆ ์งธ ์ธ์Šคํ„ด์Šค์˜ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์—์„œ WebServer์—๊ฒŒ ํฌํŠธ๋ฅผ ํ—ˆ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค.

2๋ฒˆ ์งธ EC2์—์˜ WAS์—์„œ 9090ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฑฐ๋ผ 1๋ฒˆ ์งธ EC2 ์ธ์Šคํ„ด์Šค์—๊ฒŒ 9090ํฌํŠธ๋ฅผ ์—ด์–ด์คฌ๋‹ค.

3๋ฒˆ ์งธ EC2์—์„œ๋„ 9091ํฌํŠธ๋ฅผ 1๋ฒˆ ์งธ EC2 ์ธ์Šคํ„ด์Šค์—๊ฒŒ ํ—ˆ์šฉํ•ด์คฌ๋‹ค.

EC2 1 ์ธ์Šคํ„ด์Šค(Nginx)

EC2 1 ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ Dockerfile๊ณผ nginx.confํŒŒ์ผ๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค.

Dockerfile

์ตœ์‹  nginx ๋ฒ„์ „์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  nginx.conf๋ฅผ ๋ณต์‚ฌ ํ•œ ๋’ค 80์œผ๋กœ ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•œ๋‹ค.

nginx.conf

upstream์—์„œ  server๋’ค์˜ ์•„์ดํ”ผ๋ฅผ EC2 2,3๋ฒˆ์˜ private IP๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

AWS ํ™˜๊ฒฝ๋‚ด์—์„œ ๊ฐ™์€ VPC์•ˆ์— ์†ํ•ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์„ค ์•„์ดํ”ผ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

EC2 2 ์ธ์Šคํ„ด์Šค(Tomcat 1)

ํ…Œ์ŠคํŠธ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ warํŒŒ์ผ๊ณผ Dockerfile๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค.

Dockerfile

tomcat ์ด๋ฏธ์ง€ ๋นŒ๋“œ ํ›„ ์—ญ์‹œ warํŒŒ์ผ์„ ๋ฐฐํฌ๊ฒฝ๋กœ์— ์˜ฎ๊ธด ๋’ค ์‹คํ–‰ํ•œ๋‹ค.

EC2 3 ์ธ์Šคํ„ด์Šค(Tomcat 2)

EC2 2๋ฒˆ ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•˜๊ณ  ํฌํŠธ์™€ warํŒŒ์ผ๋งŒ ๋‹ค๋ฅด๋‹ค.

๋ฌธ์„œํ™” ํ•˜๋Š” ๋ถ€๋ถ„(EXPOSE)์ด 9090์œผ๋กœ ์ž˜๋ชป ๋˜์–ด ์žˆ์–ด์„œ ppt๋กœ ํŽธ์ง‘์„ ํ–ˆ๋‹ค.(์—ฌ๊ธฐ์„  9091์„ ์‚ฌ์šฉํ•œ๋‹ค)

์‹คํ–‰

Nginx

Dockerfile๋ฅผ ๋จผ์ € ๋นŒ๋“œํ•œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

Tomcat 1

๋นŒ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

Tomcat 2

๋นŒ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

๊ฒฐ๊ณผ ํ™•์ธ

๋ธŒ๋ผ์šฐ์ €์—์„œ 1๋ฒˆ EC2 ์ธ์Šคํ„ด์Šค์˜ public ip๋ฅผ ํ˜ธ์ถœ ํ–ˆ์„ ์‹œ tomcat1,2๋ฒˆ์˜ ๋กœ๊ทธ๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

์˜ˆ์ƒ๋Œ€๋กœ Tomcat1๋ฒˆ๊ณผ 2๋ฒˆ์— ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

AWS ํ™˜๊ฒฝ์œผ๋กœ ์ธํ•ด ๋งˆ์šฐ์Šค ๋”ธ๊น ๋”ธ๊น๊ณผ Docker๋กœ ๊ธˆ๋ฐฉ ๊ตฌํ˜„์„ ํ–ˆ๋‹ค.


๊ฐœ์ธ ์Šคํ„ฐ๋”” ๊ธฐ๋ก์„ ๋ฉ”๋ชจํ•˜๋Š” ๊ณต๊ฐ„์ด๋ผ ํ‹€๋ฆฐ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‹€๋ฆฐ ์  ์žˆ์„ ๊ฒฝ์šฐ ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋Œ“๊ธ€