Skip to content

์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์— ๋Œ€ํ•œ HTTP ํ”„๋ก์‹œ๋Š” ์—”์ง„์—‘์Šค(Nginx)๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ L4 ๋ ˆ๋ฒจ์˜ TCP ํ”„๋ก์‹œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ stream ๋ชจ๋“ˆ์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ HAProxy๊ฐ€ ๋” ์ข‹์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ๋‚ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์Šค์ฒœ ํ˜ธ์ŠคํŠธ์— HAProxy๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ํ”„๋ผ์ด๋น— ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์˜ TCP ํ†ต์‹ ์ด ํ•„์š”ํ•œ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ๊ตฌ์„ฑํ•ด๋ณด๋„๋ก ํ•˜์ž.

TCP ํ”„๋ก์‹œ โ€‹

TCP ํ”„๋ก์‹œ๋Š” TCP ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ์— ํ•ด๋‹น๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ TCP ์—ฐ๊ฒฐ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ์ธ์Šคํ„ด์Šค์—๋Š” Redis ๋˜๋Š” PostgreSQL์ด ์žˆ๋Š”๋ฐ ํ˜„์žฌ ์กฐ์ง์—์„œ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ KDB+์— ๋Œ€ํ•ด ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋‹ค์Œ์€ KDB์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํฌํŠธ ๋ฒ”์œ„๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก ์„ค์ •ํ•œ ์˜ˆ์‹œ์ด๋‹ค.

txt
listen kdb_proxy_for_dev
    mode tcp
    bind *:5010-5013
    server kdb_dev 192.168.149.88

HAProxy ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ โ€‹

ํ˜„์žฌ ์„ค์ • ํŒŒ์ผ์— ๋ฌธ๋ฒ•์ ์ธ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ check mode(-c) ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ํ˜„์žฌ ์„ค์ •์— ๋Œ€ํ•ด ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

sh
[ec2-user@ip-192-169-14-62 ~]$ haproxy -c -f /etc/haproxy/haproxy.cfg
Configuration file is valid

TCP ํ”„๋ก์‹œ ํ…Œ์ŠคํŠธ โ€‹

NetCat(nc) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ HAProxy์—์„œ ์ˆ˜์‹ ํ•˜๊ณ  ์žˆ๋Š” ํฌํŠธ๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ์‹คํ–‰๋œ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์ž.

sh
[ec2-user@ip-192-169-14-62 ~]$ nc -znv 127.0.0.1 5013
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:5013.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

๋ฐฐ์Šค์ฒœ ํ˜ธ์ŠคํŠธ์— TCP ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ฐฐ์Šค์ฒœ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ SSH ํ„ฐ๋„๋ง์„ ํ•„์š”ํ• ๋•Œ๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ SSH ํ„ฐ๋„๋ง์„ ๊ตฌ์„ฑํ•˜๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ด์ง€๋งŒ ๋ณด์•ˆ ์ˆ˜์ค€์„ ๊ฒ€ํ† ํ•˜๊ณ  TCP ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๋„๋ก ํ•˜์„ธ์š”.

Released under the MIT License.