2013-10-17 1 views
0

MongoDB 설치 프로그램은 3 개의 복제 세트 샤드를 사용합니다. 각 웹 서버는 로컬로 mongos 인스턴스를 실행하고 클라이언트 node.js 프로세스는 Mongoose (3.6.20) 및 node-mongodb-native를 사용하여 연결합니다. 따라서 node-mongodb-native는 localhost의 mongos에 연결합니다.복제본 세트 주 네트워크 오류시 node-mongodb-native가 복구되지 않습니까?

replica set primary가 다운 될 때 (우리는 'ifdown eth0'를 실행하여 이것을 시뮬레이트 할 수 있습니다.) mongos가이를 올바르게 감지하고 새 기본 노드가 선택되었음을 감지합니다. 여태까지는 그런대로 잘됐다. 그러나 mongos 인스턴스에 대한 node-mongodb-native의 연결은 아직 열리지 만 작동하지는 않으며 노드 procs를 다시 시작해야합니다.

우리는 mongos가 죽은 1 차 노드에 대한 기존 연결을 죽이고 노드 -mongodb-native가 다시 연결된다는 가정을했지만, 그렇지 않은 것 같습니다. 서버와 OS는이 연결이 열려 있다고 생각합니다. 반대로 기본 stepDown에서는 클라이언트가 정상적으로 작동하고 연결은 닫히고 다시 열립니다.

우리는 socketTimeoutMS를보고 있습니다.하지만 유휴 상태 인 연결에 대한 연결이 끊어 지므로 잘못된 것 같습니다.

클라이언트 또는 몽고에게 구성이 누락되었거나 자체 핑을 구현해야합니까?

답변

0

실험 및 다음 MongoDB 버그를 기반으로,이 시점에서 mongos (또는 원하는 경우 클라이언트 라이브러리)의 단점이있는 것으로 보입니다. 지금은 '앱에서 자신 만의 핑 논리를 작성하고 실패 할 경우 다시 연결을 트리거하는 것처럼 보입니다.'그러면 우리가하는 일이 바로 그 것입니다.

https://jira.mongodb.org/browse/SERVER-9041

관련 문제