작성중
다운로드
**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