출처 : http://livegs.tistory.com/43
HAproxy는 고가용성 프록시를 의미합니다.
이름에서도 알 수 있다시피 High Availability proxy 입니다
C 언어로 작성되었으며 무료 오픈소스 프로그램입니다.
HAproxy는 TCP / HTTP 로드 밸런서로 프록시 솔루션에 사용됩니다.
HAproxy의 일반적인 용도는 웹서버, DB 서버 등 부하를 분산시키는 용도로 많이 사용되고 있습니다.
BSD, 리눅스, 솔라리스 등에서 사용할 수 있으며, 물론 윈도우는 안됩니다. (-0-;)
(여담이지만, 윈도우는 뭐 다 돈이네요 ;;;)
**********************************************************************************************************
* 환경
OS : Ubuntu 16.04.1 LTS
HAproxy : 1.6.7
WebServer : Apache/2.4.18 (Ubuntu)
VM : VirtualBox 5.1.2
* 참고
sudo 로 진행하지 않고 root 로 진행합니다.
**********************************************************************************************************
* 준비사항
VM 환경에서 진행되며, 로드밸런서이기 때문에
HAproxy 를 설치할 VM 하나, 웹서버 VM 2개를 먼저 준비합니다.
VM 을 만드는 부분은 여기서 설명하지 않습니다.
VM 의 상세 내역은 아래와 같습니다.
VM |
OS |
IP |
Hostname |
HAproxy |
Ubuntu 16.04.1 LTS 64bit |
172.16.1.5 |
HAproxy |
Webserver01 |
Ubuntu 16.04.1 LTS 64bit |
172.16.1.15 |
webserver-01 |
Webserver02 |
Ubuntu 16.04.1 LTS 64bit |
172.16.1.16 |
webserver-02 |
**********************************************************************************************************
1. Apache 설치
# apt-get install apache2
- 모든 VM 에 apache 를 모두 설치합니다.
2. HAproxy 저장소 등록 및 업데이트
# apt-add-repository ppa:vbernat/haproxy-1.6
# apt-get update
3. HAproxy 설치
# apt-get install haproxy
4. haproxy.cfg 수정
# vi /etc/haproxy/haproxy.cfg
global #log /dev/log local0 #log /dev/log local1 notice log 127.0.0.1 local2 chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon . . . |
위처럼 log 를 주석처리 해주고 log 127.0.0.1 local2 를 입력해 줍니다.
5. rsyslog.conf 파일 수정
# vi /etc/rsyslog.conf
$ModLoad imudp $UDPServerRun 514 |
파일에 위 부분이 주석처리 되어 있다면 주석을 풀어주시고 없다면 입력해 줍니다.
6. haproxy.conf 파일 생성하고 내용 추가
# vi /etc/rsyslog.d/haproxy.conf
local2.* /var/log/haproxy.log |
7. rsyslog 서비스 재시작
# service rsyslog restart
8. haproxy.cfg 수정
# vi /etc/haproxy/haproxy.cfg
defaults log global mode http option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 20 timeout queue 86400 timeout connect 86400 timeout client 86400 timeout server 86400 timeout http-keep-alive 30 timeout check 20 maxconn 50000 frontend LB bind 172.16.1.5:80 reqadd X-Forwarded-Proto:\ http default_backend bkLB backend bkLB mode http stats enable stats hide-version stats uri /stats stats realm Haproxy\ Statistics stats auth haproxy:admin balance roundrobin option httpchk option httpclose option forwardfor cookie LB insert server webserver-01 172.16.1.15:80 cookie webserver-01 check server webserver-02 172.16.1.16:80 cookie webserver-02 check |
10. HAproxy 재시작
# service haproxy restart
11. 시스템 시작시 자동으로 시작하기 위해 파일 수정
# vi /etc/default/haproxy
ENABLED=1 |
12. 정상적으로 동작하는지 확인하기 위해 웹서버 index.html 를 수정
- webserver-01 에서
# mv /var/www/html/index.html /var/www/html/index.html.backup
# vi /var/www/html/index.html
webserver-01 |
- webserver-02 에서
# mv /var/www/html/index.html /var/www/html/index.html.backup
# vi /var/www/html/index.html
webserver-02 |
13. 로드밸런싱이 되는지 확인
# curl 172.16.1.5
webserver-01
# curl 172.16.1.5
webserver-02
# curl 172.16.1.5
webserver-01
# curl 172.16.1.5
webserver-02
위 처럼 roundrobin 형식으로 정상적으로 나오는지 확인
14. HAproxy 통계 페이지 확인
- 웹브라우저에서 172.16.1.5/stats 를 입력
로그인 화면에서 haproxy / admin 으로 로그인
* 참고
hosts 파일 수정
127.0.0.1 localhost 127.0.1.1 HAproxy # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouter 172.16.1.15 webserver-01 172.16.1.16 webserver-02 |
출처: http://livegs.tistory.com/43 [if (feel)]
출처: http://livegs.tistory.com/43 [if (feel)]