이 문서에 설명 된 모범 사례에 대해 질문하고 싶습니다.
http://info.mongodb.com/rs/mongodb/images/MongoDB-Performance-Best-Practices.pdf
여러 쿼리 라우터를 사용하십시오. 여러 서버에 분산 된 여러 몽고 프로세스를 사용하십시오. 일반적인 배포는 응용 프로그램과 몽고 프로세스 간의 로컬 통신을 허용하는 응용 프로그램 서버에 몽고 프로세스를 배치하는 것입니다. 적절한 수의 몽고 프로세스는 응용 프로그램 및 배포의 특성에 따라 다릅니다.
배포에 대한 배경 지식이 조금 있습니다. 우리는 많은 애플리케이션 서버 노드를 가지고 있습니다. 각각은 상태 비 저장 RESTful WS를 사용하여 하나의 JVM 기반 프로세스를 실행합니다. 이 모범 사례에서 알 수 있듯이 모든 단일 애플리케이션 서버 노드는 자체 mongos
프로세스를 실행합니다. 즉, JVM 프로세스 수는 항상 mongos
프로세스 수와 같습니다 .
모든 mongos
프로세스는 3 개의 구성 서버와 여러 개의 몽고 샤드 (각 샤드 내에 복제 세트가 있음)에 연결됩니다. 샤드 배포를 사용하더라도 실제로 컬렉션을 샤딩하지는 않습니다. 실제로 우리는 생성 시간 동안 모든 샤드에 걸쳐 분산 된 많은 데이터베이스를 보유하고 있습니다 (현재 샤딩의 주요 사용 사례입니다).
모범 사례는 "적절한 수의 몽고 프로세스가 응용 프로그램 및 배포의 특성에 따라 달라질 것"이라고 제안하기 때문에 사용 방법 mongos
이 실제로 적절한 지 또는 여러 전용 mongos
노드 를 갖는 것이 더 나은지 궁금해지기 시작했습니다. 앱 서버는 mongos
로컬로 실행 하지 않고도 서버에 연결 됩니다.
mongos
애플리케이션 서버 인스턴스 수 또는 MongoDB 클러스터 크기와 관련하여 적절한 인스턴스 수 를 결정하는 가장 좋은 방법에 대한 귀하의 의견은 무엇입니까 ?
최근에 우리는 Stateless 웹 서비스에 대한 클러스터 관리를 조사하기 시작했습니다. 즉, Docker, Apache Mesos 및 Kubernetes와 같은 도구를 의미합니다. Docker를 사용하는 경우 일반적으로 컨테이너 내에서 둘 이상의 프로세스를 실행하는 것이 좋습니다. 이러한 사실을 고려할 때 응용 프로그램 서버 컨테이너와 mongos
컨테이너가 항상 동일한 물리적 노드에 같은 위치에 있고 동일한 양의 프로세스를 갖도록 하는 것은 실제로 어렵습니다 . 이 모범 사례가 방금 설명한 클러스터 아키텍처에 여전히 적용되는지 궁금합니다. 그렇지 않다면 mongos
이 아키텍처에서 프로세스 를 찾고 배포하는 더 좋은 방법이 무엇인지 제안 해 주 시겠습니까?