하나의 서버에 여러 개의 몽고


11

나는 샤딩 에 대해 이야기하고 있지 않다 . 우리는 테스트 서버 (리눅스)를 가지고 있었고 이미 mongo다른 프로젝트 / 하위 팀에 속한 서버가 있습니다. 그것은 실행할 수 있습니다 여러 고립 된 인스턴스 의를 mongodb하나 개의 시스템에? 어떻게하니?

답변:


14

예.의 다른 인스턴스에 대해 다른 포트 번호와 데이터 디렉토리를 지정한 mongod다음 클라이언트에서 새 포트 번호를 지정하여이를 수행 할 수 있습니다.

예를 들면 다음과 같습니다.

./mongod --dbpath /foo/bar/otherpath --port some_other_port

당신은 할 수 도 변경 이 필요한 경우 샤드 서버 및 구성 서버 포트 번호를.


1
mongodb.conf 내에서이를 지정할 수 있습니까? 아니면 스크립트를 만들어야합니까? (* nix에서)
Justin

@Justin, 당신은 확실히 설정 파일 내에서 이러한 옵션을 지정할 수 있습니다 - 참조 mongodb.org/display/DOCS/File+Based+Configuration을 . 그러나 여전히 다른 구성 파일을 다른 인스턴스로 전달해야합니다.
dsolimano

@dsolimano 덕분에 rc.d에 Mongo의 두 인스턴스에 대한 두 개의 스크립트가 있습니다. db, pid, logging에 다른 경로를 지정하고 청취 할 다른 포트를 지정했습니다. 또한 두 번째 스크립트가 실행될 때 mongo가 이미 실행 중이므로 첫 번째 인스턴스에서 실패합니다. 그래서 내 실제 질문은 (웹에서 이것을 찾는 데 많은 운이 없었습니다) 동시에 두 개의 포크 인스턴스를 실행할 수 있습니까? 감사합니다
Justin

@Justin, 아마도 이것이 새로운 질문의 수준으로 올라갈 것이라고 생각합니다. 아마도이 사이트에서 질문해야합니까? Mongo를 시작하는 방법에 문제가있는 것 같습니다.
dsolimano

3

내가 취한 단계는 다음과 같습니다.

  1. conf 파일 /etc/mongod.conf를 mongod2.conf 및 mongod3.conf에 복사하십시오.
  2. 다른 포트 및 다른 데이터베이스 경로를 갖도록 conf 파일 편집
  3. init.d 시작 스크립트 /etc/init.d/mongod를 mongod2 및 mongod3에 복사하십시오.
  4. 바이너리 mongod / usr / bin / mongod를 / usr / bin / mongod2 및 / usr / bin / mongod3에 복사하십시오.
  5. init.d 시작 스크립트를 편집하고 다음을 변경하십시오.

    CONFIGFILE = "/ etc / mongod2.conf"(각각 mongod3.conf)

    ....

    mongod = $ {MONGOD- / usr / bin / mongod2} (각각 mongod3)

내가 찾은 곳마다 / var / lock / subsys / mongod를 / var / lock / subsys / mongod2 (각각 mongod3)로 교체했습니다.

mongod.lock을 mongod2.lock (또는 각각 mongod3.lock)으로 바꾸려는 유혹에 저항하십시오. 서로 다른 폴더에 있으며 (데이터베이스 폴더가 다름) 충돌하지 않습니다.

이제 할 수 있습니다

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

그리고 또한

mongo --port <port_number> 

각 mongo 인스턴스마다 (conf 파일의 포트 설정을 기억하십시오)

mongod 바이너리의 이름을 바꾸면 어떤 부작용이 있는지 알 수 없습니다.

도움이 되었기를 바랍니다.

[나중에 편집] 인스턴스를 자동으로 시작하려면 ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod 및 ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)


아 좋아! mongod 실행 파일 자체를 복제해야한다고 생각하지 않았기 때문에 이전에 많은 운없이 정확하게 동일했습니다. 이제 다 좋아
Bach

제 경우에는를 사용하여 스크립트 Ubuntu 16.01가 없었습니다 init.d. init.d스크립트 컨텐츠 를 제공 할 수 있습니까 ?
Shubham A.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.