Ubuntu VM 3대로 HAProxy 로드 밸런서(192.168.0.1) 1대와 Apache2 웹 서버 2대를 구성했습니다. haproxy.cfg에 두 웹 서버를 backend로 등록하고, 같은 주소로 접속할 때마다 test1, test2 페이지가 번갈아 나오는 것을 확인했습니다.

1. HAProxy란
HAProxy는 오픈소스 로드 밸런서입니다. 들어오는 요청을 여러 서버에 나눠 보내 한 서버에 부하가 몰리지 않게 합니다. 로드 밸런서 개념은 아래 글에 정리해 두었습니다.
로드밸런서(Load Balancer)
로드밸런서는 서버의 부하(로드)를 분산(밸런싱)해주는 기술을 말한다. 클라이언트와 서버 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을관리해 한 서버에 트래픽이 집중
alsrbdmsco0409.tistory.com
2. 구성

준비한 가상 머신 3대
| 역할 | IP |
| HAProxy 로드 밸런서 | 192.168.0.1 |
| 웹 서버 1 (test1) | 192.168.0.10 |
| 웹 서버 2 (test2) | 192.168.0.11 |
3. 공통 설정
모든 VM에서 IP 포워딩을 켜고 적용합니다. 그다음 위 표대로 IP를 설정합니다.
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
4. HAProxy 설치와 설정
로드 밸런서 VM에 HAProxy를 설치합니다.
apt-get update
apt-get install -y haproxy
/etc/haproxy/haproxy.cfg 맨 아래에 80번 포트로 받은 요청을 두 웹 서버에 번갈아 보내는 설정을 추가합니다. 아래는 캡처의 설정을 정리한 예시입니다.
frontend http_front
bind *:80
default_backend web_back
backend web_back
balance roundrobin
server web01 192.168.0.10:80 check
server web02 192.168.0.11:80 check

haproxy.cfg에 추가한 설정
HAProxy를 시작합니다.
/etc/init.d/haproxy start
5. 웹 서버 준비
두 웹 서버에 Apache2를 설치합니다.
apt-get install -y apache2
vi /var/www/html/index.html
구분하기 쉽게 index.html의 title을 웹 서버 1은 test1, 웹 서버 2는 test2로 바꿉니다.

index.html의 title 수정
서비스를 시작하고, 각 서버에서 127.0.0.1로 접속해 title을 확인합니다.
service apache2 start


6. 결과
HAProxy 서버 주소(192.168.0.1)로 접속하면 test1 페이지가 열립니다.

첫 접속: test1
같은 주소로 다시 접속하면 test2가 나옵니다. 요청이 두 웹 서버에 번갈아 분산되고 있습니다.

다시 접속: test2
7. 정리
- HAProxy는 frontend에서 요청을 받고 backend의 서버들로 나눠 보냅니다.
- balance roundrobin은 요청을 서버에 차례로 보냅니다.
- server 줄의 check 옵션을 쓰면 응답하지 않는 서버는 자동으로 제외됩니다.
'Server & OS > Linux' 카테고리의 다른 글
| [Ubuntu Server] 우분투 서버 설치 과정 정리 (0) | 2021.01.28 |
|---|---|
| [Linux] Ubuntu에서 정적 라우팅 추가 (0) | 2021.01.27 |
| [Debian] NFS 서버 구성하고 Windows에서 접속 (0) | 2020.08.17 |
| [Debian] OpenSSL로 하위 인증 기관 구축 (0) | 2020.08.14 |
| [Debian] OpenSSL로 Sub CA용 인증서 요청서 만들고 서명 (0) | 2020.08.14 |