
์๋
ํ์ธ์, ํ๋ธ๋ฅด! ์ ๋ ์์คํ
๊ด๋ฆฌํ์ฅ์ธ Artem Karamyshev์
๋๋ค. . ์ง๋ํด์๋ ๋ง์ ์ ์ ํ์ด ์ถ์๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ API ์๋น์ค๊ฐ ์ฝ๊ฒ ํ์ฅ ๊ฐ๋ฅํ๊ณ , ๋ด๊ฒฐํจ์ฑ์ด ์์ผ๋ฉฐ, ์ฌ์ฉ์ ๋ถํ์ ๊ธ๊ฒฉํ ์ฆ๊ฐ์ ๋๋นํ ์ ์๋์ง ํ์ธํ๊ณ ์ถ์์ต๋๋ค. ์ ํฌ ํ๋ซํผ์ OpenStack์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์์ผ๋ฉฐ, ์ฅ์ ํ์ฉ ์์คํ
์ ๊ตฌ์ถํ๊ธฐ ์ํด ์ด๋ค ๊ตฌ์ฑ ์์์ ์ฅ์ ํ์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋์ง ์๋ ค๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. OpenStack์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ์ ๊ฐ๋ฐํ๋ ์ฌ๋๋ค์๊ฒ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๋ซํผ์ ์ ๋ฐ์ ์ธ ์ฅ์ ํ์ฉ๋๋ ๊ตฌ์ฑ ์์์ ์์ ์ฑ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ํ์ ์๋ณํ๊ณ ์ข ์์ํจ ๋ชจ๋ ์์ค์ ์ ์ง์ ์ผ๋ก ์ดํด๋ณผ ๊ฒ์ ๋๋ค.
์ด ์คํ ๋ฆฌ์ ๋น๋์ค ๋ฒ์ ์ Uptime 4์ผ์ฐจ ์ปจํผ๋ฐ์ค์์ ์กฐ์ง๋ ํ๋ ์ ํ
์ด์
์ ์๋ณธ ์์ค์
๋๋ค. , ๋น์ ์ ๋ณผ ์ ์์ต๋๋ค .
๋ฌผ๋ฆฌ์ ์ํคํ ์ฒ ๋ด๊ฒฐํจ์ฑ
MCS ํด๋ผ์ฐ๋์ ํผ๋ธ๋ฆญ ๋ถ๋ถ์ ํ์ฌ 200๊ฐ์ Tier III ๋ฐ์ดํฐ ์ผํฐ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ผ๋ฉฐ, ๋ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์๋ ๋ฌผ๋ฆฌ์ ์์ค์์ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์์ฝ๋ ํ๋ผ์ด๋น ๋คํฌ ํ์ด๋ฒ๊ฐ ์์ผ๋ฉฐ, ์ฒ๋ฆฌ๋์ XNUMXGbps์ ๋๋ค. XNUMX๋จ๊ณ ์์ค์ ๋ฌผ๋ฆฌ์ ์ธํ๋ผ์ ํ์ํ ์์ค์ ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋คํฌ ํ์ด๋ฒ๋ ๋ฌผ๋ฆฌ์ ์์ค๊ณผ ๋ ผ๋ฆฌ์ ์์ค ๋ชจ๋์์ ์์ฝ๋ฉ๋๋ค. ์ฑ๋ ์์ฝ ํ๋ก์ธ์ค๋ ๋ฐ๋ณต์ ์ด์์ผ๋ฉฐ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ ์ฐ๊ฒฐ์ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ผ๋ง ์ ๋ฐ์ดํฐ ์ผํฐ ๊ทผ์ฒ์ ์ฐ๋ฌผ์์ ์์ ํ๋ ์ค ๊ตด์ญ๊ธฐ๊ฐ ํ์ดํ๋ฅผ ๋ซ์๋๋ฐ, ์ด ํ์ดํ ์์์ ์ฃผ ๊ด์ผ์ด๋ธ๊ณผ ๋ฐฑ์ ๊ด์ผ์ด๋ธ์ด ๋ชจ๋ ๋ฐ๊ฒฌ๋์์ต๋๋ค. ๋ฐ์ดํฐ ์ผํฐ์์ ์์ ์ฅ์น ํต์ ์ฑ๋์ด ์ด๋ ์๊ฐ ์ฐ๋ฌผ์์ ์ทจ์ฝํ ๊ฒ์ผ๋ก ๋๋ฌ๋ฌ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ฐ๋ฆฌ๋ ์ธํ๋ผ์ ์ผ๋ถ๋ฅผ ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ๊ณ ์ธ์ ํ ์ฐ๋ฌผ์ ๋ฐ๋ผ ์ถ๊ฐ ๊ดํ ์ฅ์น๋ฅผ ์ค์นํ๋ ๊ฒ์ ํฌํจํ ์ฌ๋ฌ ๊ฐ์ง ์กฐ์น๋ฅผ ์ทจํ์ต๋๋ค.
๋ฐ์ดํฐ ์ผํฐ์๋ ํต์ ์ ๊ณต์์ ์ ์ ์ง์ ์ด ์์ผ๋ฉฐ, ์ฐ๋ฆฌ๋ BGP๋ฅผ ํตํด ์ ๋์ฌ๋ฅผ ๋ธ๋ก๋์บ์คํธํฉ๋๋ค. ๊ฐ ๋คํธ์ํฌ ๋ฐฉํฅ์ ๋ํด ๊ฐ์ฅ ์ ํฉํ ๋ฉํธ๋ฆญ์ด ์ ํ๋์ด ๋ค์ํ ํด๋ผ์ด์ธํธ์๊ฒ ์ต์์ ์ฐ๊ฒฐ ํ์ง์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํ ๊ณต๊ธ์ ์ฒด๋ฅผ ํตํ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ธ์ ์ฒด๋ฅผ ํตํด ๋ผ์ฐํ ์ ์ฌ๊ตฌ์ถํฉ๋๋ค.
๊ณต๊ธ์๊ฐ ์คํจํ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ค์ ๊ณต๊ธ์๋ก ์ ํ๋ฉ๋๋ค. ๋ฐ์ดํฐ ์ผํฐ ์ค ํ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ์ผํฐ์ ์๋น์ค์ ๋ฏธ๋ฌ ์ฌ๋ณธ์ ๋๊ณ ์ ์ฒด ๋ถํ๋ฅผ ๋ด๋นํฉ๋๋ค.

๋ฌผ๋ฆฌ์ ์ธํ๋ผ ๋ณต์๋ ฅ
์ ํ๋ฆฌ์ผ์ด์ ์์ค ๋ด๊ฒฐํจ์ฑ์ ์ํด ์ฌ์ฉํ๋ ๊ฒ
๋น์ฌ์ ์๋น์ค๋ ๋ค์ํ ์คํ์์ค ๊ตฌ์ฑ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค.
์์ฌBGP โ BGP ๊ธฐ๋ฐ ๋์ ๋ผ์ฐํ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์๋น์ค์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ API์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉํ๋ ํ์ดํธ IP ์ฃผ์๋ฅผ ๊ด๊ณ ํฉ๋๋ค.
HAProxy โ OSI ๋ชจ๋ธ์ ๋ค์ํ ์์ค์์ ๋งค์ฐ ์ ์ฐํ ํธ๋ํฝ ๋ถ์ฐ ๊ท์น์ โโ๊ตฌ์ฑํ ์ ์๋ ๊ณ ๋ถํ ๋ถ์ฐ ์ฅ์น์ ๋๋ค. HAProxy๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฉ์์ง ๋ธ๋ก์ปค, API ์๋น์ค, ์น ์๋น์ค, ๋ด๋ถ ํ๋ก์ ํธ ๋ฑ ๋ชจ๋ ์๋น์ค์ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด HAProxy ๋ค์ ์์ต๋๋ค.
API ์ ํ๋ฆฌ์ผ์ด์ โ Python์ผ๋ก ์์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ํตํด ์์ ์ ์ธํ๋ผ์ ์๋น์ค๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๊ทผ๋ก์ ์ ์ฒญ (์ดํ ๊ฐ๋จํ ์์ปค๋ผ๊ณ ํจ) - OpenStack ์๋น์ค์์ ์ด๊ฒ์ API ๋ช ๋ น์ด ์ธํ๋ผ๋ก ์ ์ก๋ ์ ์๋๋ก ํ๋ ์ธํ๋ผ ๋ฐ๋ชฌ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋์คํฌ ์์ฑ์ ์์ ์์์ ๋ฐ์ํ๊ณ , ์์ฑ ์์ฒญ์ API ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํฉ๋๋ค.
OpenStack ์ ํ๋ฆฌ์ผ์ด์ ํ์ค ์ํคํ ์ฒ
OpenStack์ ์ํด ๊ฐ๋ฐ๋ ๋๋ถ๋ถ์ ์๋น์ค๋ ๋จ์ผ ํจ๋ฌ๋ค์์ ๋ฐ๋ฅด๋ ค๊ณ ํฉ๋๋ค. ์๋น์ค๋ ์ผ๋ฐ์ ์ผ๋ก API์ ์์ปค(๋ฐฑ์๋ ์ํ์)์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก API๋ Python์ผ๋ก ์์ฑ๋ WSGI ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ๋ ๋ฆฝ ์คํํ ํ๋ก์ธ์ค(๋ฐ๋ชฌ)๋ก ์คํ๋๊ฑฐ๋ Nginx, Apache์ ๊ฐ์ ๊ธฐ์ฑ ์น ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋ฉ๋๋ค. API๋ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ์ํ ์ถ๊ฐ ์ง์นจ์ ์ ๋ฌํฉ๋๋ค. ์ ์ก์ ๋ฉ์์ง ๋ธ๋ก์ปค(๋ณดํต RabbitMQ)๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง๋ฉฐ, ๋ค๋ฅธ ๋ธ๋ก์ปค๋ ์ง์์ด ๋ถ์กฑํฉ๋๋ค. ๋ฉ์์ง๊ฐ ๋ธ๋ก์ปค์ ๋๋ฌํ๋ฉด ์์ ์๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์๋ต์ ๋ฐํํฉ๋๋ค.
์ด ํจ๋ฌ๋ค์์ ์คํจ์ ๊ณตํต๋ ์ง์ , ์ฆ RabbitMQ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ํ์ง๋ง RabbitMQ๋ ํ๋์ ์๋น์ค ๋ด์ ๊ฒฉ๋ฆฌ๋์ด ์์ผ๋ฉฐ, ์ด๋ก ์ ์ผ๋ก๋ ๊ฐ ์๋น์ค๋ง๋ค ๊ฐ๋ณ์ ์ผ๋ก ์ ์ฉ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ MCS์์๋ ์ด๋ฌํ ์๋น์ค๋ฅผ ์ต๋ํ ๋ถ๋ฆฌํ๊ณ , ๊ฐ ํ๋ก์ ํธ๋ง๋ค ๋ณ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ณ๋์ RabbitMQ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ฐ ์ ๊ทผ ๋ฐฉ์์ด ์ข์ ์ด์ ๋ ์ทจ์ฝํ ์ง์ ์์ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋น์ค ์ ์ฒด๊ฐ ์ค๋จ๋๋ ๊ฒ์ด ์๋๋ผ ์ผ๋ถ๋ง ์ค๋จ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ปค ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ ํ์ด ์์ผ๋ฏ๋ก API๋ฅผ ๋ฐธ๋ฐ์ ๋ค์์ ์ํ์ ์ผ๋ก ์ฝ๊ฒ ํ์ฅํ์ฌ ์ฑ๋ฅ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ผ๋ถ ์๋น์ค์๋ ์๋น์ค ๋ด ์กฐ์ ์ด ํ์ํฉ๋๋ค. ์ฆ, API์ ์์ ์ ๊ฐ์ ๋ณต์กํ ์์ฐจ์ ์์ ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ Redis, Memcache ๋ฑ๊ณผ ๊ฐ์ ํด๋ฌ์คํฐ ์์คํ ์ธ ๋จ์ผ ์กฐ์ ์ผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์์ ์๊ฐ ๋ค๋ฅธ ์์ ์์๊ฒ ํด๋น ์์ ์ด ์์ ์๊ฒ ํ ๋น๋์์์ ์๋ฆด ์ ์์ต๋๋ค("์ ๋ฐ ๋งก์ง ๋ง์ธ์"). ์ฐ๋ฆฌ๋ etcd๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ทผ๋ก์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทน์ ์ผ๋ก ์ํตํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ์ฐ๊ณ ์ฝ์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ๋ฉํฐ ๋ง์คํฐ ํด๋ฌ์คํฐ์ ์๋ mariadb๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฌํ ๊ณ ์ ์ ์ธ ๋จ์ผ ์๋น์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฉ๋๋ OpenStack ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ ํ์ฅ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ๋ช ํํ ํ์ ์์คํ ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, API ์ฅ์ ํ์ฉ์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด API ์์ ๋ฐธ๋ฐ์๋ฅผ ์ค์นํ๋ฉด ๋ฉ๋๋ค. ๊ทผ๋ก์ ์๋ฅผ ๋๋ฆฌ๋ฉด ๊ทผ๋ก์ ๊ท๋ชจ๋ ์ปค์ง๋ค.
์ด ์ ์ฒด ์ฒด๊ณ์ ์ฝ์ ์ RabbitMQ์ MariaDB์ ๋๋ค. ์ด๋ค์ ์ํคํ ์ฒ์ ๋ํด์๋ ๋ณ๋์ ๊ธฐ์ฌ๋ก ๋ค๋ฃฐ ๋งํฉ๋๋ค. ์ด ๊ธ์์๋ API ์ฅ์ ํ์ฉ์ฑ์ ๋ํด ์ค์ ์ ์ผ๋ก ๋ค๋ฃจ๊ณ ์ ํฉ๋๋ค.

์คํ์คํ ์ ํ๋ฆฌ์ผ์ด์
์ํคํ
์ฒ. ํด๋ผ์ฐ๋ ํ๋ซํผ์ ๊ท ํ ๋ฐ ์ฅ์ ํ์ฉ
ExaBGP๋ฅผ ์ฌ์ฉํ์ฌ HAProxy ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฅ์ ํ์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ
API๋ฅผ ํ์ฅ์ฑ, ์๋, ๋ด๊ฒฐํจ์ฑ์ ๋์ด๊ธฐ ์ํด API ์์ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๋ฐฐ์นํ์ต๋๋ค. ์ฐ๋ฆฌ๋ HAProxy๋ฅผ ์ ํํ์ต๋๋ค. ์ ์๊ฐ์๋ ์ด ์๋ฃจ์ ์ ์ฌ๋ฌ OSI ๋ ๋ฒจ์ ๊ท ํ ์กฐ์ , ๊ด๋ฆฌ ์ธํฐํ์ด์ค, ์ ์ฐ์ฑ ๋ฐ ํ์ฅ์ฑ, ๋ค์ํ ๊ท ํ ์กฐ์ ๋ฐฉ๋ฒ, ์ธ์ ํ ์ด๋ธ ์ง์ ๋ฑ ์์ ์ ํ์ํ ๋ชจ๋ ํน์ฑ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
๊ฐ์ฅ ๋จผ์ ํด๊ฒฐํด์ผ ํ ๋ฌธ์ ๋ ๋ฐธ๋ฐ์ ์์ฒด์ ๋ด๊ฒฐํจ์ฑ์ด์์ต๋๋ค. ๋ฐธ๋ฐ์๋ฅผ ์ค์นํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ฅ์ ์ง์ ์ด ์์ฑ๋ฉ๋๋ค. ๋ฐธ๋ฐ์๊ฐ ๊ณ ์ฅ๋๋ฉด ์๋น์ค๊ฐ ์ค๋จ๋ฉ๋๋ค. ์ด๋ฐ ์ผ์ด ์ผ์ด๋์ง ์๋๋ก ํ๊ธฐ ์ํด ExaBGP์ ํจ๊ป HAProxy๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
ExaBGP๋ฅผ ์ฌ์ฉํ๋ฉด ์๋น์ค ์ํ๋ฅผ ํ์ธํ๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ HAProxy๊ฐ ์๋ํ๋์ง ํ์ธํ๊ณ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ BGP์์ HAProxy ์๋น์ค๋ฅผ ๋นํ์ฑํํ์ต๋๋ค.
ExaBGP+HAProxy ๊ณํ
- ์ธ ๋์ ์๋ฒ์ ํ์ํ ์ํํธ์จ์ด์ธ ExaBGP์ HAProxy๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ฐ ์๋ฒ์ ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ญ๋๋ค.
- ์ธ ์๋ฒ ๋ชจ๋์์ ์ด ์ธํฐํ์ด์ค์ ๋์ผํ ํฐ์ IP ์ฃผ์๋ฅผ ๋ฑ๋กํฉ๋๋ค.
- ํฐ์ IP ์ฃผ์๋ ExaBGP๋ฅผ ํตํด ์ธํฐ๋ท์ ๊ณต๊ฐ๋ฉ๋๋ค.
์ธ ๊ฐ์ ์๋ฒ ๋ชจ๋์์ ๋์ผํ IP ์ฃผ์๋ฅผ ๊ด๊ณ ํจ์ผ๋ก์จ ์ฅ์ ํ์ฉ์ฑ์ ๋ฌ์ฑํฉ๋๋ค. ๋คํธ์ํฌ ๊ด์ ์์ ๋ณผ ๋, ๋์ผํ ์ฃผ์๋ ์ธ ๊ฐ์ ๋ค๋ฅธ ๋ค์ ํ์์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ผ์ฐํฐ๋ ์ธ ๊ฐ์ ๋์ผํ ๊ฒฝ๋ก๋ฅผ ๋ณด๊ณ ์์ฒด ๋ฉํธ๋ฆญ(์ผ๋ฐ์ ์ผ๋ก ๋์ผํ ์ต์ )์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ๋์ ์ฐ์ ์์์ ๊ฒฝ๋ก๋ฅผ ์ ํํ๊ณ ํธ๋ํฝ์ ์๋ฒ ์ค ํ๋๋ก๋ง ์ด๋ํฉ๋๋ค.
HAProxy ์์ ์ด๋ ์๋ฒ ์ฅ์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ExaBGP๋ ๊ฒฝ๋ก ๊ด๊ณ ๋ฅผ ์ค๋จํ๊ณ ํธ๋ํฝ์ด ์ํํ๊ฒ ๋ค๋ฅธ ์๋ฒ๋ก ์ ํ๋ฉ๋๋ค.
์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ฐธ๋ฐ์์ ๋ด๊ฒฐํจ์ฑ์ ๋ฌ์ฑํ์ต๋๋ค.

HAProxy ๋ก๋ ๋ฐธ๋ฐ์ ์ฅ์ ํ์ฉ
์ด ๊ณํ์ ๋ถ์์ ํ ๊ฒ์ผ๋ก ๋๋ฌ๋ฌ์ต๋๋ค. ์ฐ๋ฆฌ๋ HAProxy๋ฅผ ์์ฝํ๋ ๋ฒ์ ๋ฐฐ์ ์ง๋ง, ์๋น์ค ๋ด์์ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ๋ฒ์ ๋ฐฐ์ฐ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ด ๊ณํ์ ์กฐ๊ธ ํ์ฅํ์ต๋๋ค. ์ฆ, ์ฌ๋ฌ ๊ฐ์ ํฐ์ IP ์ฃผ์ ๊ฐ์ ๊ท ํ์ ๋ง์ถ๋ ๋ฐฉํฅ์ผ๋ก ์ ํํ์ต๋๋ค.
DNS ๊ธฐ๋ฐ ๋ฐธ๋ฐ์ฑ ๋ฐ BGP
HAProxy ์์ ๋ถํ ๋ถ์ฐ ๋ฌธ์ ๋ ์์ง ํด๊ฒฐ๋์ง ์์์ต๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์ฒ๋ผ ์์ฃผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
3๊ฐ์ ์๋ฒ๋ฅผ ๊ท ํ ์๊ฒ ๊ด๋ฆฌํ๋ ค๋ฉด XNUMX๊ฐ์ ํฐ์ IP ์ฃผ์์ ์ค๋๋ DNS๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ ์ฃผ์๋ ๊ฐ HAProxy์ ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค์์ ์ ์๋๊ณ ์ธํฐ๋ท์ ๊ณต๊ฐ๋ฉ๋๋ค.
OpenStack์ ์๋น์ค ์นดํ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ด๋ฅผ ํตํด ํน์ ์๋น์ค์ API ์๋ํฌ์ธํธ๋ฅผ ์ง์ ํฉ๋๋ค. ์ด ๋๋ ํ ๋ฆฌ์ ๋๋ฉ์ธ ์ด๋ฆ์ธ public.infra.mail.ru๋ฅผ ๋ฑ๋กํ๋๋ฐ, ์ด ์ด๋ฆ์ ์ธ ๊ฐ์ ์๋ก ๋ค๋ฅธ IP ์ฃผ์๋ก DNS๋ฅผ ํตํด ํ์ธ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก DNS๋ฅผ ํตํด ์ธ ๊ฐ์ ์ฃผ์ ์ฌ์ด์ ๋ถํ๊ฐ ๋ถ์ฐ๋ฉ๋๋ค.
ํ์ง๋ง ํ์ดํธ IP ์ฃผ์๋ฅผ ๋ฐํํ ๋ ์๋ฒ ์ ํ ์ฐ์ ์์๋ฅผ ์ ์ดํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ง์ ๊ท ํ์ด ๋ง์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก IP ์ฃผ์์ ์ ์์ฑ์ ๋ฐ๋ผ ํ๋์ ์๋ฒ๋ง ์ ํ๋๊ณ , BGP์ ๋ฉํธ๋ฆญ์ด ์ง์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋จธ์ง ๋ ์๋ฒ๋ ์ ํด ์ํ๊ฐ ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ํ ์ธก์ ํญ๋ชฉ์ ์ฌ์ฉํ์ฌ ExaBGP๋ฅผ ํตํด ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๊ธฐ ์์ํ์ต๋๋ค. ๊ฐ ๋ฐธ๋ฐ์๋ ์ธ ๊ฐ์ ํฐ์ IP ์ฃผ์๋ฅผ ๋ชจ๋ ๋ฐํํ์ง๋ง, ์ด ๋ฐธ๋ฐ์์ ์ฃผ์ ์ฃผ์ ์ค ํ๋๋ ์ต์ ๋ฉํธ๋ฆญ์ผ๋ก ๋ฐํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ธ ๊ฐ์ ๋ฐธ๋ฐ์๊ฐ ๋ชจ๋ ์๋ํ๋ ๋์ ์ฒซ ๋ฒ์งธ IP ์ฃผ์์ ๋ํ ์์ฒญ์ ์ฒซ ๋ฒ์งธ ๋ฐธ๋ฐ์๋ก ์ด๋ํ๊ณ , ๋ ๋ฒ์งธ IP ์ฃผ์์ ๋ํ ์์ฒญ์ ๋ ๋ฒ์งธ ๋ฐธ๋ฐ์๋ก ์ด๋ํ๊ณ , ์ธ ๋ฒ์งธ IP ์ฃผ์์ ๋ํ ์์ฒญ์ ์ธ ๋ฒ์งธ ๋ฐธ๋ฐ์๋ก ์ด๋ํฉ๋๋ค.
๋ฐธ๋ฐ์ ์ค ํ๋๊ฐ ๋ค์ด๋๋ฉด ์ด๋ป๊ฒ ๋๋์? ๋ฐธ๋ฐ์ ์ค ํ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ๋ฐธ๋ฐ์์ ์ฃผ ์ฃผ์๊ฐ ๋ค๋ฅธ ๋ ๊ฐ์ ๊ณ์ ๊ด๊ณ ๋๊ณ , ํธ๋ํฝ์ ๋ ๋ฐธ๋ฐ์ ๊ฐ์ ์ฌ๋ถ๋ฐฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ DNS๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ์ฌ๋ฌ ๊ฐ์ IP ์ฃผ์๋ฅผ ๋์์ ์ ๊ณตํฉ๋๋ค. DNS์ ๋ค์ํ ๋ฉํธ๋ฆญ์ ์ฌ์ฉํ์ฌ ๋ถํ๋ฅผ ๋ถ์ฐํจ์ผ๋ก์จ ์ธ ๊ฐ์ ๋ฐธ๋ฐ์ ๋ชจ๋์ ๋ถํ๊ฐ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋ฉ๋๋ค. ๋์์ ์ฐ๋ฆฌ๋ ๋ด๊ฒฐํจ์ฑ์ ์์ง ์์ต๋๋ค.

DNS + BGP ๊ธฐ๋ฐ HAProxy ๋ถํ ๋ถ์ฐ
ExaBGP์ HAProxy ๊ฐ์ ์ํธ ์์ฉ
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊ฒฝ๋ก ๊ณต์ง ์ข ๋ฃ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ ์ฅ์ ๋ฐ์ ์ ์ฅ์ ํ์ฉ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. ํ์ง๋ง HAProxy๋ ์๋ฒ ์ฅ์ ์ด์ธ์ ๋ค๋ฅธ ์ด์ ๋ก๋ ์ข ๋ฃ๋ ์ ์์ต๋๋ค. ๊ด๋ฆฌ ์ค๋ฅ, ์๋น์ค ๋ด๋ถ ์ค๋ฅ ๋ฑ์ด ๊ทธ ์์ ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ฐ๋ฆฌ๋ ๊นจ์ง ๋ฐธ๋ฐ์๋ฅผ ๋ถํ๋ก๋ถํฐ ์ ๊ฑฐํ๊ณ ์ถ์ผ๋ฉฐ, ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ์ด์ ๋ฐฉ์์ ํ์ฅํ์ฌ ExaBGP์ HAProxy ๊ฐ์ ํํธ๋นํธ๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ด๋ ExaBGP์ HAProxy ๊ฐ์ ์ํธ์์ฉ์ ์ํํธ์จ์ด๋ก ๊ตฌํํ ๊ฒ์ผ๋ก, ExaBGP๋ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด ExaBGP ๊ตฌ์ฑ์์ HAProxy ์ํ๋ฅผ ํ์ธํ ์ ์๋ ์ํ ๊ฒ์ฌ๊ธฐ๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ, HAProxy์์ ์ํ ๋ฐฑ์๋๋ฅผ ๊ตฌ์ฑํ๊ณ ExaBGP ์ธก์์ ๊ฐ๋จํ GET ์์ฒญ์ผ๋ก ํ์ธํ์ต๋๋ค. ํด๋น ๊ณต์ง๊ฐ ๋ ์ด์ ๋์ค์ง ์๋๋ค๋ฉด HAProxy๊ฐ ์คํ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฏ๋ก ๊ณต์งํ ํ์๊ฐ ์์ต๋๋ค.

HAProxy ์ํ ์ ๊ฒ
HAProxy ํผ์ด: ์ธ์ ๋๊ธฐํ
๋ค์์ผ๋ก ํด์ผ ํ ์ผ์ ์ธ์ ์ ๋๊ธฐํํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ถ์ฐ ๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ ์ธ์ ์ ๋ํ ์ ๋ณด ์ ์ฅ์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๋ค. ํ์ง๋ง HAProxy๋ Peers ๊ธฐ๋ฅ ๋๋ถ์ ์ด๋ฅผ ์ํํ ์ ์๋ ๋ช ์ ๋๋ ๋ฐธ๋ฐ์ ์ค ํ๋์ ๋๋ค. Peers ๊ธฐ๋ฅ์ด๋ ์๋ก ๋ค๋ฅธ HAProxy ํ๋ก์ธ์ค ๊ฐ์ ์ธ์ ํ ์ด๋ธ์ ์ ์กํ๋ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค.
๊ท ํ์ ๋ง์ถ๋ ๋ฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ฐ๋จํ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. , ๊ทธ๋ฆฌ๊ณ ํ์ฅ๋ ์ธ์ ์์๋ ํด๋ผ์ด์ธํธ์ ์ธ์ ์ด ๊ธฐ์ต๋๊ณ , ๋งค๋ฒ ์ด์ ๊ณผ ๊ฐ์ ์๋ฒ์ ์ ์ํ๊ฒ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ ์ต์ ์ ๊ตฌํํ๊ณ ์ถ์์ต๋๋ค.
HAProxy๋ ์ด ๋ฉ์ปค๋์ฆ์ ํด๋ผ์ด์ธํธ ์ธ์ ์ ์ ์ฅํ๊ธฐ ์ํด ์คํฑ ํ ์ด๋ธ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ค์ ํด๋ผ์ด์ธํธ์ ์๋ IP ์ฃผ์, ์ ํ๋ ๋์ ์ฃผ์(๋ฐฑ์๋) ๋ฐ ์ผ๋ถ ์๋น์ค ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์คํฑ ํ ์ด๋ธ์ ์ผ๋ฐ์ ์ผ๋ก ์์ค IP + ๋์ IP ์์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ผ์ด๋ ๋ก๋น ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ชจ๋์ ๊ฐ์ด ๋ค๋ฅธ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ ํํ ๋ ์ฌ์ฉ์ ์ธ์ ์ปจํ ์คํธ๋ฅผ ์ ๋ฌํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
์คํฑ ํ ์ด๋ธ์ด ์๋ก ๋ค๋ฅธ HAProxy ํ๋ก์ธ์ค(๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ๋ ํ๋ก์ธ์ค) ์ฌ์ด๋ฅผ ์ด๋ํ๋๋ก ๊ฐ๋ฅด์น๋ฉด ๋ฐธ๋ฐ์๊ฐ ๋จ์ผ ์คํฑ ํ ์ด๋ธ ํ๋ก ์์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐธ๋ฐ์ ์ค ํ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ํด๋ผ์ด์ธํธ ๋คํธ์ํฌ๋ฅผ ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ธ์ ์์ ์ ์ด์ ์ ์ ํํ ๋์ผํ ๋ฐฑ์๋์์ ๊ณ์ ์งํ๋ฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ์๋์ ์ํด์๋ ์ธ์ ์ด ์ค์ ๋ ๋ฐธ๋ฐ์์ ์์ค IP ์ฃผ์๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ, ์ด๋ ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค์ ๋์ ์ฃผ์์ ๋๋ค.
ํผ์ด์ ์ฌ๋ฐ๋ฅธ ์๋์ ํน์ ์กฐ๊ฑด ํ์์๋ง ๋ฌ์ฑ๋ฉ๋๋ค. ์ฆ, TCP ์ธ์ ์ด ๋์ด์ง ์๊ฐ์ด ์๋๋ก TCP ํ์์์์ด ์ถฉ๋ถํ ์ปค์ผ ํ๊ฑฐ๋ ์ ํ์ด ์ถฉ๋ถํ ๋นจ๋ผ์ผ ํฉ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋์ผํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ IaaS ์๋น์ค๋ฅผ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์ด๊ฒ ์ฅํ๋น์๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค. ์ด๋ ๋ ๊ฐ์ HAProxy ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๊ธฐ๋ณธ ํผ์ด ์ง์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ ์ด ์๋น์ค์์ ๋งค์ฐ ๋ฐ์ด๋๋ค๋ ๊ฒ์ ์ ์ฆํ์ต๋๋ค.
์ด ๊ทธ๋ฆผ์ ์ธ ๊ฐ์ HAProxy ์ธ์คํด์ค ๊ฐ ํผ์ด ํ ์ด๋ธ์ ์ด๋์ ๊ฐ๋ต์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉฐ, ์ด๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ตฌ์ฑ์ด ์ ๊ณต๋ฉ๋๋ค.

HAProxy ํผ์ด(์ธ์
๋๊ธฐํ)
๋์ผํ ๋ฐฉ์์ ๊ตฌํํ๋ ๊ฒฝ์ฐ ์๋ ๋ฐฉ์์ ์ฃผ์ ๊น๊ฒ ํ ์คํธํด์ผ ํฉ๋๋ค. 100%์ ๊ฒฝ์ฐ์ ๋์ผํ ํํ๋ก ์๋ํ๋ค๋ ๊ฒ์ ์ฌ์ค์ด ์๋๋๋ค. ํ์ง๋ง ์ ์ด๋ ํด๋ผ์ด์ธํธ์ ์์ค IP๋ฅผ ๊ธฐ์ตํด์ผ ํ ๋ ์คํฑ ํ ์ด๋ธ์ ์์ด๋ฒ๋ฆฌ์ง๋ ์์ ๊ฒ์ ๋๋ค.
๋์ผํ ํด๋ผ์ด์ธํธ์ ๋์ ์์ฒญ ์ ์ ํ
API๋ฅผ ํฌํจํ ๊ณต๊ฐ์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์๋น์ค๋ ์์ฒญ๋ ์์ฒญ์ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. ๊ทธ ์ด์ ๋ ์ฌ์ฉ์ ์ค๋ฅ๋ถํฐ ํ์ ๊ณต๊ฒฉ๊น์ง ๋งค์ฐ ๋ค์ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฃผ๊ธฐ์ ์ผ๋ก IP ์ฃผ์์ ์ํ DDoS ๊ณต๊ฒฉ์ ๋ฐ๊ณ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ข ์ข ์คํฌ๋ฆฝํธ์์ ์ค์๋ฅผ ํ์ฌ ์ฐ๋ฆฌ์๊ฒ ์๊ท๋ชจ DDoS ๊ณต๊ฒฉ์ ๊ฐํฉ๋๋ค.
์ด๋ค ์์ผ๋ก๋ ์ถ๊ฐ์ ์ธ ๋ณดํธ๊ฐ ํ์ํฉ๋๋ค. ๊ฐ์ฅ ํ์คํ ํด๊ฒฐ์ฑ ์ API์ ๋ํ ์์ฒญ ์๋ฅผ ์ ํํ๊ณ ์ ์ฑ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ๋ก์ธ์ ์๊ฐ์ ๋ญ๋นํ์ง ์๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ ํ์ ๊ตฌํํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋์ผํ ์คํฑ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ HAProxy๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋ ๋น์จ ์ ํ์ ์ฌ์ฉํฉ๋๋ค. ์ ํ์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ค์ ๋๋ฉฐ API์ ๋ํ ์์ฒญ ์์ ๋ฐ๋ผ ์ฌ์ฉ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์์ฒญ์ด ์ด๋ฃจ์ด์ง๋ ์์ค IP๋ฅผ ๊ธฐ์ตํ๊ณ ํ ์ฌ์ฉ์์ ๋์ ์์ฒญ ์๋ฅผ ์ ํํฉ๋๋ค. ๋ฌผ๋ก , ์ฐ๋ฆฌ๋ ๊ฐ ์๋น์ค์ ๋ํ ํ๊ท API ๋ถํ ํ๋กํ์ ๊ณ์ฐํ๊ณ ๊ทธ ๊ฐ์ ์ฝ 10๋ฐฐ๋ก ํ๋๋ฅผ ์ค์ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ํฉ์ ๊ณ์ ๋ฉด๋ฐํ ๋ชจ๋ํฐ๋งํ๊ณ ์ต์ ๋ํฅ์ ํ์ ํฉ๋๋ค.
์ค์ ๋ก๋ ์ด๋ป๊ฒ ๋ณด์ผ๊น์? ์๋ ํ์ฅ์ ์ํด ํญ์ ๋น์ฌ์ API๋ฅผ ์ฌ์ฉํ๋ ๊ณ ๊ฐ์ด ์์ต๋๋ค. ๊ทธ๋ค์ ์์นจ์ ๊ฐ๊น์์ง์๋ก 1000~XNUMX๊ฐ์ ๊ฐ์ ๋จธ์ ์ ๋ง๋ค๊ณ ์ ๋ ์ ๊ฐ๊น์์ง์๋ก ์ญ์ ํฉ๋๋ค. OpenStack์ ๊ฒฝ์ฐ PaaS ์๋น์ค๋ฅผ ํฌํจํ ๊ฐ์ ๋จธ์ ์ ๋ง๋ค๋ ค๋ฉด ์ต์ XNUMX๊ฐ์ API ์์ฒญ์ด ํ์ํฉ๋๋ค. ์๋น์ค ๊ฐ์ ์ํธ์์ฉ๋ API๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฐ ์์ผ๋ก ์ ๋ฌด๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ์๋นํ ์คํธ๋ ์ค๋ฅผ ์ ๋ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ถํ๋ฅผ ํ๊ฐํ๊ณ , ๋งค์ผ ์ต๋ ๋ถํ๋์ ์์งํ์ฌ 10๋ฐฐ๋ก ๋๋ ธ๊ณ , ์ด๊ฒ์ด ์ฐ๋ฆฌ์ ์๊ธ ํ๋๊ฐ ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํญ์ ์ต์ ๋ํฅ์ ํ์ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ข ์ข ๋ด๊ณผ ์ค์บ๋๊ฐ ์คํ ๊ฐ๋ฅํ CGA ์คํฌ๋ฆฝํธ๊ฐ ์๋์ง ํ์ธํ๋ ค๊ณ ํ๋ ๊ฒ์ ๋ณด๊ณ , ์ฐ๋ฆฌ๋ ์ ๊ทน์ ์ผ๋ก ์ด๋ฅผ ์๋ผ๋ ๋๋ค.
์ฌ์ฉ์๊ฐ ๋์น์ฑ์ง ๋ชปํ๊ฒ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ
๋ํ ์ฝ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค ์์ค์์๋ ์ฅ์ ํ์ฉ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค. ๋กค์์ ์ค์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ง๋ง ์๋น์ค ๊ฐ์ฉ์ฑ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ ์ ์์ต๋๋ค.
์ ํฌ๋ ์๋น์ค๋ฅผ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ์์ผ๋ฉฐ, ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์ดํธ ๊ณผ์ ์ด ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ HAProxy ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์๋น์ค์ Graceful Shutdown์ ๊ตฌํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ฐธ๋ฐ์ ๊ด๋ฆฌ์ ์๋น์ค์ "์ฌ๋ฐ๋ฅธ" ์ข ๋ฃ๋ฅผ ๋ณด์ฅํด์ผ ํ์ต๋๋ค.
- HAProxy์ ๊ฒฝ์ฐ ์ ์ด๋ ํต๊ณ ํ์ผ์ ํตํด ์ํ๋๋๋ฐ, ์ด ํต๊ณ ํ์ผ์ ๋ณธ์ง์ ์ผ๋ก ์์ผ์ด๋ฉฐ HAProxy ๊ตฌ์ฑ์์ ์ ์๋ฉ๋๋ค. stdio๋ฅผ ํตํด ๋ช ๋ น์ ์ ๋ฌํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ์ ์ฃผ์ ๊ตฌ์ฑ ์ ์ด ๋๊ตฌ๋ Ansible์ด๋ฏ๋ก HAProxy๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ด์ฅ ๋ชจ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๊ณ ์์ต๋๋ค.
- ๋๋ถ๋ถ์ API์ ์์ง ์๋น์ค๋ ์ ์์ ์ธ ์ข ๋ฃ ๊ธฐ์ ์ ์ง์ํฉ๋๋ค. ์ฆ, ์ข ๋ฃ ์์๋ ํ์ฌ ์์ (http ์์ฒญ์ด๋ ์ผ๋ถ ์๋น์ค ์์ ์ด๋ )์ด ์์ ํ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ๊ทผ๋ก์์๊ฒ๋ ๋๊ฐ์ ์ผ์ด ์ผ์ด๋ฉ๋๋ค. ๊ทธ๋ ์์ ์ด ํด์ผ ํ ๋ชจ๋ ์ผ์ ์๊ณ ์์ผ๋ฉฐ, ๋ชจ๋ ๊ฒ์ ์ฑ๊ณต์ ์ผ๋ก ๋๋ง์น๋ฉด ๋๋ฉ๋๋ค.
์ด ๋ ๊ฐ์ง ์ ๋๋ถ์ ์ฐ๋ฆฌ์ ์์ ํ ๋ฐฐํฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ๋ฐ์๋ ์๋ก์ด ์ฝ๋ ํจํค์ง(์ฐ๋ฆฌ์ ๊ฒฝ์ฐ RPM)๋ฅผ ๋น๋ํ๊ณ , ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ ์คํธํ๊ณ , ์คํ ์ด์ง ํ๊ฒฝ์์ ํ ์คํธํ ํ ์คํ ์ด์ง ์ ์ฅ์์ ๊ทธ๋๋ก ๋ก๋๋ค.
- ๊ฐ๋ฐ์๋ "์ํฐํฉํธ"์ ๋ํ ๊ฐ์ฅ ์์ธํ ์ค๋ช ๊ณผ ํจ๊ป ๋ฐฐํฌ ์์ ์ ์ค์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ ํจํค์ง์ ๋ฒ์ , ์ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช , ํ์ํ ๊ฒฝ์ฐ ๋ฐฐํฌ์ ๋ํ ๊ธฐํ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์์คํ
๊ด๋ฆฌ์๊ฐ ์
๋ฐ์ดํธ๋ฅผ ์์ํฉ๋๋ค. Ansible ํ๋ ์ด๋ถ์ ์คํํ๋ฉด ๋ค์ ์์
์ด ์ํ๋ฉ๋๋ค.
- ์คํ ์ด์ง ์ ์ฅ์์์ ํจํค์ง๋ฅผ ๊ฐ์ ธ์์ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํ ์ ์ฅ์์ ํจํค์ง ๋ฒ์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ๋ฐ์ดํธ๋๋ ์๋น์ค์ ๋ฐฑ์๋ ๋ชฉ๋ก์ ์ปดํ์ผํฉ๋๋ค.
- HAProxy์์ ์ ๋ฐ์ดํธํ ์ฒซ ๋ฒ์งธ ์๋น์ค๋ฅผ ์ข ๋ฃํ๊ณ ํด๋น ํ๋ก์ธ์ค๊ฐ ์คํ์ ๋ง์น ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ํํ ์๋น์ค ์ข ๋ฃ ๋๋ถ์ ํ์ฌ ๊ณ ๊ฐ ์์ฒญ์ด ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ๊ฒ์ผ๋ก ํ์ ํฉ๋๋ค.
- API์ ์์ ์๊ฐ ์์ ํ ์ค์ง๋๊ณ HAProxy๊ฐ ์ข ๋ฃ๋ ํ ์ฝ๋๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
- Ansible์ด ์๋น์ค๋ฅผ ์์ํฉ๋๋ค.
- ๊ฐ ์๋น์ค์ ๋ํด ์ฌ๋ฌ ๊ฐ์ง ์ฌ์ ์ ์๋ ์ฃผ์ ํ ์คํธ์ ๋ํ ๋จ์ ํ ์คํธ๋ฅผ ์ํํ๋ ํน์ "ํธ๋ค"์ ๊ฐ์ ธ์ต๋๋ค. ์๋ก์ด ์ฝ๋์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ฌ๊ฐ ์ํ๋ฉ๋๋ค.
- ์ด์ ๋จ๊ณ์์ ์ค๋ฅ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด ๋ฐฑ์๋๊ฐ ํ์ฑํ๋ฉ๋๋ค.
- ๋ค์ ๋ฐฑ์๋๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
- ๋ชจ๋ ๋ฐฑ์๋๊ฐ ์ ๋ฐ์ดํธ๋ ํ ๊ธฐ๋ฅ ํ ์คํธ๊ฐ ์คํ๋ฉ๋๋ค. ํด๋น ๊ธฐ๋ฅ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ ์์ ์ด ๋ง๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ดํด๋ด ๋๋ค.
์ด๊ฒ์ผ๋ก ๋ฐฐํฌ๊ฐ ์๋ฃ๋์์ต๋๋ค.

์๋น์ค ์
๋ฐ์ดํธ ์ฃผ๊ธฐ
์ด ๊ณํ์ ๋จ ํ๋์ ๊ท์น๋ ์๋ค๋ฉด ํจ๊ณผ๊ฐ ์์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ ํฌ์์ ์ด์ ๋ฒ์ ๊ณผ ์ ๋ฒ์ ์ ๋ชจ๋ ์ง์ํฉ๋๋ค. ์ํํธ์จ์ด ๊ฐ๋ฐ ๋จ๊ณ์์๋ ์๋น์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ด๋ ๊ธฐ์กด ์ฝ๋๋ ์์๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋ฏธ๋ฆฌ ๊ฐ์ ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ๋๋ฒ ์ด์ค๋ ์ ์ง์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๊ฒฐ๋ก
๋ด๊ฒฐํจ์ฑ WEB ์ํคํ ์ฒ์ ๋ํ ๋๋ง์ ์๊ฐ์ ๊ณต์ ํ๋ฉด์, ๋ค์ ํ๋ฒ ํต์ฌ ์ฌํญ์ ๊ฐ์กฐํ๊ณ ์ถ์ต๋๋ค.
- ๋ฌผ๋ฆฌ์ ๊ฒฐํจ ํ์ฉ์ฑ
- ๋คํธ์ํฌ ์ฅ์ ํ์ฉ(๋ฐธ๋ฐ์, BGP)
- ์ฌ์ฉ ๋ฐ ๊ฐ๋ฐ๋ ์ํํธ์จ์ด์ ๋ด๊ฒฐํจ์ฑ.
๋ชจ๋๋ค ์์ ์ ์ธ ๊ฐ๋์๊ฐ์ ๋ณด๋ด์ธ์!
์ถ์ฒ : habr.com
