haproxy ssl 지원 가능하게 설치 하기(작성중)

작성중

다운로드

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

wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.11.tar.gz

사전작업

yum -y install make gcc gcc-c++ pcre-devel openssl-devel

설치

  • 압축 해제 tar -xvzf haproxy-1.5.11.tar.gz
    cd haproxy-1.5.11

  • 컴파일 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 (0x00007f485bdfc000)

  • 바이너리 인스톨 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 configuration architecture haproxy-en haproxy-fr; 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.1rnHost: www.domain.com
listen stats 0.0.0.0:8000
    mode http
    stats enable
    stats uri /haproxy
    stats realm HAProxy
    stats auth id:password

댓글 남기기