ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CentOS에 HAproxy 설치하기
    Linux 2019. 1. 3. 17:11


    HAProxy는 기존의 하드웨어 스위치를 대체하는 소프트웨어 로드 밸런서입니다. 기존 네트워크 스위치에서 제공하는 L4, L7 기능 및 로드 밸런서 기능을 제공해주고 있으며, 설치및 설정이 쉽다는 장점이 있습니다. 무중단 서비스를 제공하기 위해 서비스를 빠르게 다중화를 하는데 유용한 소프트웨어입니다.




    HAProxy 설치하기


    HAproxy를 설치하는 방법은 크게 2가지가 있습니다.



    1. yum 패키지 설치 도구



    yum 명령어를 통해 HAProxy를 설치해줍니다.


    $ sudo yum install haproxy




    설치가 완료되면 로드 밸런서 설정 내용을 수정해줍니다. 기존의 설정 내용을 참고하여 필요에 맞게 수정하시면 됩니다.


    $ sudo vi /etc/haproxy/haproxy.cfg




    설정 내용 수정을 마치셨다면, 서비스 활성화 및 시작을 해주시면 됩니다.


    systemctl enable haproxy

    $ systemctl start haproxy




    2. 소스코드 컴파일을 통한 설치 방법



    의존성 패키지를 먼저 설치해줍니다.


    $ sudo yum -y install gcc wget openssl-devel

    ※ gcc와 wget 같은 경우 미리 설치되어 있다면 문제가 없지만, openssl-devel의 경우 설치가 되어있지 않은 상태에서 컴파일 진행시 fatal error: openssl/ssl.h: No such file or directory 와 같은 오류가 발생할 수 있습니다.




    HAProxy 소스 코드 압축파일을 내려받고 압축을 풀어줍니다.


    $ wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.16.tar.gz

    $ sudo tar xzvf haproxy-1.8.16.tar.gz -C ~/




    압축을 해제하고 나서 컴파일을 진행해주기에 앞서 HAProxy를 구축하고자 하는 서버의 OS를 확인해야합니다.

    저의 경우 리눅스 커널 버전이 3.10.0 인것을 확인하였습니다.


    $ uname -r

    3.10.0-862.el7.x86_64




    점선 아래의 내용을 참고하여 make 명령어를 통해 컴파일을 진행해줍니다.


    $ cd haproxy-1.8.16

    $ make TARGET=linux2628 USE_OPENSSL=1


    ---------------------------------------------------------------------------------------------

    haproxy를 구축하려면 다음 OS 중에서 대상 OS를 선택해야 합니다.

    TARGET 변수에 할당:


      - linux22     for Linux 2.2

      - linux24     for Linux 2.4 and above (default)

      - linux24e    for Linux 2.4 with support for a working epoll (> 0.21)

      - linux26     for Linux 2.6 and above

      - linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)

      - solaris     for Solaris 8 or 10 (others untested)

      - freebsd     for FreeBSD 5 to 10 (others untested)

      - netbsd      for NetBSD

      - osx         for Mac OS/X

      - openbsd     for OpenBSD 3.1 and above

      - aix51       for AIX 5.1

      - aix52       for AIX 5.2

      - cygwin      for Cygwin

      - generic     for any other OS or version.

      - custom      to manually adjust every setting 




    오류 없이 컴파일이 끝났다면 make install 명령어를 통해 HAProxy설치를 해줍니다.


    $ sudo make install




    환경 설정을 위한 디렉토리 및 파일을 만들어 줍니다.


    $ mkdir -p /etc/haproxy

    $ mkdir -p /var/lib/haproxy

    $ touch /var/lib/haproxy/stats




    로드 밸런서를 설정해줍니다. 로드 밸런서의 내용은 예제를 참고하셔서 수정하시면 됩니다.


    $ sudo vi /etc/haproxy/haproxy.cfg


    global

      maxconn 256


    defaults

      mode http

      timeout connect 5000ms

      timeout client 60000ms

      timeout server 60000ms


    listen stats

      bind :80

      mode http

      log global


      maxconn 10


      clitimeout 100s

      srvtimeout 100s

      contimeout 100s

      timeout queue 100s


      stats enable

      stats hide-version

      stats refresh 30s

      stats show-node

      stats auth admin:1234

      stats uri /haproxy


    frontend http-in

      bind *:80

      default_backend servers


    # 백앤드 서버

    backend servers

      balance roundrobin

      server Web01 192.168.0.101:80 check 

      server Web02 192.168.0.100:80 check




    서비스 등록을 위해 init.d 디렉토리 내에 example/haproxy.init 파일을 복사한 후 권한을 변경합니다.


    cp ~/haproxy-1.8.16/examples/haproxy.init /etc/init.d/haproxy

    $ chmod 755 /etc/init.d/haproxy




    haproxy 명령어를 사용할 수 있도록 /usr/sbin 디렉토리에 링크를 설정합니다.


    ln -s usr/local/sbin/haproxy /usr/sbin/haproxy




    HAProxy 사용을 위해 사용자 계정을 생성해 줍니다.


    $ useradd -r haproxy




    haproxy -v 명령어를 통해 설치한 버전이 나오는 것을 확인합니다.


    $ haproxy -v

    HA-Proxy version 1.8.16-5c3f237 2018/12/21

    Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>





    설정한 값을 적용시키기 위해 재부팅 및 서비스 활성화 및 시작을 해주시면 됩니다.


    $ reboot

    systemctl enable haproxy

    $ systemctl start haproxy




    systemctl status 명령어를 통해 정상적으로 동작하고 있는지 상태를 확인할 수 있으며, active 상태에서 로드밸런싱이 동작하게 됩니다.


    $ systemctl status haproxy

    ● 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 Thu 2019-01-03 13:16:30 KST; 2min 3s ago

         Docs: man:systemd-sysv-generator(8)

      Process: 3835 ExecStart=/etc/rc.d/init.d/haproxy start (code=exited, status=0/SUCCESS)

     Main PID: 3844 (haproxy)

       CGroup: /system.slice/haproxy.service

               └─3844 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /v...


    Jan 03 13:16:30 localhost.localdomain systemd[1]: Starting SYSV: HA-Prox...

    Jan 03 13:16:30 localhost.localdomain haproxy[3835]: /etc/rc.d/init.d/ha...

    Jan 03 13:16:30 localhost.localdomain haproxy[3835]: Starting haproxy: [...

    Jan 03 13:16:30 localhost.localdomain haproxy[3835]: [WARNING] 002/13163...

    Jan 03 13:16:30 localhost.localdomain haproxy[3835]: [WARNING] 002/13163...

    Jan 03 13:16:30 localhost.localdomain haproxy[3835]: [  OK  ]

    Jan 03 13:16:30 localhost.localdomain systemd[1]: Started SYSV: HA-Proxy...

    Hint: Some lines were ellipsized, use -l to show in full.



    'Linux' 카테고리의 다른 글

    CentOS에서 NIC 이름 변경하기  (0) 2019.01.07

    댓글