본문 바로가기

카테고리 없음

HAProxy - Part 1

HAProxy  설치하기

 

이번 포스팅은 HAProxy을 설치에 대해서 알아봅니다.

설치 환경은 Cent OS 7.3이며, HAProxy는 Stable 최신 버전인 1.8.4 입니다.

HAProxy를 설치하는 방법은 Yum Repo를 통한 설치와 직접 최신 소스를 이용한 설치 방법으로 가능합니다.

 

HAProxy 설치 : yum

yum install haproxy

yum을 이용하여 설치하는 경우에는 최신 버전이 적용되지 않음.

현재(2018년 3월 20일)기준 Yum Repo의 haproxy는 1.5.18 제공.

yum repo version 확인

[root@zigi-cent ~]# yum info haproxy
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: ftp.riken.jp
Available Packages
Name        : haproxy
Arch        : x86_64
Version     : 1.5.18
Release     : 6.el7
Size        : 834 k
Repo        : base/7/x86_64

 

최신 버전의 HAProxy를 사용하고자 할 때에는  yum을 이용하지 않고 직접 최신 소스를 다운받아서 컴파일을 해서 설치 필요

이 경우에는 직접 컴파일을 통해서 설치하기 위한 필수 패키지가 사전에 설치되어 있어야 함.

사전 패키지 설치

yum install gcc pcre-static pre-devel

 

HAProxy 사이트에서 현재 최신 Stable 버전이 1.8.4를 다운로드

HAProxy 파일 받기

[root@zigi-cent ~]# wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.4.tar.gz
--2018-03-19 20:05:17--  https://www.haproxy.org/download/1.8/src/haproxy-1.8.4.tar.gz
Resolving www.haproxy.org (www.haproxy.org)... 51.15.8.218
Connecting to www.haproxy.org (www.haproxy.org)|51.15.8.218|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2049789 (2.0M) [application/x-tar]
Saving to: ‘haproxy-1.8.4.tar.gz’

100%[===========================================================================>] 2,049,789   1.03MB/s   in 1.9s

2018-03-19 20:05:21 (1.03 MB/s) - ‘haproxy-1.8.4.tar.gz’ saved [2049789/2049789]

 

다운로드 받은 haproxy 파일의 압축 해제

HAProxy 압축 풀기

tar xzvf haproxy.tar.gz

 

압축을 풀고 HAProxy를 수동으로 진행

HAProxy 설치

[root@zigi-cent haproxy-1.8.4]# make TARGET=linux2628
gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv    -Wno-unused-label       -DCONFIG_HAP_LINUX_SPLICE -DTPROXY -DCONFIG_HAP_LINUX_TPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DENABLE_EPOLL -DUSE_CPU_AFFINITY -DASSUME_SPLICE_WORKS -DUSE_ACCEPT4 -DNETFILTER -DUSE_THREAD -DUSE_SYSCALL_FUTEX  -DCONFIG_HAPROXY_VERSION=\"1.8.4-1deb90d\" -DCONFIG_HAPROXY_DATE=\"2018/02/08\" -c -o src/ev_poll.o src/ev_poll.c
gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv    -Wno-unused-label       -DCONFIG_HAP_LINUX_SPLICE -DTPROXY -DCONFIG_HAP_LINUX_TPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DENABLE_EPOLL -DUSE_CPU_AFFINITY -DASSUME_SPLICE_WORKS -DUSE_ACCEPT4 -DNETFILTER -DUSE_THREAD -DUSE_SYSCALL_FUTEX  -DCONFIG_HAPROXY_VERSION=\"1.8.4-1deb90d\" -DCONFIG_HAPROXY_DATE=\"2018/02/08\" -c -o src/ev_epoll.o src/ev_epoll.c
..후략..

 

[root@zigi-cent haproxy-1.8.4]# make install
install -d "/usr/local/sbin"
install haproxy  "/usr/local/sbin"
install -d "/usr/local/share/man"/man1
install -m 644 doc/haproxy.1 "/usr/local/share/man"/man1
install -d "/usr/local/doc/haproxy"
for x in configuration management architecture peers-v2.0 cookie-options lua WURFL-device-detection proxy-protocol linux-syn-cookies network-namespaces DeviceAtlas-device-detection 51Degrees-device-detection netscaler-client-ip-insertion-protocol peers close-options SPOE intro; do \
        install -m 644 doc/$x.txt "/usr/local/doc/haproxy" ; \
done

Target의 경우에는 설치하고자 하는 운영체제에 따라서 다르지만, 일반적으로 2628 옵션을 사용

2628 linux 커널 2.6.28 혹은 3.x, 그 이상의 버전에서 사용하는 옵션.

설치가 끝난 후, 설치된 haproxy 버전을 다음과 같이 확인하며 최신 1.8.4이 설치된 것을 확인 가능

HAProxy 버전 확인

[root@zigi-cent haproxy-1.8.4]# haproxy -v
HA-Proxy version 1.8.4-1deb90d 2018/02/08
Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>

 

컴파일해서 설치한 경우에는 추가적으로 필요한 디렉토리와 통계 파일을 생성하는 다음의 작업 필요

필요 디렉토리 및 파일 생성

[root@zigi-cent haproxy-1.8.4]# mkdir -p /etc/haproxy
[root@zigi-cent haproxy-1.8.4]# mkdir -p /var/lib/haproxy
[root@zigi-cent haproxy-1.8.4]# touch /var/lib/haproxy/stats

HAProxy 명령 수행을 위한 심볼릭 링크 생성

필요 디렉토리 및 파일 생성

[root@zigi-cent sbin]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

HAProxy를 서비스로 등록

서비스 등록(권한 변경 포함)

[root@zigi-cent haproxy-1.8.4]# cp ~/haproxy-1.8.4/examples/haproxy.init /etc/init.d/haproxy
[root@zigi-cent haproxy-1.8.4]# chmod 755 /etc/init.d/haproxy
[root@zigi-cent haproxy-1.8.4]# systemctl daemon-reload

HAProxy 서비스 시작

HAProxy 서비스 기동

[root@zigi-cent sbin]# systemctl start haproxy

 

[root@zigi-cent sbin]# systemctl status haproxy.service
● haproxy.service - SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.
   Loaded: loaded (/etc/rc.d/init.d/haproxy; bad; vendor preset: disabled)
   Active: active (running) since Mon 2018-03-19 20:42:49 UTC; 3min 38s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 8211 ExecStart=/etc/rc.d/init.d/haproxy start (code=exited, status=0/SUCCESS)
 Main PID: 8216 (haproxy)
   CGroup: /system.slice/haproxy.service
           └─8216 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

Mar 19 20:42:49 zigi-cent systemd[1]: Starting SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments....
Mar 19 20:42:49 zigi-cent haproxy[8215]: Proxy stats started.
Mar 19 20:42:49 zigi-cent haproxy[8211]: Starting haproxy: [WARNING] 077/204249 (8215) : parsing [/etc/haproxy/haproxy.cfg:28] : the 'clitimeout' direc... versions.
Mar 19 20:42:49 zigi-cent haproxy[8211]: [WARNING] 077/204249 (8215) : parsing [/etc/haproxy/haproxy.cfg:29] : the 'srvtimeout' directive is now deprec... versions.
Mar 19 20:42:49 zigi-cent haproxy[8211]: [WARNING] 077/204249 (8215) : parsing [/etc/haproxy/haproxy.cfg:30] : the 'contimeout' directive is now deprec... versions.
Mar 19 20:42:49 zigi-cent haproxy[8211]: [  OK  ]
Mar 19 20:42:49 zigi-cent systemd[1]: Started SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments..
Hint: Some lines were ellipsized, use -l to show in full.