1,Haproxy 기본 설치 및 설정 방법
## 컴파일로 설치 진행 하기 때문에 의존성 관련 패키지를 설치 한다.
yum -y install make gcc gcc-c++ pcre-devel openssl-devel
## haproxy 1.6.1 버전을 다운 로드 한다.(2016년 3월 기준 1.6.x버전 안정화 버전이며, 1.7 버전에 개발 버전으로 배포중)
[root@NODE0 ~]#wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.1.tar.gz
## /usr/local/haproxy 경로로 haproxy 를 설치 한다
[root@NODE0 ~]# tar xvzf haproxy-1.6.1.tar.gz
[root@NODE0 ~]# cd haproxy-1.6.1
[root@NODE0 ~]# make prefix=/usr/local/haproxy install
## 해당 경로에 정상 적으로 설치 된것을 확인 한다.
[root@NODE0 haproxy-1.6.1]# cd /usr/local/haproxy/
[root@NODE0 haproxy]# ls
doc sbin share
## haproxy 데몬은 특정 cfg를 생성후 해당 파일을 참조한 데몬으로 구동 된다. 테스트를 위해 /etc/haproxy/1.cfg 파일을 생성 한다.
## 아래 config 는 가장 기본적인 config 로 자세한 설명은 우선 생략하고, haproxy 서버의 80 포트로 들어오면 192.168.229.135:80 로 proxy 되는 설정 이다.
[root@NODE0 haproxy]# vi etc/haproxy/i.cfg
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
server server1 192.168.229.135:80
## 설치된 haproxy경로에 있는 sbin 디렉토리의 haproxy 명령어로 -f는 데몬 실행시 읽으려는 cfg 파일을 나타내며,
## 실행전 -c 옵션으로 check mode로 체크만 실행 한다. 아래와 같이 vaild 를 확인 한다.
[root@NODE0 haproxy]# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/i.cfg -c
Configuration file is valid
## -f 옵션만 추가 하여, proxy 를 실행 한다. proxy 가 정상적으로 동작 할 경우 listening 되어 있는 포트를 확인 하며,
## curl 을 통하여 정상적으로 페이지가 열리는 것을 확인 할 수 있다.
[root@NODE0 haproxy]# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/i.cfg
[root@NODE0 haproxy]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1092/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1178/master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2407/haproxy
tcp 0 0 :::22 :::* LISTEN 1092/sshd
tcp 0 0 ::1:25 :::* LISTEN 1178/master
[root@NODE0 haproxy]# curl 192.168.229.138
node1
2.haproxy cfg 옵션
- haproxy 의 옵션은 https://cbonte.github.io/haproxy-dconv/configuration-1.6.html 에서 좀더 자세하게 설명 되어 있다.
- 각 지시자는 크게 global,defaults,frontend,backend ,listen 등 의 섹션으로 구성 되어 있으며 각각의 섹션 하단에 자세한 파라미터를 추가 하는 방식으로 구성 되어 있다.
- global은 프로세스 전체의 섹션으로 전체적인 프로세스에 관련된 부분을 설정 한다.
- defaults는 global 에 종속 되는 섹션으로 proxy mode,time out 등 해당 cfg 프로세스를 설정 한다.
- frontend 에서는 연결에 필요할 vitual ip 에 관련된 설정을 진행 한다. 해당 frontend 에서 설정된 아이피는 backend로 forward 된다.
- backend 는 위에서 설명한 frontend 에서 forward 된 연결을 받을 실제 real sever 아이피 관련 설정 이다.
2-1. global
daemon # 데몬 형식으로 fork 하면서 실행 하는 파라미터 만약 추가 하지 않을 경우 백그라운드로 돌려야 한다.
maxconn 256 #최대 연결수를 지정 한다 ulimit -n 을 통해 해당 서버의 기본 프로세스가 오픈 할 수 있는 갯수 만큼 지정 할 수 있다.
2-2. defaults
mode http # 프록시 모드로 tcp,http,health 3가지 모드가 있다. 설정 하지 않을 경우 기본 모드는 tcp 이며,
#tcp 는 해당 포트에대한 어플리케이션 프록시 이다,http 모드는 http 인스턴스에서 작동 하며,health 는 단순한 health check 모드 이다.
timeout connect 5000ms # 전체 외부 클라이언트에서 실제 real 서버까지의 timout 설정
timeout client 50000ms # 외부 클라이언트에서 vip 까지의 timeout 설정
timeout server 50000ms # vip 서버에서 실제 real 서버 까지의 timout 설정
2-3. frontend http-in # frontend 섹션 설정시 frontend <name> 구성으로 뒤에 해당 frontend 의 이름으로 섹션을 설정 한다.
# 한 프로세스에서 여러 섹션 설정이 가능 하다.
bind *:80 # bind 지시자는 apche 의 binding 설정과 유사 하며, 해당 서버에서 listening 되어야 하는 아이피와 포트를 지정 한다.
default_backend servers #default_backend는 frontend 에서 받은 정보를 real backend로 보낼 이름을 지정 한다 아래 servers 라는 backend 설정된 아이피로 포워딩 된다.
2-4. backend servers
server server1 192.168.229.135:80
# server 지시자는 server <name> <address>[:[port]] [param*] 형태로 실제 real 서버의 정보를 나타낸다 name 에 해당 real 서버의 이름을 명시 하며 뒤에 아이피 포트 추가적인 parameter 를 추가 한다.
2-5 listen # 해당 섹션은 frontend+ backend 으로 한번에 설정 가능한 섹션이다.
반응형
'System > Haproxy' 카테고리의 다른 글
nbproc 파라미터를 통한 haproxy데몬 추가 (0) | 2016.03.11 |
---|---|
haproxy balance 설정 (0) | 2016.03.11 |
keepalived,haproxy 를 이용한 vrrp구성 (0) | 2016.03.06 |
HAProxy의 설정을 변경 한 후에 reload (0) | 2016.02.10 |
haproxy 웹ui 인터페이스 설정 (0) | 2016.02.10 |