
Image: HAProxy Logo from Wikimedia Commons, CC BY-SA 4.0
์ธํ๋ผ ํ์ ๊ฐ์ฅ ํฐ ๋ชฉํ๋ ์๋น์ค์ ์ฅ์ ๋ฅผ ์ต์ํํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ณผ์ ์์ ๋ฌผ๋ก ๊ธฐ์ ์ ๊ณ ๋ํํ๋ ๊ฒ๋ ์ค์ํ์ง๋ง, ๋น์ฅ ๋์ธ ํ๊ฒฝ์์ ๊ธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ ๋๋ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์ ๊ฐ ์ฒ์์ผ๋ก ๋น์ค ์๊ฒ ์ฐธ์ฌํ๊ฒ ๋ ์ ๋ฌด๊ฐ HAProxy ๋์ ์ด์์ต๋๋ค.
HAProxy๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํ์ ์์๊ณ ์ด์ ๋ง ํ์ฌ์ ์ ์ ์ค์ด์๊ธฐ ๋๋ฌธ์, ๋ง์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ ๊ณผ์ ์ ๋์๋ณด๊ณ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ HAProxy๋ฅผ ์ฌ์ฉํ๋์?
ํ์ฌ ํ์ฌ์์๋ Docker Compose๋ฅผ ํตํด ์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค.
์์ฃผ ๊ฐ๋จํ๊ฒ ๋ํ๋ด๋ฉด ์์ NGINX๊ฐ ์๊ณ , ์ฌ๋ฌ ๊ฐ์ ์ปจํ
์ด๋๋ก ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ํํ์
๋๋ค.

ํ์ง๋ง ํฐ ๋ฌธ์ ๊ฐ ํ๋ ์์๋๋ฐ, NGINX๋ ์ต์ด ์์ ๋๋ ์ฌ์์ ๋๋ง ๋๋ฉ์ธ์ IP๋ฅผ ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํด๋ IP ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง์ง ์๊ณ , ๋ฐ๋ผ์ ๋ฐฐํฌ ๋๋ง๋ค ์๋จ์ด ๋ฐ์ํ๊ณ ์์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ฐ์ HAProxy๋ฅผ ๋์ด ๋์ ์ผ๋ก ์ปจํ
์ด๋์ IP๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ๋์์ต๋๋ค.
(์ถ๊ฐ๋ก ์กฐ์ฌํ์ ๋ ํ์ฌ ๊ตฌ์กฐ์์ ํด๊ฒฐํ ์๋ ์์์ ๊ฒ ๊ฐ์๋ฐ, ๊ณต์์ ์ธ ๋ฐฉ๋ฒ์ ์๋์์ต๋๋ค.)

๋์ ํ๋ฉฐ ๊ฒช์ ๋ฌธ์ ๋ค
HAProxy๋ฅผ ์ค๊ฐ์ ๋๋ ๊ฒ ์์ฒด๋ ํฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
NGINX์์ ์์ฒญ์ ๋ฐ์ ์น ์ปจํ
์ด๋๋ก ์ ๋ฌํ๋๋ก ์ค์ ํ์ผ์ ์์ฑํ๊ณ , ๊ทธ ํ์ผ๋ง ๋ฎ์ด์์ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ค์ ๋ก ์ค์ ํ์ผ์ ์ ์ธํ๋ฉด ์์ ํ ๋ถ๋ถ์ด ๋ง์ง ์์์ต๋๋ค.
ํ์ง๋ง ์ค์ ๊ณผ์ ์์ ์ ๊ฒฝ ์ธ ๋ถ๋ถ์ด ๋ง์์ต๋๋ค. ์ฃผ๋ก ์ค์ ํ๋ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
Resolvers
Docker Compose ํ๊ฒฝ์์ DNS ๋งคํ์ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด/etc/resolv.confํ์ผ์ ์ ์๋ ๋ค์์๋ฒ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.# ... resolvers custom-dns parse-resolv-conf # ... -
Timeout
๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ค์ ์ฐธ๊ณ ํด์ ์๋ง์ ๊ฐ์ ์ค์ ํด์ผ ํฉ๋๋ค.
HAProxy์์๋ง ์ค์ ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ์๊ธฐ์น ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. -
๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฐฉ๋ฒ
๋ถํ ๋ถ์ฐ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ํ ์ ์์ต๋๋ค.
์ ํฌ๋ ํน๋ณํ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ์ง ์์๊ธฐ ๋๋ฌธ์roundrobin์ ์ฌ์ฉํ์ต๋๋ค. -
์๋ฒ ์ํ ํ์ธ
HAProxy๋ฅผ ๋์ ํ ์ด์ ์ ๋๋ค. ์ปจํ ์ด๋ ์ํ๋ฅผ ํ์ธ ๊ฐ๋ฅํ URL์ ์ค์ ํ๊ณ , ์ฃผ๊ธฐ์ ์ฌ์ฐ๊ฒฐ โฆ ์ฐ๊ฒฐ ํด์ ์กฐ๊ฑด๋ ์ ํ ์ ์์ต๋๋ค.ํ์ง๋ง ํ ๊ฐ์ง ๋ ๊ณ ๋ คํด์ผ ํ ๋ถ๋ถ์ด ์์๋๋ฐ, ํ๊ฒฝ๋ณ๋ก ์ฐ๊ฒฐํด์ผ ํ๋ ์ปจํ ์ด๋ ์๊ฐ ๋ฌ๋ผ ์ด์ ๋ํ ๋์์ด ํ์ํ์ต๋๋ค. ์ด๋ฅผ ์ํด server-template์ ์ฌ์ฉํ๋๋ฐ, ํด๋น ์ต์ ์ ์ฌ์ฉํ๋ฉด ํน์ ์ด๊ตฌ๋ก ์์ํ๋ ์๋ฒ๋ค์ ๋ชจ๋ ๊ฐ์งํด ์ฐ๊ฒฐํ๊ณ , ์ค์ ํ ์๋ณด๋ค ์ปจํ ์ด๋ ์๊ฐ ์ ์ด๋ ์ฐ๊ฒฐ์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์ต๋๋ค.
๊ทธ ์ธ
- HAProxy์๋ ์ํ ํ์ธ์ ์ํ ๊ฐ๋จํ ๋์๋ณด๋๊ฐ ์๊ณ , ๋ฉํธ๋ฆญ ์์ง๊ณผ ๋ชจ๋ํฐ๋ง ๊ด๋ จ ๊ธฐ๋ฅ๋ ์ง์ํฉ๋๋ค.
Datadog์ด๋ Grafana ๋ฑ๊ณผ ์ฐ๋๋ ๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ง ์ด๊ฒ์ด HAProxy๋ฅผ ๋์ ํ ์ด์ ๋ ์๋์๊ธฐ ๋๋ฌธ์, ์ต์ํ์ ๊ธฐ๋ฅ๋ง ์ค์ ํ์ต๋๋ค. - ์ค์ ํ์ผ์ ๋ง์ดํธ ํ๋ ๋ฐฉ์์ด๋ผ๋ฉด, Graceful reload ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. (๋งํฌ)
- ์ต๋ ์ฐ๊ฒฐ ์๋ ์ค์ ํ ์ ์๋๋ฐ, ๋ฐ๋ก ์ ํ์ ๋์ง๋ ์์์ต๋๋ค.
๋ง์น๋ฉฐ
์ด๋ฒ ์ฃผ์ ์์
์ด ๋ง๋ฌด๋ฆฌ๋์๊ณ , ์ค์ ๋ก ๋์ DNS ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
๋ค๋ง ์ด ๊ณผ์ ์์ ์ฑ๊ธฐ์ง ๋ชปํ ๋ถ๋ถ์ด ์์ด ์ฅ์ ์ํฉ์ด ๋ฐ์ํ๊ธฐ๋ ํ๊ณ , ์ ๋ ํ
์คํธ ๊ณผ์ ์์ ๋ฏธ์ํ ๋ถ๋ถ์ด ์์์ต๋๋ค.
์ฒ์์ผ๋ก ํฐ ์์
์ ์งํํ ๊ฒ์์ ๊ณ ๋ คํด๋ ์์ฌ์ด ์ ์ด ๋ง์์ต๋๋ค.
์์ง ์ธํ๋ผ ํ์๋ ํด๊ฒฐํด์ผ ํ ๊ณผ์ ๊ฐ ๋ง์ต๋๋ค. ํ๋์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด์ ๋ ๋์ ํ๊ฒฝ์ ๋ง๋ค๊ณ , ์ ๋ํ ๋ ์ฑ์ฅํ ์ ์๋๋ก ๋ ธ๋ ฅํด์ผ ํ ๊ฒ ๊ฐ๋ค์.