Haproxy SSL 가능하게 설치

Haproxy

Note : HAProxyTCP, HTTP기반의 high availability, load balancing 오픈소스 어플리케이션이다. 예를 들어 여러대의 웹서버들에 대해 부하분산이 필요하다면 웹서버들 앞단에 HAProxy를 설치해 부하를 분산시키거나 failover 할 수 있다.
더 자세한 정보는 http://www.haproxy.org/에서 확인 할 수 있다.

다운로드

Note : 현재 stable 최신 version인 1.6.1 버전을 다운 받는다.

wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.1.tar.gz
필요한 패키지 설치

Note : 본 문서에서는 HAProxy를 소스컴파일 방법으로 설치 하는 방법을 설명하고 있기 때문에 컴파일에 필요한 컴파일러와 기타 라이브러리들을 설치한다.

yum -y install make gcc gcc-c++ pcre-devel openssl-devel
압축 해제
tar -xvzf haproxy-1.6.1.tar.gz
cd haproxy-1.6.1
컴파일
make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz CPU=native USE_PCRE=1 USE_LIBCRYPT=1 USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1
컴파일 후 openssl 라이브러리 연결 확인
ldd haproxy | grep ssl

결과

        libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fb32e528000)
바이너리 인스톨
make PREFIX=/usr/local/haproxy install
install -d "/usr/local/haproxy/sbin"
install haproxy "/usr/local/haproxy/sbin"
install haproxy-systemd-wrapper "/usr/local/haproxy/sbin"
install -d "/usr/local/haproxy/share/man"/man1
install -m 644 doc/haproxy.1 "/usr/local/haproxy/share/man"/man1
install -d "/usr/local/haproxy/doc/haproxy"
for x in architecture close-options configuration cookie-options intro linux-syn-cookies management network-namespaces proxy-protocol; do \
                install -m 644 doc/$x.txt "/usr/local/haproxy/doc/haproxy" ; \
        done
haproxy에서 사용 할 인증서 만들기

Note: 보통 SSL 인증서의 형태는 key파일과 인증서 파일이 별개로 되어있지만 HAProxy에 적용을 하기 위해서는 key와 인증서가 합쳐진 pem 형태의 파일로 만들어야 한다. key 파일과 인증서 파일의 확장자는 경우에 따라 다를 수 있으니 자신의 환경에 맞게 두 파일을 병합하다.

cat cert.key cert.crt > cert.pem
설정파일 예제
cat /etc/haproxy.cfg
global
    log                         127.0.0.1 local2
    chroot                      /var/lib/haproxy
    pidfile                     /var/run/haproxy.pid
    maxconn                     50000       # 최대 동시접속 설정, 1G 메모리에 40000 ~ 50000만
    user                        haproxy     # 실행 유저
    group                       haproxy     # 실행 그룹
    tune.bufsize                65536
    tune.ssl.default-dh-param   2048
    nbproc                      1           # 실행시킬 프로세스 개수
    daemon                                  # daemon 모드로 실행(권장)
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http            # instance 운영 모드 ( http, tcp, health 가 있음)
    retries                 3               # 서버 접속 실패시 재시도 횟수
    log                     global          # logging 설정, global 설정 따름
    maxconn                 50000
    option                  dontlognull     # null connections 에 대한 로깅 안함.
    option                  httpclose       # keepalive 비활성화.
    option                  http-server-close
    option                  forwardfor      except 127.0.0.0/8
    option                  redispatch
    timeout                 connect         15s
    timeout                 client          15s
    timeout                 server          15s
frontend www.domain.com
    bind            192.168.0.10:80
    log             global
    option          httplog
    option          accept-invalid-http-request
    default_backend backend_www.domain.com
frontend https_www.domain.com
    bind            192.168.0.10:443   ssl crt /usr/local/haproxy/SSL/cert.pem
    mode            http
    option          httpclose
    option          forwardfor
    option          accept-invalid-http-request
    reqadd          X-Forwarded-Proto:\ https
    default_backend backend_www.domain.com
backend backend_www.domain.com
    balance source
    server  ww01.domain.com 192.168.0.11:80 check inter 10000 rise 3 fall 3
    server  ww02.domain.com 192.168.0.12:80 check inter 10000 rise 3 fall 3
    option httpchk HEAD /check.html HTTP/1.1\r\nHost:\ www.domain.com
listen stats 0.0.0.0:8000
    mode http
    stats enable
    stats uri /haproxy
    stats realm HAProxy
    stats auth id:password

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다