저는 두 개의 백엔드 Linux 서버가 HTTP, SMTP, XMPP 미러를 실행하고 이들 사이의 연결이 로드 밸런싱되어야 하는 솔루션을 머리 속에서 해결하려고 노력하고 있습니다.
나의 현재 해결책은 OpenBSD 상자를 앞에 두는 것입니다. 물론 단일 실패 지점을 피하기 위해 앞으로 더 추가하기 위해 Carp를 사용하여 확장할 수 있습니다. PF를 사용하면 무작위 또는 라운드 로빈 방법을 사용하여 서버 풀에 트래픽을 보낼 수 있습니다.
릴레이를 사용하면 작동하지 않는 풀 서버를 제거할 수 있습니다.
하지만 저는 이 문제에 대한 커뮤니티의 의견을 소중하게 생각하므로 이러한 유형의 환경에 가장 적합한 Unix 로드 밸런싱 솔루션을 알려주십시오.
한 가지 목표는 한 서버의 장애를 허용하고 서비스 중단을 최소화하는 것입니다.
답변1
나는 하트비트와 ldirector의 순수한 Linux 조합에만 익숙합니다(둘 다리눅스 가상 서버한 쌍의 프런트엔드에서 N개의 백엔드로 IP 터널 트래픽을 전송하고, 하나의 프런트엔드가 종료되면 둘 사이에서 프런트엔드 IP를 공유/교환합니다. 제가 사용하는 환경에서는 잘 작동하는데, 스플릿 브레인 문제에 취약한지는 잘 모르겠습니다.
답변2
HAProxy는 BSD 및 Solaris(물론 Linux)를 포함한 많은 *nix 플랫폼에서 컴파일되었습니다. 로드 밸런서가 Linux를 실행하지 않는 경우 매우 편리하고 구성 가능한 소프트웨어입니다. 이는 HTTP를 이해하지만, 전혀 알지 못하는 모든 TCP 서비스의 균형을 맞출 수도 있습니다. 서버를 확인하고 응답하지 않는(또는 충분히 응답하지 않는) 서버를 서비스에서 제거합니다.
여기에 살고 있습니다 :http://haproxy.1wt.eu/
한 가지 단점이 있습니다. IPv4를 통해서만 내부(백엔드) 서버와 통신합니다(수신 IPv6 연결은 로드 밸런싱이 잘 이루어지고 내부 연결은 IPv4로 제한됩니다). 서버 팜에 듀얼 스택 설정이 있는 경우에는 문제가 되지 않습니다.
답변3
우리는 lvs, lvs-kiss 및 heartbeat를 실행하는 한 쌍의 가상 CentOS 5 서버를 사용합니다. 가상 서버 자체는 XEN 클러스터에 상주하며 다른 위치로 장애 조치될 수 있습니다.
LVS 서버 중 하나는 활성 마스터 서버이고 다른 하나는 슬레이브 서버입니다. 두 서버 모두에서 두 프로세스(마스터 및 슬레이브)가 영구적으로 실행되므로 세션이 항상 복제됩니다.
활성 LVS 서버에 장애가 발생하면 다른 LVS 서버가 대신하여 이전 대상 서버에 원활하게 LB 연결을 제공합니다.
답변4
질문에 대답하자면, 그렇습니다. Linux를 사용하여 두 개의 다른 Linux 서버(실제로 해당 서비스)의 부하를 분산할 수 있습니다. 저는 이것을 좀 더 구체적으로 표현하기 위해 피라냐를 사용합니다. Piranha는 LVS 클러스터 시스템 위에 있는 관리 계층입니다. Redhat에서 제공하는 자세한 가이드는 다음 위치에 있습니다. http://www.redhat.com/support/resources/howto/piranha/