IT Knowledge/HAProxy

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

Seok. 2022. 1. 24. 22:30
반응형

회사에서 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

 

 

반응형