ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HAProxy 설정 및 실행
    기타 2014. 3. 25. 09:00

    HAProxy
    소프트웨어 프록시. 
    HTTP 프로토콜에 대한 프록시와 일반 TCP 프로토콜에 대한 프록시가 가능함.
    로드밸런서로 작동할 수 있고 라운드로빈 뿐만이 아니라 다양한 로드밸런싱 알고리즘을 제공함.
    도착지 주소에 IP뿐만 아니라 URL을 사용할 수 있음


    설치
    OS 환경 : Ubuntu 12.04, 64bit

    다운로드
    wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz

    압축풀기
    tar zxvf haproxy-1.4.24.tar.gz

    압축푼 디렉토리로 이동
    cd haproxy-1.4.24/

    소스 빌드
    make TARGET=linux26

    설치
    sudo make install


    실행
    haproxy -f 설정파일명
    설정 파일들은 소스 디렉토리의 examples, tests 디렉토리에 *.cfg 파일 형태로 존재함.


    설정파일 구성
    global, defaults, listen, frontend, backend의 영역으로 구분 됨.
    global은 전체 영역에 걸쳐 적용되는 기본 설정을 담당.
    defaults는 이후 오는 영역(frontend, backend, listen)에 적용되는 설정.
    frontend는 클라이언트 연결을 받아들이는 소켓에 대한 설정.
    backend는 앞에서 들어온 연결에 할당될 프록시 서버들에 대한 설정
    listen : frontend와 backend로 사용되는 포트를 한번에 설정하는 영역. TCP 프록시에서만 이용됨.

    80포트로 들어온 요청을 로컬의 8000, 8001포트로 포워딩 하는 간단한 설정 예제

       global
            daemon
            maxconn 256
            log 127.0.0.1 local0 info

        defaults
            mode tcp
            timeout connect 5000ms
            timeout client 50000ms
            timeout server 50000ms

        frontend http-in
            mode http
            bind *:80    #들어오는 포트 정보
            log  global
            option httplog
            default_backend servers

        backend servers      #이 블록에 로드밸런싱해서 연결할 포트 정보 나열
            mode http
            server server1 127.0.0.1:8000 maxconn 32    #연결될 포트정보
            server server2 127.0.0.1:8001 maxconn 32    #연결될 포트정보

        listen tcp-in
            bind *:9090
            log global
            mode tcp
            option tcplog
            server tcpserver 127.0.0.1:8000


    로그 남기기 설정
    haproxy는 로그를 UDP를 통해서 남김.
    그래서 시스템에서 UDP를 통한 로그를 수집할 수 있도록 rsyslog 관련 설정을해 주어야 함.

    vi /etc/rsyslog.d/haproxy.conf

    $ModLoad imudp
    $UDPServerAddress 127.0.0.1
    $UDPServerRun 514
    $template Haproxy,"%msg%\n"
    local0.=info -/var/log/haproxy.log;Haproxy
    local0.notice -/var/log/haproxy-status.log;Haproxy
    local0.info -/var/log/haproxy-info.log;Haproxy
    ### keep logs in localhost ##
    local0.* ~


    rsyslog 재시작
    restart rsyslog


    logrotate를 이용해 로그파일 관리
    vi /etc/logrotate.d/haproxy  파일 편집.

    /var/log/haproxy.log {
        missingok
        notifempty
        shared-scripts
        rotate 60
        daily
        compress
        postrotate
            reload rsyslog >/dev/null 2>&1 || true
        endscript
    }



    참고 
    http://haproxy.1wt.eu/
    http://cbonte.github.io/haproxy-dconv/configuration-1.4.html
    http://sharadchhetri.com/2013/10/16/how-to-enable-logging-of-haproxy-in-rsyslog/
    http://kvz.io/blog/2010/08/11/haproxy-logging/

    댓글

Designed by Tistory.