Computer >> 컴퓨터 >  >> 체계 >> Linux

Nginx용 로드 밸런서로 HAProxy 사용

이 문서에서는 HAProxy를 로드 밸런서로 구성하는 방법을 보여줍니다. Nginx 2개용 웹 서버(Apache로 대체 가능). CentOS는 모든 경우에 호스트 운영 체제로 사용됩니다.

HAProxy는 들어오는 요청을 여러 백엔드 서버 간에 분산하여 TCP 및 HTTP 앱에 고가용성과 로드 밸런싱을 제공하는 서버 소프트웨어입니다. HAProxy는 Twitter와 같은 많은 인기 리소스에서 사용됩니다. , 인스타그램 , Github , 아마존, 등.

HAProxy는 클라이언트 요청을 수락하고 Nginx 웹 서버로 리디렉션하는 별도의 서버에 설치됩니다. 아래에서 일반 시스템 아키텍처를 볼 수 있습니다.

Nginx용 로드 밸런서로 HAProxy 사용

백엔드 서버의 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

Nginx용 로드 밸런서로 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 주소를 열어 확인합시다:

Nginx용 로드 밸런서로 HAProxy 사용

보시다시피 두 서버가 차례로 콘텐츠를 반환하므로 밸런서가 작동합니다.

Haproxy.cfg 구성 파일 매개변수

HAProxy 알고리즘의 주요 예를 살펴보겠습니다.

  • roundrobin — 기본 알고리즘으로 서버에 차례로 요청을 보냅니다. 이 예제에서는 이 방법을 사용했습니다.
  • leastconn – 활성 연결 수가 가장 적은 서버를 선택합니다. 세션을 장기간 사용하는 프로젝트에 적용하는 것을 권장합니다.
  • source – 사용자 IP 주소의 해시를 기반으로 서버를 선택합니다. 이 모드에서 클라이언트는 사용자 IP 주소가 변경되지 않은 경우 동일한 웹 서버에 연결합니다.

일부 구성 파일 매개변수를 설명하겠습니다.

글로벌 차단:

  • log — /dev/log에 로그를 기록하고 local0을 개체 값으로 저장
  • chroot — 보안 설정, HAProxy를 지정된 디렉토리에 잠급니다.
  • maxconn — 프로세스당 최대 동시 연결 수
  • daemon — 프로세스를 데몬으로 실행

기본 차단하다. 이 블록은 뒤에 오는 다른 모든 섹션에 대한 기본 매개변수를 설정합니다.

  • log — 어떤 로그에 기록되는 항목인지 설정합니다(이 경우 전역은 전역 섹션에 설정된 매개변수가 사용됨을 의미합니다)
  • mode — 통신 프로토콜을 설정하고 다음 값 중 하나를 가집니다:tcp, http 또는 health
  • retries — 실패 시 서버 연결 시도 횟수
  • 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 – 액세스할 로그인 및 비밀번호
원하는 TCP 포트를 지정할 수 있습니다. 위에 지정된 사람이 바쁘거나 적합하지 않은 경우.

방화벽에서 위에 지정된 포트에서 들어오는 연결을 수락합니다.

firewall-cmd --permanent –add-port=10001/tcp
firewall-cmd –reload

HAProxy 보고서를 보려면 다음 링크를 따르십시오.

https://hostname_haproxy:10001/haproxy_stats

Nginx용 로드 밸런서로 HAProxy 사용 브라우저에서 밸런서 IP 주소를 열고 F5 키를 누르십시오. . HAproxy 통계가 변경됩니다.

이 기사에서는 기본 HAProxy 구성을 고려했습니다. HAProxy 모듈을 사용하는 경우가 더 많습니다.

우리 스키마에서 로드 밸런싱 HAProxy 서버는 단일 실패 지점이 됩니다. 웹 서비스의 내결함성을 높이려면 다른 HAProxy 서버를 추가하고 Keepalived를 사용하여 고가용성 로드 밸런서 구성을 구현할 수 있습니다. 다음과 같은 스키마를 얻게 됩니다.

Nginx용 로드 밸런서로 HAProxy 사용