회사에서 Load Balance가 필요할때,
유료 로드밸런스를 구매해서 사용하기도 하지만, 돈이 없거나 잠시 사용 or 테스트 용으로 사용할때
무료로 사용하는 용도로 HAProxy를 자주 구성하여 활용합니다.
오늘은 HAProxy를 설치&구성하는 방법을 작성합니다.
OS와 APP의 영역을 구분하기 위해,
HAProxy를 yum을 통한 설치가 아닌 디렉토리를 지정하여 설치하는 방식으로 진행합니다.
[HAProxy의 Reverse Proxy 겸 Load Balance 동작 방식]
2020.12.10 - [IT Knowledge/HAProxy] - HAProxy, 오픈소스 로드 밸런서
[HAProxy Latest 버전 확인]
어떤 버전의 HAProxy를 설치할 것인가?
End of Life가 가장 긴 버전을 선택 2.4.12!
[Pre-Requirement 설치]
Yum install gcc pcre pcre-devel systemd-devel zlib zlib-devel opensssl openssl-devel
[HAProxy 설치]
설치 위치는 /haproxy 아래에 모두 설치
이후 HAProxy 관리는 /haproxy 폴더만 관리하면 된다.
[HAProxy Latest 다운로드 경로]
# mkdir /haproxy
# cd /haproxy
# wget https://www.haproxy.org/download/2.4/src/haproxy-2.4.12.tar.gz --no-check-certificate
# tar zxvf haproxy-2.4.12.tar.gz
# mv haproxy-2.4.12 haproxy-2.4.12-installed
[HAProxy 소스 빌드]
# cd haproxy-2.4.12-installed
# make TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_PCRE=1
# make install PREFIX=/haproxy/haproxy-2.4.12
# ln -s /haproxy/haproxy-2.4.12 /haproxy/haproxy
설치 옵션 명 | 설명 | 비고 |
USE_OPENSSL | ssl 인증서 활성화 | |
USE_ZLIB | 압축을 사용할 경우 | |
USE_SYSTEMD | systemd를 통해서 서비스 컨트롤 | |
USE_PCRE | 펄 호환 정규식을 사용할 경우 |
sbin 등록
# cd /usr/sbin/
# ln -s /haproxy/haproxy/sbin/haproxy haproxy
설치된 haproxy 버전확인
# haproxy -vv
개별 폴더 생성
//haproxy 설정파일 폴더
# mkdir /haproxy/haproxy/config
//haproxy 에러페이지 모음
//haproxy.cfg 설정 파일 내 http status 상태 코드에 따른 error 안내 페이지 설정
# mkdir /haproxy/haproxy/errors
//haproxy SSL키파일 모음
//haproxy.cfg 설정 파일 내 인증서 파일 지정 위치에 key 파일 가져다 놓기
# mkdir /haproxy/haproxy/keys
//haproxy Log 파일 모음
# mkdir /haproxy/haproxy/log
//haproxy service 등록 파일 모음
# mkdir /haproxy/haproxy/systemd
[HAProxy 상세설정]
2022.01.24 - [IT Knowledge/HAProxy] - HAProxy Config파일 옵션 정리!!
# cd /haproxy/haproxy/config
# vi haproxy.cfg
# global Settings
global
daemon
maxconn 10000
log 127.0.0.1:514 local0
...
# defauls 섹션(frontend, backend, listen)에 공통으로 적용되는 설정
defaults
log global
mode http
option httplog
option forwardfor
errorfile 400 /haproxy/haproxy/errors/400.http
...
# frontend 클라이언트로부터 연결을 받아들이는 설정 ( 443 포트 )
frontend https-income
mode http
bind *:443 ssl crt /haproxy/haproxy/keys/certificate.pem #ssl 인증서 파일
acl host_xxx hdr(host) -i xxx.example.com
use_backend http-xxx if host_xxx
...
# backend 클라이언트의 연결을 서버로 전달하는 설정
backend http-xxx
balance roundrobin
#xxx server1
server xxx1 localhost:8888
#xxx server2
server xxx2 localhost:8889
...
Tip! haproxy config 설정 문법 체크 # haproxy -f <Config File Path> -c # haproxy -f /haproxy/haproxy/config/haproxy.cfg -c |
[서비스(systemd) 등록]
haproxy.service 파일 생성 및 작성
# vi /haproxy/haproxy/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=network.target
[Service]
Environment="CONFIG=/haproxy/haproxy/config/haproxy.cfg"
Environment="PIDFILE=/var/run/haproxy.pid"
ExecStartPre=/sbin/haproxy -f $CONFIG -c
ExecStart=/sbin/haproxy -Ws -f $CONFIG -p $PIDFILE
ExecReload=/sbin/haproxy -f $CONFIG -c -q
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
Type=notify
[Install]
WantedBy=multi-user.target
haproxy.service systemd 등록
# cd /etc/systemd/system/
# ln -s /haproxy/haproxy/systemd/system/haproxy.service haproxy.service
haproxy 서비스 enable/start/stop/reload/status
systemctl enable haproxy
systemctl start haproxy
systemctl stop haproxy
systemctl reload haproxy
systemctl status haproxy
[haproxy log 설정 ( rsyslog.d 이용 )]
# cd /etc/rsyslog.d/
# vi haproxy.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
$template Haproxy, "%msg%\n"
local0.* /haproxy/haproxy/log/haproxy.log
local0.notice /haproxy/haproxy/log/haproxy-allbutinfo.log
# systemctl restart rsyslog
'IT Knowledge > HAProxy' 카테고리의 다른 글
HAProxy Log 설정하기! (2) | 2022.05.17 |
---|---|
keepalived 설정 파일 옵션 정리 (0) | 2022.01.29 |
Keepalived 설치 및 동작방식(feat. HAProxy의 고가용성 구성) (0) | 2022.01.29 |
HAProxy Config파일 옵션 정리!! (0) | 2022.01.24 |
HAProxy, 오픈소스 로드 밸런서 (0) | 2020.12.10 |
댓글