[Docker] nginx web server๋ฅผ ์ด์šฉํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ

๋ฐ˜์‘ํ˜•

์ตœ๊ทผ ๋“ค์–ด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ํ™œ์šฉํ•˜๋ ค ๋…ธ๋ ฅํ•˜๋ฉด์„œ๋„ ๊ฐ€๋”์€ Docker๋ฅผ ๋‹ค์‹œ ๋Œ์•„๋ณด๋Š” ๊ฒฝํ–ฅ์ด ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ๊ทธ ์ค‘์—์„œ๋„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์€ ์—ฌ๋Ÿฌ๋ชจ๋กœ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ 100๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Docker Compose, Docker Swarm์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค๋Š” ์ . ์ด ๋ถ€๋ถ„์€ ์ˆ˜๋™์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋งŽ์ด ๋œ์–ด์ฃผ์—ˆ๊ณ , ๊ทธ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์šด์˜์„ ๋งŽ์ด ์„ ํ˜ธํ–ˆ๋˜ ์ ์ด ๊ธฐ์–ต์— ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.

์„œ๋ก ์„ ์ ‘๊ณ , ์ด์ œ ๋ณธ๋ก ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ณด์ฃ . ์ด์ „์— ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์— ๋Œ€ํ•œ ๊ธ€์„ ์˜ฌ๋ ธ๋˜ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์€ ์‹ค๋ฌด์—์„œ ๋งŽ์ด ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ ์ด์ง€๋งŒ ์ด๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ญ์‹œ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

2020/06/02 - [Infrastructure/Network] - [Network] Load Balancing (๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ)์˜ ๊ฐœ๋…๊ณผ ์ดํ•ด

 

[Network] Load Balancing (๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ)์˜ ๊ฐœ๋…๊ณผ ์ดํ•ด

์ฒ˜์Œ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ , ์ด๋ฅผ ์šด์˜ํ•˜๋Š” ๋ฐ๊นŒ์ง€ ๋งŽ์€ ํ•™์Šต ์‹œ๊ฐ„์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด Servlet, JSP, Spring์„ ๋ฐฐ์šฐ๊ฒŒ ๋˜์—ˆ๊ณ , ๋‚˜์•„๊ฐ€์„œ๋Š” ๋” ๋‚˜์€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด Flask

blog.neonkid.xyz

 

nginx

nginx๋Š” ์›น ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜๋กœ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ์šด์˜๋˜๊ณ  ์žˆ๋Š” ์ž‘์€ ์›น ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ์ด์ „์—๋Š” apache2 ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์ตœ๊ทผ์—๋Š” nginx ์›น ์„œ๋ฒ„๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ฃ . ์™œ ๊ทธ๋ ‡๋ƒ๊ตฌ์š”? ๊ทธ ์ ์€ ๋ฐ”๋กœ ์›น ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ์ฐจ์ด ๋“ฑ์ด ์žˆ๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์€ ํ˜„์žฌ ๋‹ค๋ฃจ๊ณ ์ž ํ•˜๋Š” ์ฃผ์ œ์™€ ์กฐ๊ธˆ ์—ฐ๊ด€์„ฑ์ด ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ, ๋‹ค๋ฅธ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑํ•˜๊ธฐ ์œ„ํ•ด nginx ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. nginx ์›น ์„œ๋ฒ„์—์„œ๋Š” ์š”์ฒญ์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ nginx๋ฅผ ์„ค์น˜ํ•˜๊ณ , Spring boot ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์‹œ์ผœ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

$ sudo apt install nginx

์„ค์น˜๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด, ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ nginx service๊ฐ€ active (running) ์ธ์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์ž˜ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

 

Create Docker Container

์„œ๋น„์Šคํ•˜๊ณ ์ž ํ•˜๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์•ผ๊ฒ ์ฃ ? ์ €๋Š” ๊ฐ„๋‹จํ•œ Spring boot Application์„ 1๊ฐœ ๋งŒ๋“ค์–ด์„œ, ํฌํŠธ ์ฃผ์†Œ๋ฅผ ๊ฐ๊ฐ 3000, 4000, 5000๋ฒˆ ํฌํŠธ๋ฅผ ์ฃผ๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

FROM 	openjdk:8-jdk-alpine
EXPOSE  ${SERVER_PORT}
ARG		JAR_FILE=build/libs/*.jar
COPY	${JAR_FILE}	app.jar
ENTRYPOINT	["java", "-jar", "/app.jar", "$@"]

๊ธฐ์กด์˜ Dockerfile์—์„œ EXPOSE๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ช…๋ น์–ด ์ธ์ž๋ฅผ ์ฃผ๊ณ , Server Port๋ฅผ ์„ค์ •ํ•˜๋ฉด, Docker ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์‹œ, ๋ช…๋ น์–ด์— ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์›ํ•˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# docker run -d -e SERVER_PORT 3000 -p 3000:3000 --name dockerexample01 neonkid/dockerexample

์œ„ ๋ช…๋ น์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ 3๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

 

 

Load Balancing Settings

๋งˆ์ง€๋ง‰์œผ๋กœ nginx ์›น ์„œ๋ฒ„์—์„œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$ netstat -anp | grep LISTEN

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์—, ์šฐ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ค€ 3000 ~ 5000๋ฒˆ ํฌํŠธ์˜ ์„œ๋น„์Šค์™€ nginx ์›น ์„œ๋ฒ„๊ฐ€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.

 

 

๊ทธ๋Ÿฐ ๋‹ค์Œ nginx ์„ค์ • ํŒŒ์ผ์„ ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…์„ ๋“œ๋ฆฌ์ž๋ฉด, upstream์€ ์„œ๋น„์Šคํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค๋“ค์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. upstream์˜ ๋œป์€ ์ƒ๋ฅ˜๋ผ๋Š” ๋œป์ธ๋ฐ, nginx๊ฐ€ ์ƒ๋ฅ˜์— ์žˆ๊ณ , ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น upstream์—์„œ ์•„๋ž˜๋กœ ๋ฟŒ๋ ค์งˆ ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  upstream ์˜†์—๋Š” ํ•ด๋‹น ์ƒ๋ฅ˜๊ฐ€ ์–ด๋–ค ์„œ๋น„์Šค์ธ์ง€ ํƒœ๊น…ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์ ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

nginx๋Š” ์ •์  ํŽ˜์ด์ง€ ๋กœ๋”ฉ์— ์ตœ์ ํ™”๋œ ์›น ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋’ค์— ๋ถ™์—ฌ์ง€๋Š” ์ •์  ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด์„œ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ์ƒ์œ„ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— proxy_pass๋ฅผ ์ด์šฉํ•˜์—ฌ nginx๋ฅผ ํ”„๋ก์‹œ ์„œ๋ฒ„๋กœ ์‚ผ๊ณ  upstream ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ์„œ๋ฒ„๋กœ ํ†ต๊ณผ์‹œํ‚ค๋„๋ก ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ๋งˆ๋‹ค ์ ‘์† ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณ„์† ๋ฐ”๋€Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

nginx์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹

์šฐ๋ฆฌ๋Š” nginx ์›น ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด๊ฒจ์ง„ ์„œ๋น„์Šค๋ฅผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ nginx๊ฐ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์„œ๋น„์Šค๋Š” Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฐ›๋Š” ์›๋ฆฌ์ธ ๊ฒƒ์ด์ฃ .

๊ทธ๋ ‡๋‹ค๋ฉด nginx ์›น ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ๊ณ ์นจ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์ ‘์†ํ•˜์˜€์ง€๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋“ค๋ผ๋ฆฌ ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฒ ์ฃ ?

  • RR (Round-Robin, default): ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • hash: hash ๊ฐ’์œผ๋กœ ๋ถ„๋ฐฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ex) hash $remote_address๋กœ ip_hash ๊ฒฐ์ •
  • ip_hash: ์ ‘์†ํ•œ IP ์ฃผ์†Œ๋ฅผ hashing ํ•˜์—ฌ ๋ถ„๋ฐฐ
  • random: ๋ฌด์ž‘์œ„๋กœ ๋ถ„๋ฐฐ
  • least_conn: WLC ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋™์ผ (์ ‘์†์ˆ˜๊ฐ€ ์ ์€ ์ˆ˜๋ฅผ ๋ถ„๋ฐฐํ•˜๋˜, ๊ฐ€์ค‘์น˜ ์„ค์ •)
  • least_time: ์—ฐ๊ฒฐ์ˆ˜๊ฐ€ ์ ์œผ๋ฉด์„œ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ ์€์ชฝ์„ ์„ ํƒํ•˜์—ฌ ๋ถ„๋ฐฐ (SED ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌ)

๊ธฐ์กด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•œ ํ˜•ํƒœ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋„ ์žˆ๊ณ , ์•„์˜ˆ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋“ค์— ์•Œ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ˜„๋ช…ํ•œ ์„ ํƒ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค

๋งŒ์•ฝ, ip_hash๋ฅผ ์ค€๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด..

์ ‘์†ํ•œ IP์™€ ๋งคํ•‘์‹œํ‚จ upstream์„ ํ•ด์‰ฌ๊ฐ’์œผ๋กœ ์ €์žฅํ•˜์—ฌ ๋ถ„๋ฐฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์ ‘์†ํ•œ IP๋Š” ํ•ญ์ƒ ์ด ์ธ์Šคํ„ด์Šค๋กœ๋งŒ ์ ‘์†ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋ ๊นŒ์š”?

์ด๋ ‡๊ฒŒ ์ตœ์†Œ ์—ฐ๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•œ ๋’ค, ์›ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ์ฃผ์†Œ ์˜†์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฃผ์–ด์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • weight: ๊ฐ€์ค‘์น˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž๋ฅผ ๋ฐ›๋„๋ก ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ
  • max_conns: ์ตœ๋Œ€ ๊ฐ€์šฉ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ
  • max_fails: ์ตœ๋Œ€ ์‹คํŒจ ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ, ์ตœ๋Œ€ ์‹คํŒจ ํšŸ์ˆ˜๊ฐ€ ๋„๋‹ฌํ•  ๊ฒฝ์šฐ, nginx๊ฐ€ ๋” ์ด์ƒ ์ด ์ธ์Šคํ„ด์Šค๋ฅผ ๋ถ„๋ฐฐํ•˜์ง€ ์•Š์Œ
  • fail_timeout: ์‘๋‹ต ์ตœ์†Œ ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ, ์‘๋‹ต ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์‹คํŒจ ํšŸ์ˆ˜ ์นด์šดํŠธ๊ฐ€ ์ฆ๊ฐ€๋จ
  • backup: ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ์„ค์ •, ๋‹ค๋ฅธ ๋ฉ”์ธ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€๋งŒ hash๋‚˜ random ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Œ
  • down: ํ•ด๋‹น ์„œ๋ฒ„๋Š” ์ฃฝ์—ˆ์Œ์„ ํ‘œ์‹œํ•˜๊ณ , ๋ถ„๋ฐฐํ•˜์ง€ ์•Š์Œ

๋‹ค์–‘ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ์ธ์Šคํ„ด์Šค ๋ถ„๋ฐฐ ๋ฐฉ์‹์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ ์€ ๋ฉ”๋ฆฌํŠธ ์žˆ์–ด ๋ณด์ด๋„ค์š”.

 

 

๋งˆ์น˜๋ฉฐ...

์—ฌ๊ธฐ๊นŒ์ง€ nginx ์›น ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, nginx ์›น ์„œ๋ฒ„๊ฐ€ ๋น„๊ต์  ๊ฐ€๋ณ๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•œ ์žฅ์ ์€ ์žˆ์ง€๋งŒ ๊ตณ์ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์œ„ํ•ด์„œ nginx ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด๋งŒํ• ๊นŒ์š”? ๊ผญ ๊ทธ๋ ‡์ง€๋งŒ์€ ์•Š์Šต๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•ด์„œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, 

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” HAProxy๋ฅผ ์ด์šฉํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments