Rocky Linux 8에서 HAProxy를 설치 및 구성하는 방법

Rocky Linux 8에서 HAProxy를 설치 및 구성하는 방법

2022-10-18 last update

5 minutes reading linux web server
인터넷에 응용 프로그램을 배포할 때 응용 프로그램의 가용성, 확장성 및 성능은 더 나은 사용자 경험을 위해 매우 중요합니다. 로드 밸런싱, 클러스터링 및 프록시와 같이 중복성을 도입하는 많은 기술이 있습니다.
HAProxy는 트래픽이 많은 웹 사이트를 위해 설계된 안정적인 무료 오픈 소스 로드 밸런서입니다. 들어오는 트래픽을 여러 백엔드 서버에 분산하여 로드 밸런싱합니다.
이 기사에서는 Rocky Linux 8에 HAProxy를 설치하는 방법을 보여줍니다.

이 자습서의 목적을 위해 다음 설정을 사용합니다.
서버                      IP 주소
HA프록시                  172.16.10.10
백엔드1                172.16.10.11
백엔드2                172.16.10.12

전제 조건


  • RockyLinux 8을 실행하는 서버.
  • 루트 암호는 서버에 구성됩니다.
  • HAProxy 설치


    기본적으로 HAProxy 패키지는 Rocky Linux 8 기본 리포지토리에서 사용할 수 있습니다. 다음 명령으로 설치할 수 있습니다.
    dnf install haproxy -y
    HAProxy가 설치되면 HAProxy 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.
    systemctl start haproxy
    systemctl enable haproxy

    HAProxy 구성


    다음으로/etc/haproxy/haproxy.cfg 파일을 편집하고 두 섹션 프런트엔드와 백엔드를 수정해야 합니다. 프런트엔드 섹션에서 HAProxy IP의 포트, 통계 URI 및 백엔드 이름을 정의해야 합니다. 백엔드 섹션에서 로드 밸런싱 알고리즘, 백엔드 서버의 이름, IP 및 포트를 정의해야 합니다.
    nano /etc/haproxy/haproxy.cfg
    다음 섹션을 수정합니다.
    frontend http_balancer
        bind 172.16.10.10:80
        option http-server-close
        option forwardfor
        stats uri /haproxy?stats
    
    default_backend     Apache_webservers
    
    backend apache_webservers
        mode        http
        balance     roundrobin
        option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    
        server  apache1  172.16.10.11:80  check
        server  apache2  172.16.10.12:80  check
    
    완료되면 파일을 저장하고 닫은 다음/etc/rsyslog.conf 파일을 편집해야 합니다.
    nano /etc/rsyslog.conf
    다음 줄의 주석 처리를 제거합니다.
    module(load="imudp")
    input(type="imudp" port="514")
    
    파일을 저장하고 닫은 다음 다음 명령을 사용하여 rsyslog에 대한 haproxy.conf 파일을 만듭니다.
    nano /etc/rsyslog.d/haproxy.conf
    다음 줄을 추가합니다.
    local2.=info     /var/log/haproxy-access.log
    local2.notice    /var/log/haproxy-info.log
    
    그런 다음 rsyslog 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.
    systemctl start rsyslog
    systemctl enable rsyslog
    마지막으로 HAProxy 서비스를 다시 시작하여 변경 사항을 적용합니다.
    systemctl restart haproxy
    다음 명령을 사용하여 HAProxy 서비스의 상태를 확인할 수도 있습니다.
    systemctl status haproxy
    다음 출력이 표시되어야 합니다.
    ? haproxy.service - HAProxy Load Balancer
       Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled)
       Active: active (running) since Tue 2021-08-03 03:10:37 EDT; 1min 16s ago
      Process: 44032 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $OPTIONS (code=exited, status=0/SUCCESS)
     Main PID: 44036 (haproxy)
        Tasks: 2 (limit: 12524)
       Memory: 3.1M
       CGroup: /system.slice/haproxy.service
               ??44036 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
               ??44111 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    
    Aug 03 03:10:36 RockyLinux8 systemd[1]: Starting HAProxy Load Balancer...
    Aug 03 03:10:37 RockyLinux8 systemd[1]: Started HAProxy Load Balancer.
    

    방화벽 구성


    다음으로 모든 서버에서 firewalld를 구성하고 방화벽을 통해 포트 80을 허용해야 합니다.
    다음 명령을 실행하여 포트 80을 허용할 수 있습니다.
    firewall-cmd --permanent --add-port=80/tcp
    다음으로 firewalld 서비스를 다시 로드하여 변경 사항을 적용합니다.
    firewall-cmd --reload

    백엔드 서버 구성


    다음으로 두 백엔드 서버에 Apache 서버를 설치해야 합니다. 다음 명령어를 실행하여 Apache 서버를 설치합니다.
    dnf install httpd -y
    Apache 서버가 설치되면 Apache 서비스를 시작하고 시스템 재부팅 시 시작되도록 활성화합니다.
    systemctl start httpd
    systemctl enable httpd
    다음으로 두 백엔드 서버에서 기본 index.html 파일을 수정해야 합니다.
    첫 번째 백엔드에서 다음 명령을 사용하여 index.html 파일을 편집합니다.
    nano /usr/share/httpd/noindex/index.html
    모든 줄을 제거하고 다음 줄을 추가합니다.
    Welcome to First Apache Web Server!
    
    완료되면 파일을 저장하고 닫습니다.
    두 번째 백엔드에서 다음 명령을 사용하여 index.html 파일을 편집합니다.
    nano /usr/share/httpd/noindex/index.html
    모든 줄을 제거하고 다음 줄을 추가합니다.
    Welcome to Second Apache Web Server!
    
    완료되면 파일을 저장하고 닫습니다.

    HAProxy 확인


    이 시점에서 HAProxy는 로드 밸런싱 알고리즘을 기반으로 들어오는 모든 요청을 백엔드 서버로 전달하도록 구성됩니다. 이제 HAProxy가 제대로 작동하는지 확인할 차례입니다.
    웹 브라우저를 열고 URL http://172.16.10.10에 HAProxy IP를 입력합니다. 첫 번째 Apache 웹 서버 페이지가 표시되어야 합니다.

    다음으로 동일한 페이지를 다시 새로 고치면 두 번째 Apache 웹 서버 페이지가 표시됩니다.

    이것은 HAProxy가 예상대로 작동하고 두 백엔드 서버 간에 트래픽을 분산하고 있음을 확인합니다.

    결론


    축하합니다! Rocky Linux 8에 HAProxy 로드 밸런서를 성공적으로 설치하고 구성했습니다. 이제 프로덕션 환경에서 HAProxy를 구현하여 고성능 및 확장성을 달성할 수 있습니다.