Nhiều Mongos trên một máy chủ


11

Tôi không nói về shending . Chúng tôi đã có một máy chủ thử nghiệm (linux) và đã có một máy chủ mongothuộc dự án / phụ đề khác. Là nó có thể chạy nhiều, trường hợp bị cô lập của mongodbtrên một máy? Tôi làm nó như thế nào?

Câu trả lời:


14

Có, bạn có thể làm điều này bằng cách chỉ định các số cổng và thư mục dữ liệu khác nhau cho các trường hợp khác mongodvà sau đó chỉ định số cổng mới trong máy khách.

Ví dụ:

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

Bạn cũng có thể thay đổi số cổng máy chủ và cấu hình máy chủ shard nếu bạn cần.


1
Có thể chỉ định điều này trong mongodb.conf? Hay tôi sẽ phải tạo một kịch bản để làm điều đó? (trên * nix)
Justin

@Justin, bạn chắc chắn có thể chỉ định các tùy chọn này trong tệp cấu hình - xem mongodb.org/display/DOCS/File+Basing+Configuration . Nhưng sau đó bạn vẫn cần chuyển các tệp cấu hình khác nhau cho các trường hợp khác nhau.
DSolimano

Cảm ơn @dsolimano, tôi đã có hai tập lệnh trong RC.d cho hai phiên bản Mongo. Tôi đã chỉ định các đường dẫn khác nhau cho db, pid, ghi nhật ký và cung cấp cho chúng các cổng khác nhau để nghe. Nó cũng bị rẽ nhánh và khi tập lệnh thứ hai chạy thì nó bị lỗi vì mongo đã chạy (ví dụ đầu tiên). Vì vậy, tôi đoán câu hỏi thực sự của tôi là (II không có nhiều may mắn khi tìm thấy điều này trên web) là bạn có thể có hai trường hợp rẽ nhánh chạy cùng một lúc không? Cảm ơn
Justin

@Justin, tôi nghĩ rằng điều này có thể tăng lên đến mức của một câu hỏi mới, có lẽ bạn nên hỏi nó trên trang web này? Có vẻ như có điều gì đó về cách bạn bắt đầu Mongo đang gây ra vấn đề.
DSolimano

3

Các bước tôi đã thực hiện là:

  1. Sao chép tập tin conf /etc/mongod.conf sang mongod2.conf và cả mongod3.conf
  2. Chỉnh sửa tập tin conf để có các cổng khác nhau và đường dẫn cơ sở dữ liệu khác nhau
  3. Sao chép init.d start script /etc/init.d/mongod sang mongod2 và cả mongod3
  4. Sao chép nhị phân mongod / usr / bin / mongod sang / usr / bin / mongod2 và cả / usr / bin / mongod3
  5. Chỉnh sửa init.d start script và thay đổi như sau:

    CONFIGFILE = "/ etc / mongod2.conf" (mongod3.conf, tương ứng)

    ....

    mongod = $ {MONGOD- / usr / bin / mongod2} (mongod3, tương ứng)

Đã thay thế / var / lock / subsys / mongod bằng / var / lock / subsys / mongod2 (mongod3, tương ứng) bất cứ nơi nào tôi tìm thấy nó.

Chống lại sự cám dỗ để thay thế mongod.lock bằng mongod2.lock (hoặc tương ứng với mongod3.lock). Chúng nằm trong các thư mục khác nhau (thư mục cơ sở dữ liệu khác nhau) và sẽ không xung đột.

Bây giờ tôi có thể

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

và cũng

mongo --port <port_number> 

cho mỗi phiên bản mongo (hãy nhớ cài đặt cổng từ tệp conf)

Tôi không biết về bất kỳ tác dụng phụ nào của việc đổi tên nhị phân mongod ..

Hi vọng điêu nay co ich.

[Chỉnh sửa sau] Để bắt đầu phiên bản tự động, chỉ cần ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod và ln -s /etc/init.d/mongod3 / etc / rc .d / RC3.d / S87mongod :)


Ah đẹp đấy! đã làm chính xác như vậy mà không gặp nhiều may mắn trước đây vì tôi không nghĩ rằng chúng ta cũng nên sao chép chính tệp thực thi mongod. Tất cả đều tốt
Bạch

Trong trường hợp của tôi, sử dụng Ubuntu 16.01, không có init.dkịch bản. Bạn có thể cung cấp init.dnội dung kịch bản?
Shubham A.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.