-
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/'기타' 카테고리의 다른 글
Chef Cookbook 만들기 (0) 2014.04.11 Chef 설치하기 (0) 2014.04.08 bash 커맨드 라인에 git branch 정보 보여주기. (0) 2014.03.13 MongoDB Replica Set 구성 설정방법 (0) 2013.05.21 무료 프로젝트 호스팅 서비스간(Google Project Hosting, GitHub, Sourceforge) 비교 (0) 2012.12.11 댓글