1. HAProxy에 대하여
기존 하드웨어 방식의 로드 밸런서를 어느정도 대체 가능한 오픈소스 솔루션으로 알려져 있습니다.
네트워크 스위치에서 제공하는 L4, L7의 기능 및 로드 밸런싱 기능을 일부 제공하고 있습니다.
2. 구성 정보
OS : CentOS 6.6 64bit
Apache 2.2.15
MySQL 5.6.25
HAProxy 192.168.2.4
WEB1 192.168.2.201
WEB2 192.168.2.202
3. 설치
#yum -y update
#yum -y openssl-devel gcc gcc-c++ // 설치 전 필요한 라이브러리
#wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.14.tar.gz
#tar zxvf haproxy-1.5.14.tar.gz
#cd haproxy-1.5.14
#make TARGET=linux26 USE_OPENSSL=1 ADDLIB=-lz
#make install
#cp ./examples/haproxy.init /etc/rc.d/init.d/haproxy // 실행 스크립트 복사
#chmod 755 /etc/rc.d/init.d/haproxy
#mkdir -p /etc/haproxy
#cp ./examples/haproxy.cfg /etc/haproxy/ // 샘플 설정 파일 복사
#mkdir -p /etc/haproxy/errors
#cp ./examples/errorfiles/* /etc/haproxy/errors/
#cd /usr/sbin
#ln -s /usr/local/sbin/haproxy haproxy
#useradd haproxy // 계정 생성
4. 설정
- 설정파일 구성
크게 global, defaults, listen, frontend, backend의 영역으로 구분되며
global은 전체 영역에 걸쳐 적용되는 기본 설정을 담당합니다.
defaults는 이후 오는 영역(frontend, backend, listen)에 적용되는 설정이고
frontend는 클라이언트 연결을 받아들이는 소켓에 대한 설정,
backend는 앞에서 들어온 연결에 할당될 프록시 서버들에 대한 설정
listen : frontend와 backend로 사용되는 포트를 한번에 설정하는 영역. TCP 프록시에 주로 이용 됩니다.
- 간단한 웹서버 2대 로드밸런싱 하는 예제
#vi /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
chroot /usr/share/haproxy
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
retries 3
redispatch
maxconn 2048
contimeout 5000
clitimeout 50000
srvtimeout 50000
stats enable
stats uri /haproxy_stats
stats refresh 10s
listen test-web 192.168.2.4:80
mode http
option log-health-checks
cookie SERVERID rewrite
cookie JSESSIONID prefix
balance roundrobin
server web1 192.168.2.201:80 cookie testweb1 check inter 2000 rise 2 fall 5
server web2 192.168.2.202:80 cookie testweb2 check inter 2000 rise 2 fall 5
- 옵션 설명
global 전역 옵션 섹션
daemon : 백그라운드 모드(background mode)로 실행
log : syslog 설정
log-send-hostname : hostname 설정
uid : 프로세스의 userid를 number로 변경
user : 프로세스의 userid를 name으로 변경
node : 두 개 이상의 프로세스나 서버가 같은 IP 주소를 공유할 때 name 설정(HA 설정)
maxconn : 프로세스당 최대 연결 개수
Defaults 기본 옵션 섹션
log : syslog 설정
maxconn : 프로세스당 최대 연결 개수
listen webfarm 10.101.22.76:80 : haproxy name ip:port
mode http : 연결 프로토콜
option httpchk : health check
option log-health-checks : health 로그 남김 여부
option forwardfor : 클라이언트 정보 전달
option httpclose : keep-alive 문제 발생 시 off 옵션
cookie SERVERID rewrite : 쿠키로 서버 구별 시 사용 여부
cookie JSESSIONID prefix : HA 구성 시 prefix 이후에 서버 정보 주입 여부
balance roundrobin : 순환 분배 방식
stats enable : 서버 상태 보기 가능 여부
stats uri /admin : 서버 상태 보기 uri
server aaa.aaa 192.168.2.201:80 cookie testweb1 check inter 2000 rise 2 fall 5
real server 정보(server [host명] [ip]:[port] cookie [서버쿠키명] check inter [주기(m/s)] rise [서버구동여부점검횟수], fall [서비스중단여부점검횟수])
- 로그 설정
haproxy의 경우 로그를 UDP를 통해 남기기 때문에
rsyslog에서 UDP 관련 로그 수집이 가능토록 설정이 필요함
#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.* ~
5. 프로세스 시작 및 테스트
#/etc/init.d/haproxy start
- 상기 예제 처럼 stats enable 옵션을 부여하여 웹콘솔상에서 현황 확인이 가능 합니다.
6. 테스트 진행
apache ab를 통한 간단한 부하 테스트 진행을 해 보았습니다.
ServerLimit 256
MaxClients 256
#ab -n 2000 -c 1000 http://192.168.2.4/
ServerLimit 2048
MaxClients 2048
#ab -n 5000 -c 1000 http://192.168.2.4/
* 비록 간단한 index page 호출로 테스트를 진행 하였지만 로드밸런서의 성능 문제로 지연값이 발생하진 않음을 확인하였지만
절대적인 기준의 잣대는 아니니 참고만 하시기 바랍니다.
[출처] HAProxy 소개와 설정 (1/2)|작성자 에이원네트웍스
'기술자료 > 기술운영자료' 카테고리의 다른 글
SSH root 로그인 제한 (0) | 2016.03.20 |
---|---|
[Linux] Opensuse-graphic 설치메뉴얼 (0) | 2016.03.20 |
HAProxy mysql 로드밸런싱 구성 테스트(2/2) (0) | 2016.03.20 |
HAProxy + apache + mod_rpaf 구성을 이용한 웹로그 설정 (0) | 2016.03.20 |
Linux 방화벽 TCP Wrapper (0) | 2016.03.20 |