웹사이트 검색

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


이 페이지에서

  1. 전제 조건
  2. HAProxy 설치
  3. HAProxy 구성
  4. 방화벽 구성\n
  5. 백엔드 서버 구성
  6. HAProxy 확인\n
  7. 결론

인터넷에 응용 프로그램을 배포할 때 응용 프로그램의 가용성, 확장성 및 성능은 더 나은 사용자 경험을 위해 매우 중요합니다. 부하 분산, 클러스터링 및 프록시와 같은 중복성을 도입하는 많은 기술이 있습니다.

HAProxy는 트래픽이 많은 웹사이트용으로 설계된 신뢰할 수 있는 무료 오픈 소스 로드 밸런서입니다. 들어오는 트래픽을 여러 백엔드 서버에 분산하여 로드 밸런싱합니다.

이 기사에서는 Rocky Linux 8에 HAProxy를 설치하는 방법을 보여줍니다.

이 자습서에서는 다음 설정을 사용합니다.

서버 IP 주소

HAProxy 172.16.10.10

백엔드1 172.16.10.11

백엔드2 172.16.10.12

전제 조건

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

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.

방화벽 구성

다음으로 모든 서버에서 방화벽을 구성하고 방화벽을 통해 포트 80을 허용해야 합니다.

다음 명령을 실행하여 포트 80을 허용할 수 있습니다.

firewall-cmd --permanent --add-port=80/tcp

다음으로 방화벽 서비스를 다시 로드하여 변경 사항을 적용합니다.

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를 구현하여 고성능과 확장성을 달성할 수 있습니다.