๊ธฐ์ฌ์ ๋ฒ์ญ์ ๊ณผ์ ์์ ์ ๋ ์ ์ค๋น๋์์ต๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฌ์ฉ์์๊ฒ ์๋น์ค์ ๋ํ ๋จ์ผ ์ก์ธ์ค ์ง์ ์ ์ ๊ณตํ๋ฉด์ ์ฌ๋ฌ ํธ์คํธ์ ๊ฑธ์ณ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์๋ฃจ์
์
๋๋ค.
HAProxy๋ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ , ์ฒ๋ฆฌ๋์ ์ต๋ํํ๊ณ , ์๋ต ์๊ฐ์ ์ต์ํํ๊ณ , ๊ฐ๋ณ ๋ฆฌ์์ค์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋
ธ๋ ฅํฉ๋๋ค. ์ด ๊ฐ์ด๋์์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃฐ CentOS 8๊ณผ ๊ฐ์ ๋ค์ํ Linux ๋ฐฐํฌํ๊ณผ ์์คํ
์ ์ค์นํ ์ ์์ต๋๋ค.
HAProxy๋ ํนํ ํธ๋ํฝ์ด ๋งค์ฐ ๋ง์ ์น์ฌ์ดํธ์ ์ ํฉํ๋ฏ๋ก ๋ค์ค ์๋ฒ ์น ์๋น์ค ๊ตฌ์ฑ์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ HAProxy๋ฅผ CentOS 8 ํด๋ผ์ฐ๋ ํธ์คํธ์ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ค์ ํ ๋ค์ ํธ๋ํฝ์ ์น ์๋ฒ๋ก ๋ผ์ฐํ ํ๋ ๋จ๊ณ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค.
์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ์ต์ํ ๋ ๋ ์ด์์ ์น ์๋ฒ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๋ฒ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์น ์๋ฒ ๊ฐ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ ์คํธํ๋ ค๋ฉด ์ต์ํ nginx ๋๋ httpd์ ๊ฐ์ ๊ธฐ๋ณธ ์น ์๋น์ค๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
CentOS 8์ HAProxy ์ค์น
HAProxy๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ์คํ ์์ค ์ ํ๋ฆฌ์ผ์ด์ ์ด๊ธฐ ๋๋ฌธ์ ํ์ค CentOS ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฌ์ฉํ ์ ์๋ ๋ฐฐํฌํ์ด ์ต์ ๋ฒ์ ์ด ์๋ ์๋ ์์ต๋๋ค. ํ์ฌ ๋ฒ์ ์ ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์.
sudo yum info haproxy
HAProxy๋ ํญ์ ์ ํํ ์ ์๋ ์ธ ๊ฐ์ง ์์ ์ ์ธ ๋ฒ์ , ์ฆ ์ง์๋๋ ๊ฐ์ฅ ์ต๊ทผ ๋ฒ์ ๋ ๊ฐ์ ์ฌ์ ํ ์ค์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๊ณ ์๋ ์ธ ๋ฒ์งธ ์ด์ ๋ฒ์ ์ ์ ๊ณตํฉ๋๋ค. ์ธ์ ๋ ์ง HAProxy ์น์ฌ์ดํธ์ ๋์ด๋ ์ต์ ์์ ๋ฒ์ ์ ํ์ธํ ํ ์์ ํ ๋ฒ์ ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ด๋์์๋ ๊ฐ์ด๋๋ฅผ ์์ฑํ ๋น์ ํ์ค ์ ์ฅ์์์ ์์ง ์ฌ์ฉํ ์ ์์๋ ์ต์ ์์ ๋ฒ์ 2.0์ ์ค์นํฉ๋๋ค. ์๋ณธ ์์ค์์ ์ค์นํด์ผ ํฉ๋๋ค. ํ์ง๋ง ๋จผ์ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ํ๊ณ ์ปดํ์ผํ๋ ๋ฐ ํ์ํ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋์ง ํ์ธํ์ธ์.
sudo yum install gcc pcre-devel tar make -y
์๋ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์์ค ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ์ญ์์ค. ๋ค์์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
๋ค์ด๋ก๋๊ฐ ์๋ฃ๋๋ฉด ์๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ถ์ถํฉ๋๋ค.
tar xzvf ~/haproxy.tar.gz -C ~/
์์ถ์ ํผ ์์ค ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
cd ~/haproxy-2.0.7
๊ทธ๋ฐ ๋ค์ ์์คํ ์ ๋ง๊ฒ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ์ญ์์ค.
make TARGET=linux-glibc
๋ง์ง๋ง์ผ๋ก HAProxy ์์ฒด๋ฅผ ์ค์นํฉ๋๋ค.
sudo make install
์ด์ HAProxy๊ฐ ์ค์น๋์์ง๋ง ์๋ํ๋ ค๋ฉด ๋ช ๊ฐ์ง ์ถ๊ฐ ์กฐ์์ด ํ์ํฉ๋๋ค. ๊ณ์ํด์ ์๋์ ์ํํธ์จ์ด์ ์๋น์ค๋ฅผ ์ค์ ํด ๋ณด๊ฒ ์ต๋๋ค.
์๋ฒ์ HAProxy ์ค์
์ด์ HAProxy ํญ๋ชฉ์ ๋ํด ๋ค์ ๋๋ ํฐ๋ฆฌ ๋ฐ ํต๊ณ ํ์ผ์ ์ถ๊ฐํฉ๋๋ค.
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
์ผ๋ฐ ์ฌ์ฉ์๋ก HAProxy ๋ช ๋ น์ ์คํํ ์ ์๋๋ก ๋ฐ์ด๋๋ฆฌ์ ๋ํ ๊ธฐํธ ๋งํฌ๋ฅผ ๋ง๋ญ๋๋ค.
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
์์คํ ์ ํ๋ก์๋ฅผ ์๋น์ค๋ก ์ถ๊ฐํ๋ ค๋ฉด ์์ ์ haproxy.init ํ์ผ์ /etc/init.d ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํ์ธ์. ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋๋ก ํ์ผ ๊ถํ์ ํธ์งํ ๋ค์ systemd ๋ฐ๋ชฌ์ ๋ค์ ์์ํฉ๋๋ค.
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
๋ํ ์์คํ ์ด ์์๋ ๋ ์๋น์ค๊ฐ ์๋์ผ๋ก ๋ค์ ์์๋๋๋ก ํ์ฉํด์ผ ํฉ๋๋ค.
sudo chkconfig haproxy on
ํธ์๋ฅผ ์ํด HAProxy๋ฅผ ์คํํ ์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ ๊ถ์ฅ๋ฉ๋๋ค.
sudo useradd -r haproxy
๊ทธ๋ฐ ๋ค์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ค์น๋ ๋ฒ์ ๋ฒํธ๋ฅผ ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์์ ์ถ๋ ฅ ์์ ํ์๋ ๊ฒ์ฒ๋ผ ๋ฒ์ ์ 2.0.7์ด์ด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก CentOS 8์ ๊ธฐ๋ณธ ๋ฐฉํ๋ฒฝ์ ์ด ํ๋ก์ ํธ์ ๋ํด ์๋นํ ์ ํ์ ์ ๋๋ค. ํ์ํ ์๋น์ค๋ฅผ ํ์ฉํ๊ณ ๋ฐฉํ๋ฒฝ์ ์ฌ์ค์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
๋ก๋ ๋ฐธ๋ฐ์ ์ค์
HAProxy ์ค์ ์ ๋งค์ฐ ๊ฐ๋จํ ํ๋ก์ธ์ค์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ํด์ผ ํ ์ผ์ HAProxy์๊ฒ ์ด๋ค ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋์ง, ์ด๋์์ ์ด๋ฅผ ์ค๊ณํด์ผ ํ๋์ง ์๋ ค์ฃผ๋ ๊ฒ๋ฟ์ ๋๋ค.
์ด๋ ์ค์ ์ ์ ์ํ๋ /etc/haproxy/haproxy.cfg ๊ตฌ์ฑ ํ์ผ์ ์์ฑํ์ฌ ์ํ๋ฉ๋๋ค. HAProxy ๊ตฌ์ฑ ์ต์
์ ๋ํด ์ฝ์ ์ ์์ต๋๋ค.
์ ์ก ๊ณ์ธต(๊ณ์ธต 4)์์ ๋ก๋ ๋ฐธ๋ฐ์ฑ
๊ธฐ๋ณธ ์ค์ ๋ถํฐ ์์ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์์ ์ฌ์ฉํ์ฌ ์ ๊ตฌ์ฑ ํ์ผ์ ๋ง๋ญ๋๋ค. vi ์๋ ๋ช ๋ น์ผ๋ก :
sudo vi /etc/haproxy/haproxy.cfg
ํ์ผ์ ๋ค์ ์น์
์ ์ถ๊ฐํฉ๋๋ค. ๋ฐ๊พธ๋ค ์๋ฒ ์ด๋ฆ ํต๊ณ ํ์ด์ง์์ ์๋ฒ๋ฅผ ํธ์ถํด์ผ ํ๋ ํญ๋ชฉ ๋ฐ ๊ฐ์ธ_ip โ ์น ํธ๋ํฝ์ ์ ๋ฌํ๋ ค๋ ์๋ฒ์ ๊ฐ์ธ IP ์ฃผ์์
๋๋ค. ๊ฐ์ธ IP ์ฃผ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
์ด๋ ํฌํธ 4์์ ์์ ๋๊ธฐํ๋ http_front๋ผ๋ ์ธ๋ถ ์ด๋ฆ์ ์ ์ก ๊ณ์ธต ๋ก๋ ๋ฐธ๋ฐ์(๊ณ์ธต 80)๋ฅผ ์ ์ํ ๋ค์ http_back์ด๋ผ๋ ๊ธฐ๋ณธ ๋ฐฑ์๋๋ก ํธ๋ํฝ์ ์ ๋ฌํฉ๋๋ค. ์ถ๊ฐ ํต๊ณ /haproxy?stats๋ ํต๊ณ ํ์ด์ง๋ฅผ ์ง์ ๋ ์ฃผ์์ ์ฐ๊ฒฐํฉ๋๋ค.
๋ค์ํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ.
๋ฐฑ์๋ ์น์ ์ ์๋ฒ๋ฅผ ์ง์ ํ๋ฉด HAProxy๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ผ์ด๋ ๋ก๋น ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํด ์ด๋ฌํ ์๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ท ํ ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ์ฐ๊ฒฐ์ด ์ ๋ฌ๋๋ ๋ฐฑ์๋์ ์๋ฒ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค์์ ์ ์ฉํ ์ต์ ์ค ์ผ๋ถ์ ๋๋ค.
- ๋ผ์ด๋ ๋ก๋น: ๊ฐ ์๋ฒ๋ ๋ฌด๊ฒ์ ๋ฐ๋ผ ์ฐจ๋ก๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ์๋ฒ์ ์ฒ๋ฆฌ ์๊ฐ์ด ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋ ๋ ๊ฐ์ฅ ์ํํ๊ณ ๊ณต์ ํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋์ ์ด๋ฏ๋ก ์๋ฒ์ ๋ฌด๊ฒ๋ฅผ ์ฆ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
- ์ต์ ์ฐ๊ฒฐ: ์ฐ๊ฒฐ ์๊ฐ ๊ฐ์ฅ ์ ์ ์๋ฒ๊ฐ ์ ํ๋ฉ๋๋ค. ๋์ผํ ๋ก๋๋ฅผ ๊ฐ์ง ์๋ฒ ๊ฐ์ ๋ผ์ด๋ ๋ก๋น์ด ์ํ๋ฉ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ LDAP, SQL, TSE ๋ฑ๊ณผ ๊ฐ์ ๊ธด ์ธ์ ์ ๊ถ์ฅ๋์ง๋ง HTTP์ ๊ฐ์ ์งง์ ์ธ์ ์๋ ๊ทธ๋ค์ง ์ ํฉํ์ง ์์ต๋๋ค.
- ๋จผ์ : ์ฌ์ฉ ๊ฐ๋ฅํ ์ฐ๊ฒฐ ์ฌ๋กฏ์ด ์๋ ์ฒซ ๋ฒ์งธ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ์์ ํฉ๋๋ค. ์๋ฒ๋ ๊ฐ์ฅ ๋ฎ์ ์ซ์ ID๋ถํฐ ๊ฐ์ฅ ๋์ ์ซ์ ID๊น์ง ์ ํ๋๋ฉฐ, ๊ธฐ๋ณธ๊ฐ์ ํ์ ์๋ฒ ์์น์ ๋๋ค. ์๋ฒ๊ฐ maxconn์ ๋๋ฌํ๋ฉด ๋ค์ ์๋ฒ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ถ์ฒ: ์์ค IP ์ฃผ์๋ ํด์๋๊ณ ์คํ ์ค์ธ ์๋ฒ์ ์ด ๊ฐ์ค์น๋ก ๋๋์ด ์์ฒญ์ ์์ ํ ์๋ฒ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ผํ ํด๋ผ์ด์ธํธ IP ์ฃผ์๊ฐ ํญ์ ๋์ผํ ์๋ฒ๋ก ์ด๋ํ๊ณ ์๋ฒ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ค(๊ณ์ธต 7)์์ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ค์
๋ ๋ค๋ฅธ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต(๊ณ์ธต 7)์์ ์คํ๋๋๋ก ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๊ฐ ๋ค๋ฅธ ํธ์คํธ์ ์์ ๋ ์ ์ฉํฉ๋๋ค. ์ด๋ URL ๋ฑ์ ํตํด ์ฐ๊ฒฐ ์ ์ก์ ์ ํํจ์ผ๋ก์จ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ HAProxy ๊ตฌ์ฑ ํ์ผ์ ์ฝ๋๋ค.
sudo vi /etc/haproxy/haproxy.cfg
๊ทธ๋ฐ ๋ค์ ์๋ ์์ ๋ฐ๋ผ ํ๋ฐํธ์๋ ๋ฐ ๋ฐฑ์๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
ํ๋ฐํธ์๋๋ ๊ฒฝ๋ก๊ฐ /blog๋ก ์์ํ๋ ๋ชจ๋ ์ฐ๊ฒฐ์ ์ ์ฉ๋๋ url_blog๋ผ๋ ACL ๊ท์น์ ์ ์ธํฉ๋๋ค. Use_backend๋ url_blog ์กฐ๊ฑด๊ณผ ์ผ์นํ๋ ์ฐ๊ฒฐ์ด blog_back์ด๋ผ๋ ๋ฐฑ์๋์์ ์ ๊ณต๋์ด์ผ ํ๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ์์ฒญ์ ๊ธฐ๋ณธ ๋ฐฑ์๋์์ ์ฒ๋ฆฌ๋๋๋ก ์ง์ ํฉ๋๋ค.
๋ฐฑ์๋ ์ธก์์ ๊ตฌ์ฑ์ ๋ ๊ฐ์ ์๋ฒ ๊ทธ๋ฃน, ์ฆ ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก http_back๊ณผ example.com/blog์ ๋ํ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ๋ blog_back์ด๋ผ๋ ์ ์๋ฒ ๊ทธ๋ฃน์ ์ค์ ํฉ๋๋ค.
์ค์ ์ ๋ณ๊ฒฝํ ํ ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ HAProxy๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
sudo systemctl restart haproxy
์์ํ๋ ๋์ ๊ฒฝ๊ณ ๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋๋ฉด ํด๋น ๊ตฌ์ฑ์ ํ์ธํ๊ณ ํ์ํ ํ์ผ๊ณผ ํด๋๋ฅผ ๋ชจ๋ ์์ฑํ๋์ง ํ์ธํ ๋ค์ ๋ค์ ์์ํด ๋ณด์ธ์.
์ค์ ํ ์คํธ
HAProxy๊ฐ ๊ตฌ์ฑ๋์ด ์คํ๋๋ฉด ๋ธ๋ผ์ฐ์ ์์ ๋ก๋ ๋ฐธ๋ฐ์ ์๋ฒ์ ๊ณต์ฉ IP ์ฃผ์๋ฅผ ์ด๊ณ ๋ฐฑ์๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋์๋์ง ํ์ธํฉ๋๋ค. ๊ตฌ์ฑ์ stats uri ๋งค๊ฐ๋ณ์๋ ์ง์ ๋ ์ฃผ์์ ํต๊ณ ํ์ด์ง๋ฅผ ์์ฑํฉ๋๋ค.
http://load_balancer_public_ip/haproxy?stats
ํต๊ณ ํ์ด์ง๋ฅผ ๋ก๋ํ ๋ ๋ชจ๋ ์๋ฒ๊ฐ ๋ น์์ผ๋ก ํ์๋๋ฉด ์ค์ ์ด ์ฑ๊ณตํ ๊ฒ์ ๋๋ค!
ํต๊ณ ํ์ด์ง์๋ ๊ฐ๋/์ค๋จ ์๊ฐ ๋ฐ ์ธ์ ์๋ฅผ ํฌํจํ์ฌ ์น ํธ์คํธ๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ ์ฉํ ๋ช ๊ฐ์ง ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์๋ฒ๊ฐ ๋นจ๊ฐ์์ผ๋ก ํ์๋๋ฉด ์๋ฒ๊ฐ ์ผ์ ธ ์๊ณ ๋ก๋ ๋ฐธ๋ฐ์ ์์คํ ์์ ํด๋น ์๋ฒ๋ฅผ pingํ ์ ์๋์ง ํ์ธํ์ธ์.
๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋ตํ์ง ์๋ ๊ฒฝ์ฐ HTTP ์ฐ๊ฒฐ์ด ๋ฐฉํ๋ฒฝ์ ์ํด ์ฐจ๋จ๋๊ณ ์์ง ์์์ง ํ์ธํ์ธ์. ๋ํ ์๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ HAProxy๊ฐ ์๋ํ๋์ง ํ์ธํ์ธ์.
sudo systemctl status haproxy
๋น๋ฐ๋ฒํธ๋ก ํต๊ณ ํ์ด์ง ๋ณดํธํ๊ธฐ
๊ทธ๋ฌ๋ ํต๊ณ ํ์ด์ง๋ฅผ ๋จ์ํ ํ๋ฐํธ ์๋์ ๋์ดํ๋ค๋ฉด ๋ชจ๋ ์ฌ๋์ด ๋ณผ ์ ์๋๋ก ๊ณต๊ฐ๋๋ฏ๋ก ์ด๋ ์ข์ ์๊ฐ์ด ์๋ ์ ์์ต๋๋ค. ๋์ haproxy.cfg ํ์ผ ๋์ ์๋ ์์ ๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์ ์ ์ ํฌํธ ๋ฒํธ๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ๋ฐ๊พธ๋ค ์ฌ์ฉ์ ์ด๋ฆ ะธ ์ํธ ์์ ํ ๊ฒ์ ์ํด:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
์ ๋ฆฌ์ค๋ ๊ทธ๋ฃน์ ์ถ๊ฐํ ํ ํ๋ฐํธ์๋ ๊ทธ๋ฃน์์ ์ด์ ํต๊ณ URI ๋งํฌ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์๋ฃ๋๋ฉด ํ์ผ์ ์ ์ฅํ๊ณ HAProxy๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
sudo systemctl restart haproxy
๊ทธ๋ฐ ๋ค์ ์ ํฌํธ ๋ฒํธ๋ก ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๋ค์ ์ด๊ณ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ํ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธํฉ๋๋ค.
http://load_balancer_public_ip:8181
๋ชจ๋ ์๋ฒ๊ฐ ์ฌ์ ํ ๋ น์์ผ๋ก ํ์๋๋์ง ํ์ธํ ๋ค์ ๋ธ๋ผ์ฐ์ ์์ ํฌํธ ๋ฒํธ ์์ด ๋ก๋ ๋ฐธ๋ฐ์ IP๋ง ์ฝ๋๋ค.
http://load_balancer_public_ip/
๋ฐฑ์๋ ์๋ฒ์ ์ต์ํ ๋ค์ํ ๋๋ฉ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ ๋๋ง๋ค ๋ค๋ฅธ ํธ์คํธ๋ก๋ถํฐ ์๋ต์ ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ์น์
์์ ๋ค์ํ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์๋ํ๊ฑฐ๋ ํ์ธํด ๋ณด์ธ์.
๊ฒฐ๋ก : HAProxy ๋ก๋ ๋ฐธ๋ฐ์
HAProxy ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ค์ ํ ๊ฒ์ ์ถํํฉ๋๋ค! ๊ธฐ๋ณธ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ค์ ์ผ๋ก๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ๊ณผ ๊ฐ์ฉ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ ๋น ๋ฅธ ์ค์ ๊ฐ์ด๋์์ ๋ค๋ฃฐ ์ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ HAProxy๋ฅผ ์ฌ์ฉํ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ํ ์๊ฐ์ผ ๋ฟ์
๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ ๋ค์ํ ๊ตฌ์ฑ์ ์คํํด ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ๋ฌ ํธ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์น ์๋น์ค๋ฅผ ํค๋๋ฃธ์ผ๋ก ๋ณดํธํ๋ฉด ๋ก๋ ๋ฐธ๋ฐ์ ์์ฒด๊ฐ ์ฌ์ ํ ์คํจ ์ง์ ์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๋ก๋ ๋ฐธ๋ฐ์ ์ฌ์ด์ ์ ๋ IP๋ฅผ ์ค์นํ๋ฉด ๊ณ ๊ฐ์ฉ์ฑ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋น์ฌ์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฝ์ค์ ๋ํด ๋ ์์๋ณด๊ธฐ
์ถ์ฒ : habr.com