본문 바로가기
IT Knowledge/HAProxy

HAProxy Install(디렉토리 지정 설치)

by Seok. 2022. 1. 24.
반응형

회사에서 Load Balance 필요할때,

유료 로드밸런스를 구매해서 사용하기도 하지만, 돈이 없거나 잠시 사용 or 테스트 용으로 사용할때

무료로 사용하는 용도로 HAProxy 자주 구성하여 활용합니다.

 

오늘은 HAProxy 설치&구성하는 방법을 작성합니다.

 

OS APP 영역을 구분하기 위해,

HAProxy yum 통한 설치가 아닌 디렉토리를 지정하여 설치하는 방식으로 진행합니다.

 

 

[HAProxy Reverse Proxy Load Balance 동작 방식]

2020.12.10 - [IT Knowledge/HAProxy] - HAProxy, 오픈소스 로드 밸런서

 

 

[HAProxy Latest 버전 확인]

어떤 버전의 HAProxy 설치할 것인가?

경로 : http://www.haproxy.org/

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

 

 

반응형

댓글