MongoDB 복제에 'arbitter'가 필요한 이유는 무엇입니까?
Arbitter 없이 MongoDB 복제를 설정했다고 가정합니다. 기본 복제를 사용할 수 없는 경우 복제본 세트가 보조 복제를 기본 복제로 선택합니다.복제품이 자동으로 프라이머리를 선택하기 때문에 일종의 암묵적인 중재자라고 생각합니다.
그래서 저는 왜 우리가 전용 아비터 노드가 필요한지 궁금합니다.감사합니다!
복제본 집합에서 Arbiter 노드의 효과를 더 잘 설명하기 위해 스프레드시트를 만들었습니다.
그것은 기본적으로 다음과 같은 점으로 귀결됩니다.
- 데이터 노드가 2개인 RS의 경우, 서버 1대를 잃으면 투표 최소치("N/2보다 큼")보다 낮아집니다.중재자가 이 문제를 해결합니다.
- 짝수 데이터 노드의 RS를 사용하면 분할로 인해 2개의 투표 클러스터를 가질 수 없는 상태에서 Arbiter를 추가하면 내결함성이 1만큼 증가합니다.
- 홀수 데이터 노드의 RS를 사용하여 Arbiter를 추가하면 분할을 통해 "N/2보다 큰" 표를 가진 2개의 분리된 클러스터를 생성할 수 있으므로 분할 브레인 시나리오가 생성됩니다.
선거는 여기에 자세히 설명되어 있지 않습니다.그 문서에는 RS가 50명의 회원(짝수)과 7명의 투표 회원을 가질 수 있다고 명시되어 있습니다.저는 "상태"가 어떻게 작동하는지 설명하지 않기 때문에 강조합니다.제가 보기에는 한쪽에 4명의 멤버(모두 투표)가 있고 다른 한쪽에 46명의 멤버(3 투표)가 있는 분열이 발생한다면 46명의 예비 선거인단을 선출하고 4명을 읽기 전용 클러스터로 만드는 것이 좋습니다.하지만, 그것이 바로 "제한된 투표"가 막는 것입니다.이 경우 실제로는 주 클러스터가 있는 4 멤버 클러스터와 읽기 전용 클러스터인 46 멤버 클러스터가 있습니다.그것이 어떻게 말이 되는지 설명하는 것은 이 질문의 범위 밖이고 제가 아는 범위 밖입니다.
복제에는 다음과 같은 이유로 아비터가 필요합니다.
- 복제 세트 수가 홀수인 경우 복제가 더 안정적입니다.복제본 수가 짝수인 경우, 복제에 아비터를 추가하는 것이 좋습니다.
- 중재자는 데이터를 보유하지 않으며 실패가 없을 때 선거에서 투표합니다.
- 아비터는 하드웨어 리소스를 많이 사용하지 않는 경량 프로세스입니다.
- 중재자는 암호화된 복제본 집합 간에 사용자 자격 증명 데이터를 교환합니다.
- 선거 중 투표, 하트비트 및 구성 데이터는 복제본 세트 간에 통신하는 동안 암호화되지 않습니다.
- 높은 가용성을 유지하려면 복제본 세트 중 하나와 함께 아비터를 별도의 컴퓨터에서 실행하는 것이 좋습니다.
이것이 도움이 되길 바랍니다!!!
이는 파티션 양쪽에 동일한 수의 서버가 있는 경우 데이터베이스가 CAP(Consistency, Availability 및 Partition Tolerance)를 유지할 수 없다는 CAP 정리로 귀결됩니다.Arbiter는 이 경우 기본이 선택될 수 있도록 한쪽에 "불균형" 또는 다수당을 생성하도록 특별히 설계되었습니다.
어느 쪽이든 짝수의 노드가 있는 경우 MongoDB는 기본 노드를 선택하지 않으며 세트는 쓰기를 허용하지 않습니다.
편집
어느 쪽이든, 예를 들어, 한쪽은 2이고 다른 쪽은 2입니다.그곳에서 나의 영어는 이해하기 쉽지 않았습니다.
그래서 정말로 제가 의미하는 것은 양쪽 모두입니다.
편집
위키피디아는 CAP를 설명하는 데 꽤 좋은 사례를 제시합니다: http://en.wikipedia.org/wiki/CAP_theorem
중재자는 복제본 집합에 짝수 개의 몽고드가 배치되어 있을 때 투표가 성공할 수 있도록 하는 선택적 메커니즘입니다.중재자는 전용 mongo 복제본이 아닌 서버에 배포하기 위한 경량입니다. 즉, 서버의 기본 역할은 redis 서버와 같은 다른 작업입니다.가볍기 때문에 시스템의 리소스를 (눈에 띄게) 간섭하지 않습니다.
문서에서:
아비터에는 데이터 세트의 복사본이 없으므로 주 데이터 세트가 될 수 없습니다.복제본 세트에는 의 기본 선택에 투표를 추가할 중재자가 있을 수 있습니다.중재자를 사용하면 데이터를 복제하는 구성원의 오버헤드 없이 복제본 세트의 구성원 수가 일정하지 않습니다.
- http://docs.mongodb.org/manual/core/replica-set-arbiter/
- http://docs.mongodb.org/manual/core/replica-set-elections/ #이벤트 세트 선거
언급URL : https://stackoverflow.com/questions/18211154/why-do-we-need-an-arbiter-in-mongodb-replication
'source' 카테고리의 다른 글
MS Visual Studio: How to exclude certain Project Folders from publishing? (0) | 2023.07.13 |
---|---|
DDL 문은 항상 암묵적 커밋을 제공합니까? 아니면 암묵적 롤백을 제공할 수 있습니까? (0) | 2023.07.13 |
엑셀의 새 줄 바꿈 문자 코드는 무엇입니까? (0) | 2023.07.13 |
Google Firebase 하위 항목이 있는지 확인 (0) | 2023.07.13 |
Rprofile에서 .libPaths를 사용하여 R 기본 라이브러리 경로를 변경합니다.사이트가 작동하지 않음 (0) | 2023.07.13 |