1つのサーバー上の複数のMongos


11

私はシャーディングについて話していません。私たちは持っていたテストサーバー(Linux)をし、1すでにあるmongo別のプロジェクト/サブチームに属しています。実行することが可能である複数の独立インスタンスmongodbあるマシン上の?どうすればできますか?

回答:


14

はい、他のインスタンスに異なるポート番号とデータディレクトリをmongod指定してから、クライアントで新しいポート番号を指定することでこれを行うことができます。

例えば:

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

必要に応じて、シャードサーバーと構成サーバーのポート番号を変更することできます。


1
mongodb.conf内でこれを指定することは可能ですか?または、それを行うためにスクリプトを作成する必要がありますか?(* nixで)
ジャスティン

@Justin、設定ファイル内でこれらのオプションを確実に指定できます-mongodb.org/display/DOCS/File+Based+Configurationを参照してください。ただし、異なるインスタンスに異なる構成ファイルを渡す必要があります。
dsolimano

@dsolimanoのおかげで、Mongoの2つのインスタンス用にrc.dに2つのスクリプトがあります。db、pid、loggingに異なるパスを指定し、リッスンする異なるポートを指定しました。また、フォークされており、2番目のスクリプトを実行すると、mongoが既に実行されているため失敗します(最初のインスタンス)。ですから、私の本当の質問は(ウェブ上でこれを見つけることができなかった)、2つのフォークされたインスタンスを同時に実行できますか?ありがとう
ジャスティン

@ジャスティン、これはおそらく新しい質問のレベルにまで上昇すると思います。おそらくこのサイトで質問すべきでしょうか?問題を引き起こしている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実行可能ファイル自体も複製する必要があるとは思わなかったので、以前はあまり運がなくまったく同じでした。すべて順調です。
バッハ

私の場合、を使用してUbuntu 16.01init.dスクリプトはありませんでした。init.dスクリプトのコンテンツを提供できますか?
シュバムA.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.