동적 백엔드 멤버십을 지원하는 HTTP 로드 밸런서?

동적 백엔드 멤버십을 지원하는 HTTP 로드 밸런서?

여러 백엔드 애플리케이션 서버 앞에 역방향 프록시/HTTP 로드 밸런서를 배포하고 싶습니다. 문제는 백엔드 세트가 시간이 지남에 따라 변경될 수 있고 새로운 애플리케이션 서버가 동적으로 생성될 수 있다는 것입니다(따라서 전체 세트를 미리 알 수 없음). 이것은 다음과 같은 것을 의미합니다광택, 상태 확인을 수행할 수 있는모두 다 아는백엔드 세트는 옵션이 아닙니다.

내가 생각해 낼 수 있었던 가장 좋은 점은 프록시 표현식 prg RewriteMap과 결합된 Apache의 지원 입니다. RewriteRule나는 애플리케이션 서버가 프런트엔드에 스스로를 "등록"하기 위한 간단한 클라이언트/서버 메커니즘과 RewriteMap이 목록에서 백엔드를 선택하는 프로그램을 함께 해킹했습니다. 효과는 있지만 냄새가 나요정말해키.

이는 합리적으로 일반적인 시나리오인 것 같습니다(요청 시 새 서버를 쉽게 가동할 수 있는 클라우드 서비스 제공업체가 너무 많기 때문). 다른 사람들은 이 문제를 어떻게 해결하고 있나요? 상용 로드 밸런서를 사용하고 계십니까? 모두가 스스로 무언가를 모으고 있습니까?

답변1

Apache에 내장된(잘 제공되는) mod_proxy_balancer 모듈은 개별 가중치 부여 및 멤버 백엔드의 제어된 병합 및 삭제를 포함하여 이 기능의 대부분을 제공합니다.

런타임 시 이 동작을 시각화하고 제어하는 ​​밸런서-관리자 앱도 있습니다.

자세한 내용은 여기를 참조하세요.http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

답변2

nginx는 이를 기본적으로 지원하지 않지만 구현하기가 매우 쉽습니다. 제가 그렇게 했으니 아래에 자세히 설명하겠습니다

1) 업스트림(upstreams.conf)을 위한 별도의 구성 파일을 생성하고 기본 nginx.conf에서 포함합니다. 2) 이제 이 파일을 직접 또는 별도로 스크립트로 편집할 수 있습니다. 이 파일을 관리하기 위한 간단한 Perl 스크립트를 작성했습니다. 텍스트 추가/삭제 업스트림 설명이 있는 라인. 3) 정상적인 재로드를 실행하기 위해 기본 nginx 프로세스에 HUP 신호를 보냅니다. 4) 이러한 작업을 제어하고 상태 확인을 제공하기 위해 일부 웹 UI가 구현되었지만 FOSS는 아닙니다.

상태 확인 및 관리 인터페이스를 구현하는 몇 가지 3가지 측면 모듈이 있다는 이의 제기를 살펴보시기 바랍니다.

http://wiki.nginx.org/HttpHealthcheckModule https://bitbucket.org/benjaminws/nginxmgr/ https://github.com/FRiCKLE/ngx_supervisord

확실하지는 않지만 haproxy에도 동일한 기능이 있을 수 있습니다.

답변3

거의 모든 상업용 로드 밸런싱 솔루션(F5, Citrix, A10 등)에는 이러한 목적으로 쉽게 활용할 수 있는 구성 관리 API(REST 또는 SOAP 기반)가 있습니다. 서버는 시작 라우팅의 일부로 관련 풀에 자신을 추가할 수 있습니다. , 종료되면 자신을 삭제합니다. 서버가 충돌하면 LB는 상태 확인 실패로 인해 해당 서버를 작동 중지로 표시합니다.

관련 정보