이 문서에서는 HAProxy를 로드 밸런서로 구성하는 방법을 보여줍니다. Nginx 2개용 웹 서버(Apache로 대체 가능). CentOS는 모든 경우에 호스트 운영 체제로 사용됩니다.
HAProxy는 들어오는 요청을 여러 백엔드 서버 간에 분산하여 TCP 및 HTTP 앱에 고가용성과 로드 밸런싱을 제공하는 서버 소프트웨어입니다. HAProxy는 Twitter와 같은 많은 인기 리소스에서 사용됩니다. , 인스타그램 , Github , 아마존, 등.HAProxy는 클라이언트 요청을 수락하고 Nginx 웹 서버로 리디렉션하는 별도의 서버에 설치됩니다. 아래에서 일반 시스템 아키텍처를 볼 수 있습니다.
백엔드 서버의 Nginx 구성
우리는 웹 서버에 Nginx를 설치하고 구성하는 것으로 시작하여 로드가 균형을 이룰 것입니다. yum(또는 RHEL/CentOS 8의 경우 dnf)을 사용하여 EPEL 저장소 및 nginx를 설치합니다.
#yum install epel-release -y
#yum install nginx -y
그런 다음 nginx에서 .conf 파일은 서버가 HAProxy 서버 및 백엔드 서버의 요청만 처리해야 함을 지정합니다.
백엔드 서버 1:
서버 { 수신 current_server_IP_address:80 default_server; second_backend_server_IP_address 허용; IP_haproxy 허용; 모두를 거부하다; 서버 이름 _; 루트 /usr/share/nginx/html; # 기본 서버 블록에 대한 구성 파일을 로드합니다. 포함 /etc/nginx/default.d/*.conf; 위치 / { }
백엔드 서버 2:
서버 { 수신 current_server_IP_address:80 default_server; first_backend_server_IP_address 허용; IP_haproxy 허용; 모두를 거부하다; 서버 이름 _; 루트 /usr/share/nginx/html; # 기본 서버 블록에 대한 구성 파일을 로드합니다. 포함 /etc/nginx/default.d/*.conf; 위치 / { }
nginx 구성 파일은 기본이며 IP 수신에 서버를 추가했습니다. 허용을 사용하여 서버를 제외한 모든 사람에 대한 액세스 거부 및 거부 지시.
웹 서버가 작동하기 시작하려면 firewalld 또는 iptables를 사용하여 방화벽 HTTP 포트를 여십시오.
#firewall-cmd --permanent –add-service=http
#firewall-cmd –reload
백엔드 서버에서 테스트 확인을 수행하십시오.
# curl IP_of_the_second_server
여기에 html 파일이 있습니다. 파일
서버가 표준 nginx 인덱스 파일을 반환했습니다. 확인을 보다 편리하게 하기 위해 각 백엔드 서버의 인덱스 파일 내용을 변경하여 현재 요청을 처리한 서버를 내 브라우저에서 볼 수 있도록 했습니다.
nginx 색인 파일은 /usr/share/nginx/html/에 있습니다. .
HAProxy 로드 밸런서 구성
로드밸런서로 사용할 서버에 HAProxy를 설치 및 설정해 보겠습니다.
HAProxy 설치:#yum install epel-release -y
#yum install haproxy -y
트랜잭션 실행 중설치 :haproxy-1.5.18-9.el7.x86_64 1/1확인 :haproxy-1.5.18-9.el7.x86_64 1/1설치 :haproxy.x86_64 0:1.5.18-9.el7Complete /사전>HAProxy를 활성화하려면 Enabled=1을 추가해야 합니다. /etc/default/haproxy에 파일:
#nano /etc/default/haproxy
이제 HAProxy 구성으로 이동하겠습니다. 가장 간단한 구성에서 로드 밸런서 서버는 모든 HTTP 요청을 처리하고 백엔드 서버로 차례로 보냅니다.
#nano /etc/haproxy/haproxy.cfg
log /dev/log local0 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 사용자 haproxy 그룹 haproxy daemondefaults 모드 http 로그 전역 옵션 httplog 옵션 재전송 재시도 3 시간 초과 http-request 10초 시간 초과 대기열 1m 시간 초과 연결 10초 시간 초과 클라이언트 1m 시간 초과 서버 1m 시간 초과 http-keep-alive 10초 시간 초과 확인 10초 maxconn 3000frontend www bind balancer_IP_address:80 default_backend nginx_poolbackend nginx_pool 균형 라운드 로빈 모드 http 서버 web1 IP_of_the_first_backend 확인구성을 저장한 후 haproxy.cfg 구문을 확인하십시오.
#haproxy -f /etc/haproxy/haproxy.cfg -c
정상이면 다음과 같은 메시지가 표시됩니다.
구성 파일이 유효합니다.그런 다음 HAProxy를 다시 시작하고 Linux 시작에 추가합니다. 그리고 방화벽에서 HTTP 포트를 엽니다.
#systemctl restart haproxy
#systemctl enable haproxy
#firewall-cmd —permanent –add-service=http
#firewall-cmd –reload따라서 로드 밸런서가 구성되었습니다. 브라우저에서 HAProxy 서버 IP 주소를 열어 확인합시다:
보시다시피 두 서버가 차례로 콘텐츠를 반환하므로 밸런서가 작동합니다.
Haproxy.cfg 구성 파일 매개변수
HAProxy 알고리즘의 주요 예를 살펴보겠습니다.
roundrobin
— 기본 알고리즘으로 서버에 차례로 요청을 보냅니다. 이 예제에서는 이 방법을 사용했습니다.leastconn
– 활성 연결 수가 가장 적은 서버를 선택합니다. 세션을 장기간 사용하는 프로젝트에 적용하는 것을 권장합니다.source
– 사용자 IP 주소의 해시를 기반으로 서버를 선택합니다. 이 모드에서 클라이언트는 사용자 IP 주소가 변경되지 않은 경우 동일한 웹 서버에 연결합니다.
일부 구성 파일 매개변수를 설명하겠습니다.
글로벌 차단:
log
— /dev/log에 로그를 기록하고 local0을 개체 값으로 저장chroot
— 보안 설정, HAProxy를 지정된 디렉토리에 잠급니다.maxconn
— 프로세스당 최대 동시 연결 수daemon
— 프로세스를 데몬으로 실행
기본 차단하다. 이 블록은 뒤에 오는 다른 모든 섹션에 대한 기본 매개변수를 설정합니다.
log
— 어떤 로그에 기록되는 항목인지 설정합니다(이 경우 전역은 전역 섹션에 설정된 매개변수가 사용됨을 의미합니다)mode
— 통신 프로토콜을 설정하고 다음 값 중 하나를 가집니다:tcp, http 또는 healthretries
— 실패 시 서버 연결 시도 횟수option httplog
— HAProxy가 HTTP 요청을 프록시하는 경우 사용되는 로그 형식option redispatch
— 서버 장애가 발생한 경우 프로그램이 세션을 종료하고 재전송할 수 있도록 합니다.contimeout
— 서버와 성공적으로 연결될 때까지의 최대 대기 시간
다른 시간 초과와 관련된 많은 매개변수도 있습니다.
HAProxy 통계 수집
구성 파일에 stats 블록 추가:
listen stats bind:10001 stats enable stats uri /haproxy_stats stats auth admin:admin
설명:
bind
– 통계를 볼 수 있는 포트stats enable
– 통계 보고서 활성화stats uri
– 통계 페이지 주소 설정stats auth
– 액세스할 로그인 및 비밀번호
방화벽에서 위에 지정된 포트에서 들어오는 연결을 수락합니다.
firewall-cmd --permanent –add-port=10001/tcp
firewall-cmd –reload
HAProxy 보고서를 보려면 다음 링크를 따르십시오.
https://hostname_haproxy:10001/haproxy_stats
브라우저에서 밸런서 IP 주소를 열고 F5 키를 누르십시오. . HAproxy 통계가 변경됩니다.
이 기사에서는 기본 HAProxy 구성을 고려했습니다. HAProxy 모듈을 사용하는 경우가 더 많습니다.
우리 스키마에서 로드 밸런싱 HAProxy 서버는 단일 실패 지점이 됩니다. 웹 서비스의 내결함성을 높이려면 다른 HAProxy 서버를 추가하고 Keepalived를 사용하여 고가용성 로드 밸런서 구성을 구현할 수 있습니다. 다음과 같은 스키마를 얻게 됩니다.