MetalLB가 레이어 2 모드에서 실제 로드 밸런싱 기능을 제공할 수 없는 이유는 무엇입니까?

MetalLB가 레이어 2 모드에서 실제 로드 밸런싱 기능을 제공할 수 없는 이유는 무엇입니까?

그만큼MetalLB 문서화다음과 같이 말합니다.

레이어 2 모드에서는 서비스 IP의 모든 트래픽이 하나의 노드로 이동합니다.

제가 이해한 바에 따르면 이는 주로 다음과 같은 사실 때문입니다.

한 노드는 로컬 네트워크에 서비스를 광고하는 책임을 맡습니다.

해당 문서의 나머지 부분에서 언급했듯이 이 동작은 심각한 제한을 의미합니다. 트래픽 대역폭은 선택된 노드를 통과할 수 있는 정도로 제한됩니다. 하지만 문서에서 주장하는 것처럼 ARP 때문일까요?

이 제한을 제거하기 위해 제가 상상할 수 있는 솔루션은 노드당 하나의 "스피커"를 갖는 것입니다. 새로운 포드 및 서비스 세트가 배포되면 새 노드를 실행하는 노드에서 실행되는 스피커가 ARP 알림을 담당합니다. 이렇게 하면 인바운드 트래픽이 항상 최적의 경로를 취하게 됩니다. 기술적으로 가능합니까?

답변1

MetalLB가 맞습니다. 레벨 2 주소 지정 게임을 한다는 것은 단 하나의 호스트만이 유니캐스트 트래픽을 동시에 수신할 수 있음을 의미합니다. 서비스 주소별.

Say 2001:db8:c0ba:4816::a는 서비스 주소이고 현재 Ethernet의 NIC를 가리키고 있습니다 6E:17:C2:2E:F4:A4. 해당 호스트에 장애가 발생하면 장애 조치가 트리거됩니다. 일부 이웃 검색이 발생하고 이제 6E:17:C2:2E:E7:B8. 다중 경로를 사용할 수 있는 기회가 없습니다. HA 프로토콜과 유니캐스트 워크로드는 그러기에는 너무 단순합니다. 물론 더 많은 서비스 주소가 있을 수 있으므로 2001:db8:c0ba:4816::b사용되지 않은 다른 호스트로 이동할 수 있는 주소를 추가하세요.

이와 같은 활성/수동 설정은 VRRP 또는 PowerHA 클러스터 사용자에게 익숙할 것입니다. MetalLB가 어떤 이유로든 자신의 것을 다시 구현했다는 점만 빼면 말이죠.

MetalLB BGP 모드는 레이어 3 라우팅과 다릅니다. 서비스 주소 경로에 대해 여러 다음 홉이 설치된 경우 ECMP가 가능해집니다. 디자인과 비교해보세요ECMP를 사용하는 대규모 다중 계층 로드 밸런서.

설계에 따라 서비스 IP당 하나의 활성 호스트는 문제가 되지 않을 수 있습니다. 호스트는 25Gb 링크를 사용하여 상당히 크게 확장할 수 있습니다. 필요한 경우 실제 작업을 다른 호스트로 이동하고 프런트 엔드 연결을 종료하는 프록시만 남길 수 있습니다.

관련 정보