개발/Linux

CentOS7 haproxy 원하는(최신) 버전 설치

devbrain 2019. 11. 1. 15:33

참조 : https://findstar.pe.kr/2018/08/14/fix-haproxy-reload-fail/

시스템에 대한 이해도가 높고, rsyslog 사용 및 서비스 무중단 처리에 대한 방법

 

참조 : https://www.lesstif.com/pages/viewpage.action?pageId=24445064

systemctl 사용하는 여러가지 방법들 잘 정리됨

 

참조 : https://github.com/haproxy/haproxy/blob/master/contrib/systemd/haproxy.service.in

haproxy systemctl 등록 스크립트

 

CentOS7 에서 yum 으로 haproxy 설치할 때 버전이 1.5x 버전이 설치된다.

 

그래서 다른 버전을 설치하려면 소스 컴파일을 하여 바이너리 생성하고 

 

systemd 스크립트를 작성하여 서비스에 등록해야 한다.

 

 

 

자, 지금부터 실습!

 

yum install -y epel-release   #저장소 업데이트

 

# haproxy 원하는 버전 고르기

http://www.haproxy.org/download/

 

# 나는 1.9 버전 다운로드

wget http://www.haproxy.org/download/1.9/src/haproxy-1.9.12.tar.gz 

 

tar -xzvf haproxy-1.9.12.tar.gz   # 압축해제

 

cd haproxy-1.9.12  # 소스 폴더 이동

 

# 2.2 버전 다운로드

wget www.haproxy.org/download/2.1/src/haproxy-2.1.7.tar.gz

 

# 빌드에 필요한 라이브러리 설치

yum install -y gcc openssl pcre-static pcre-devel systemd-devel openssl-devel

 

# 옵션넣어 haproxy 바이너리 생성

# 1.7 이하 버전에서는 USE_SYSTEMD 옵션이 먹지 않아서 systemctl 에 등록되지 않는다.

make TARGET=linux2628 USE_OPENSSL=1 USE_PCRE=1 USE_ZLIB=1 USE_SYSTEMD=1

 

# 2.0 이상 버전에서는 TARGET=linux2628 을 더 이상 사용할 수 없다. 아래처럼 해야 한다.

make TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_ZLIB=1 USE_SYSTEMD=1    

 

./haproxy -v  # 생성된 haproxy 버전 확인

./haproxy -vv | grep -i systemd    # 넣은 옵션이 잘 반영되었는지 확인한다.

 

cp ./haproxy /usr/local/bin

 

#systemd 스크립트 작성

vi /usr/lib/systemd/system/haproxy.service

Description=HAProxy Load Balancer
After=network.target

[Service]
EnvironmentFile=-/etc/default/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid" "EXTRAOPTS=-S /run/haproxy-master.sock"
ExecStartPre=/usr/local/bin/haproxy -f /etc/haproxy/haproxy.cfg -c -q -S /run/haproxy-master.sock
ExecStart=/usr/local/bin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
ExecReload=/usr/local/bin/haproxy -f /etc/haproxy/haproxy.cfg -c -q -S /run/haproxy-master.sock
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
Type=notify

[Install]
WantedBy=multi-user.target

 

mkdir /etc/haproxy

 

# 검색하여 haproxy.cfg 샘플을 구하여 입력한다.

vi /etc/haproxy/haproxy.cfg

 

systemctl daemon-reload  # 스크립트 인식하기

 

systemctl start haproxy  # 설치된 haproxy 동작시켜보기

 

systemctl status haproxy  # 시작된 haproxy 성공 확인, active(running) 보이면 성공

 

systemctl enable haproxy  # 부팅시마다 서비스 활성화 하기

 

systemctl stop haproxy  # 현재 실행되고 있는 haproxy stop

 

 

systemctl 등록 파일은 아래 깃허브를 참조한다.

https://github.com/haproxy/haproxy/blob/master/contrib/systemd/haproxy.service.in

 

haproxy 버전 차이가 크면 /etc/haproxy/haproxy.cfg 가 맞지 않아 오류가 발생할 수 있으므로 

 

/usr/local/bin/haproxy -f /etc/haproxy/haproxy.cfg # 명령으로 디버깅을 하여 오류를 수정한다.

/usr/local/bin/haproxy -f /etc/haproxy/haproxy.cfg -c # cfg 문법 체크는 -c 옵션을 붙인다.

 

위 방법으로 손쉽게? haproxy 설치와 원하는 버전을 설치하여 사용하는 방법을 알아보았다.