중복로드 밸런서를 만드는 방법?


27

로드 밸런서의 목적은 서버 간의로드 밸런싱과 인스턴스 상태 등을 추적하는 것입니다. 그러나로드 밸런서 자체가 실패하면 어떻게됩니까? 중복로드 밸런서를 어떻게 설정합니까? (로드 밸런싱로드 밸런서?)

DNS 상태 확인이 어떻게 유용한 지 알 수 있지만 대기 시간에 중대한 문제가 있습니까?

이는 AWS ELB 또는 이와 유사한 서비스를 사용하지 않는 것으로 가정합니다. Nginx라고 말하면 어떻게해야합니까?


아키텍처 맨 위에는 "로드 밸런싱로드 밸런서" 가 없으므로 LB를 중복으로 만들고 대부분의 클러스터링 유형과 마찬가지로 장애를 처리하기 위해 고 가용성 솔루션을 설정하기 만하면됩니다.
Xavier Lucas

답변:


32

Load Balancer의 HA (고 가용성)를 달성하거나 서비스와 관련하여 몇 가지 방법이 있습니다. IP 주소를 가진 두 개의 머신이 있다고 가정합니다.

  • 192.168.100.101
  • 192.168.100.102

사용자는 IP에 연결하므로 IP를 특정 상자와 분리하는 것이 좋습니다 (예 : 가상 IP 생성). 해당 IP는 192.168.100.100입니다.

이제 자동 장애 조치 / IP 주소 장애 복구를 처리하는 HA 서비스를 선택할 수 있습니다. 유닉스에 대한 가장 간단한 서비스 중 일부는 (u) 잉어 및 킵 얼라이브이며, 더 복잡한 서비스 중 일부는 예를 들어 RedHat Cluster Suite 또는 Pacemaker입니다.

keepalived를 예로 들어 보자. 두 개의 keepalived 서비스 (각각 자체 상자에서 실행)가 서로 통신합니다. 이러한 의사 소통을 종종 하트 비트라고합니다.

|   VIP   |                           |         |
|  Box A  | ------v^-----------v^---- |  Box B  |
|   IP1   |                           |   IP2   |

하나의 keepalived가 응답을 중지하는 경우 (어떤 이유로 든 서비스가 중단되거나 상자가 튀거나 종료 됨)-다른 상자에서 keepalived는 누락 된 하트 비트를 발견하고 다른 노드가 작동하지 않는 것으로 가정하고 장애 조치 조치를 수행합니다. 우리의 경우 그 행동은 유동 IP를 가져올 것입니다.

                                      |   VIP   |
    ------------------ -------------- |  Box B  |
                                      |   IP2   |

이 경우에 발생할 수있는 최악의 경우는 클라이언트의 세션 손실이지만 다시 연결할 수는 있습니다. 이를 피하려면 두 개의로드 밸런서가 세션 데이터를 동기화 할 수 있어야하며, 그렇게 할 수 있으면 사용자는 짧은 지연이 발생하지 않은 것을 눈치 채지 못할 것입니다.

이 설정의 또 다른 함정은 두 상자가 모두 온라인 상태이지만 링크가 끊어지고 두 상자가 동일한 IP를 가져 오는 경우 두뇌 분리입니다. 이는 일종의 펜싱 메커니즘 (SCSI 예약, IPMI 재시작, 스마트 PDU 전원 차단 등) 또는 서비스를 시작하기 위해 대부분의 클러스터 구성원이 살아 있어야하는 홀수 개의 노드를 통해 해결되는 경우가 많습니다.

|   VIP   |                           |   VIP   |
|  Box A  |                           |  Box B  |
|   IP1   |                           |   IP2   |

보다 복잡한 클러스터 관리 소프트웨어 (예 : Pacemaker)는 전체 서비스를 이동할 수 있습니다 (예 : 한 노드에서 중지하고 다른 노드에서 시작)-데이터베이스와 같은 서비스의 HA를 달성 할 수있는 방법입니다.

또 다른 방법은로드 밸런서 근처에서 라우터를 제어하는 ​​경우 ECMP를 사용하는 것입니다. 이 접근 방식을 사용하면로드 밸런서를 수평으로 확장 할 수도 있습니다. 이것은 BGP를 라우터와 통신하는 두 개의 상자 각각에서 작동합니다. 각 상자는 가상 IP (192.168.100.100)를 알리고 라우터는 ECMP를 통해 트래픽의 부하를 분산시킵니다. 컴퓨터가 죽으면 VIP 광고를 중단하고 라우터가 트래픽을 보내지 못하게됩니다. 이 설정에서주의해야 할 것은로드 밸런서 자체가 죽으면 IP 광고를 중지하는 것입니다.


3

Nginx를로드 밸런서로 사용하면 응답 없음 시간 초과를 감지하도록 구성을 변경하여이 게시물에 자세히 설명 된 리디렉션을 따를 수 있습니다.

nginx 자동 장애 조치로드 밸런싱

이론적으로 HA 환경이있는 경우 클러스터 된 여러로드 밸런서는 서비스가 실패 할 경우 서비스를 유지 관리해야합니다.

이것이 도움이되기를 바랍니다.


2

하드웨어로드 밸런서는 수년간 "액티브 / 패시브"또는 "액티브 / 액티브"설정을 지원했습니다. 두 경우 모두 계층 1/2 관점에서 병렬로 설정됩니다. 액티브 / 패시브는 설명 된대로 모니터링 / 보관 메커니즘을 사용합니다. 액티브 / 액티브는 여러 가지 방법으로 구현할 수 있습니다. 프론트 엔드에서 단일 IP로 나타나려면 둘 이상의 밸런서가 모두 온라인 상태이면 다음과 같은 작업을 수행 할 수 있습니다.

  • 클라이언트가 동일한 네트워크에있을 때 소스 MAC 또는 IP 주소를 기반으로 공유 IP에 대한 ARP 요청에 선택적으로 응답
  • 주어진 새로운 TCP 연결의 트래픽을 처리하는 서로 협상
  • 중복되거나 잘못된 계층 3-7 트래픽이 무모하게 발생하도록하고 클라이언트 / 라우터 TCP 스택에 의존하여 분류합니다.

그런 다음 파트너 장치와의 통신이 끊어 질 때 모드를 모두 또는 그 이상의 트래픽을 수락하도록 변경하십시오.

백엔드 측에서 :

  • 각 밸런서는 정상 작동에서 지정된 하위 응용 프로그램 서버 풀만 사용할 수 있습니다.
  • 또는 중복 된 요청이 여기에서도 생성 될 수 있습니다 ...
  • 또는 밸런서 간 협상이 수행 될 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.