2개의 데이터 센터 간 MongoDB 자동 장애 조치

2개의 데이터 센터 간 MongoDB 자동 장애 조치

2개의 데이터 센터에만 MongoDb 복제본 세트를 배포하는 경우 전체 데이터 센터 하나에 장애가 발생하면 다른 데이터 센터로 자동 장애 조치가 가능합니까?

1개의 데이터 센터에 기본, 보조 및 중재자가 있고 두 번째 데이터 센터에 2개의 보조 구성원이 있는 상황을 생각해 보세요. 본질적으로 5명의 멤버로 구성된 복제 세트입니다.

데이터 센터 2가 다운되더라도 데이터 센터 1의 복제본 세트에는 여전히 3개의 구성원이 남아 있습니다. 훌륭합니다.

반대로, 데이터 센터 2가 계속 작동하고 데이터 센터 1이 다운되면 5개 멤버 복제본 세트 중 2개 멤버만 남게 됩니다. 이는 2차 투표를 통해 1차 투표가 되기에는 충분하지 않습니다.

그 맞습니까? 그렇지 않다면 내가 뭘 잘못하고 있는 걸까요?

이것이 가능하지 않은 경우 다른 옵션을 알아볼 수 있도록 알려주시기 바랍니다.

중재자를 수용하기 위해 세 번째 데이터 센터를 추가하는 것은 선택 사항이 아닙니다.

답변1

귀하의 질문에 대한 대답은 두 위치만으로는 불가능하다는 것입니다.

이것이 가능하지 않은 이유는 다음과 같이 설명할 수 있습니다. 두 위치가 모두 완벽하게 작동하지만 두 위치 간의 네트워크 연결에 결함이 있는 경우 그 중 하나만 작동 상태로 남아 있을 수 있습니다. 이 경우 두 위치가 동시에 예비 선거를 선출하는 것은 허용되지 않습니다.

한 위치에서 다른 위치가 완전히 다운된 상태와 다른 위치가 작동 중인 상태 사이의 차이를 알 수 있는 방법은 없지만 두 위치 사이의 네트워크 연결은 다운되었습니다.

따라서 다른 위치가 다운되었을 때 각 위치가 독립적으로 기본을 선택할 수 있다면 결과적으로 네트워크 중단 시 두 개의 기본이 동시에 존재할 수 있습니다. 두 개의 예비 선거를 갖는 것은 용납할 수 없는 시나리오이며, 이것이 두 위치 중 하나만 예비 선거를 선택할 수 있는 이유입니다.

세 곳이면 충분합니다실패 동작에 대해 가정하는 경우.오류에 대한 가정 없이 작동하는 솔루션은 단일 위치의 중단을 허용하기 위해 최소 4개 위치가 필요합니다. 이 요구 사항은 비잔틴 계약 분야의 주요 정리 중 하나에서 따릅니다.

답변2

가능한 옵션 중 하나는 첫 번째 데이터 센터에 기본 및 보조 데이터베이스를 두고, 두 번째 데이터 센터에 2개의 보조 데이터베이스를 두는 것이며, 중재자는 세 번째 데이터 센터에 둘 수 있습니다.

관련 정보