Network & Server Factory

개인 공부 기록

Server & OS/Linux

[HAProxy] Ubuntu에 HAProxy 설치하고 웹 서버 2대 로드밸런싱

1nfra 2020. 11. 11. 21:59
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 옵션을 쓰면 응답하지 않는 서버는 자동으로 제외됩니다.
728x90
서울
--:--:--
-전체 글
-카테고리
오늘 방문