본문 바로가기

리눅스

CentOS 7에서 HAProxy를 설치하는 방법

반응형

CentOS 7에서 HAProxy를 설치하는 방법

haproxy(로드밸런싱) : TCP/HTTP proxy and load balancer for high availability environments

구성 환경

서버 운영체제 아이피 패키지 비고
master CentOS 7.9 192.168.0.8 haproxy  

Kernel Paramater 설정

  • /etc/sysctl.conf 설정
echo "###HAPorxy Kernel Paramater" >> /etc/sysctl.conf
echo 'net.ipv4.ip_nonlocal_bind=1' >> /etc/sysctl.conf
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

재부팅 또는 sysctl -p

sysctl -p

설정한 커널 파라미터 값 확인

sysctl -a | grep net.ipv4.ip_nonlocal_bind
$ sysctl -a | grep net.ipv4.ip_nonlocal_bind
net.ipv4.ip_nonlocal_bind = 1
cat /proc/sys/net/ipv4/ip_nonlocal_bind
$ cat /proc/sys/net/ipv4/ip_nonlocal_bind
1

EPEL 저장소 추가

  • HAProxy 패키지는 EPEL(Extra Packages for Enterprise Linux) 저장소에 있습니다.
sudo yum install -y epel-release

HAProxy 설치

  • EPEL 저장소를 추가한 후 HAProxy를 설치합니다.
sudo yum install -y haproxy
haproxy -v
$ haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>
systemctl --now enable haproxy
$ systemctl --now enable haproxy
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
728x90

HAProxy 설정

  • HAProxy 설정 파일은 /etc/haproxy/haproxy.cfg입니다.
  • 기본 설정 파일을 편집하거나 새로운 설정을 추가할 수 있습니다.
vim /etc/haproxy/haproxy.cfg
$ vim /etc/haproxy/haproxy.cfg 
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode http
    log global
    option httplog
    option dontlognull
    option http-server-close
    option forwardfor except 127.0.0.0/8
    option redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
# frontend which proxys to the backends
#---------------------------------------------------------------------
frontend load-balancer 
        bind *:80
        mode http
        default_backend webserver

#---------------------------------------------------------------------
# frontend which proxys to the backends
#---------------------------------------------------------------------
frontend webserver81
        bind *:81
        mode tcp
        option tcplog
        default_backend webserver81

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend webserver
        mode http
        option httpchk GET /
        http-check expect status 200
        default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
        balance roundrobin
        server app1 192.168.0.7:80 check inter 3000 rise 2 fall 5
        server app2 192.168.0.7:81 check inter 3000 rise 2 fall 5
        server app3 192.168.0.7:82 check inter 3000 rise 2 fall 5

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend webserver81
        mode tcp
        option tcplog
        option tcp-check
        balance roundrobin
        server app1 192.168.0.7:80 weight 1 maxconn 512 check fall 3 rise 2
        server app2 192.168.0.7:81 weight 1 maxconn 512 check fall 3 rise 2
        server app2 192.168.0.7:82 weight 1 maxconn 512 check fall 3 rise 2

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
listen stats *:9000
    mode http
    stats enable
    stats hide-version
    stats refresh 30s
    stats show-node
    stats realm HAProxy Statistics
    stats uri /
    stats auth admin:admin

설정값이 유효한지 확인

haproxy -f /etc/haproxy/haproxy.cfg -c
$ haproxy -f /etc/haproxy/haproxy.cfg -c
Configuration file is valid

HAProxy 시작 및 부팅 시 자동 시작 설정

  • AProxy 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정합니다.
sudo systemctl enable haproxy
sudo systemctl start haproxy

통계 보고서 페이지

  • URL : http://192.168.0.8:9000/
  • ID/PW : admin/admin

haproxy_statistics

 

CentOS 7에 HAProxy를 성공적으로 설치하고 설정할 수 있습니다. 설정 파일을 적절히 구성하여 원하는 로드 밸런싱 또는 프록시 기능을 구현할 수 있습니다.

 

728x90
반응형