mongodb でレプリケートされたシャード クラスターを作成しようとしています。最初に 2 つのシャードを作成し、各シャードに 3 つのメンバーを持つレプリカ セットがあります。また、すべてのシャードとレプリカセットが 1 台のマシンで実行されます。私はついていきます
http://docs.mongodb.org/manual/tutorial/convert-replica-set-to-replicated-shard-cluster/
この構造を展開し、それは完全に機能しました。
しかし、ビジネス アプリケーション用の AWS インスタンスで mongodb を実行していて、node.js サーバーをデータベースに接続しているので、複数の aws インスタンス内でデータベースの負荷を分散して、巨大な環境でもデータベースが正常に動作するようにしたいと考えています。トラフィックの負荷を軽減し、1 つのインスタンスが異常または使用不可になった場合でも、他のインスタンスで実行されているレプリカセットからデータベースにアクセスできます。
前の質問でのさまざまなユーザーの提案に応じて
http://stackoverflow.com/questions/24671205/mongodb-load-balancing-in-multiple-aws-instances
データベースをシャードに分割しようとしていますが、各シャードには、別々の aws インスタンスで実行されている 3 つ以上のメンバーを持つレプリカ セットがあります。この構造を作成するために、最初はローカルにデプロイしようとしました。
私は2つのレプリカセットfirstsetとsecondsetを持っています
最初のセットには、192.168.1.10:27018 (プライマリ)、192.168.1.11.27018 (セカンダリ)、および 192.168.1.9:27018 (アービター) の 3 つのメンバーがあります。
2 番目のセットには 192.168.1.6:27019 (プライマリ)、192.168.1.9:27019 (セカンダリ)、192.169.1.11:27019 (アービター) の 3 つのメンバーがあります。
私が書いた最初のセットのレプリカを作成するには
mongod --dbpath /replica-data --port 27018 --replSet firstset --oplogSize 10
192.168.1.10、192.168.1.11、および 192.168.1.9 で
次に、作成したレプリカ セットを開始します。
mongo --port 27018
192.168.1.10 で、その後、
use admin
db.runCommand({
"replSetInitiate": {
"_id": "firstset",
"members": [{
"_id": 1,
"host": "192.168.1.10:27018",
"priority": 10
}, {
"_id": 2,
"host": "192.168.1.11:27018",
"priority": 2
}, {
"_id": 3,
"host": "192.168.1.9:27018",
"priority": 1,
"arbiterOnly": true
}]
}
});
同様の方法でセカンドセットのレプリカを作成しましたが、うまくいきました。
次に、1 台のマシンがシャットダウンしても他の configsvrs が実行されるように、3 つの個別のマシンに 3 つの configsvr を作成しようとしました。configsvs は 192.168.1.10:27020、192.168.1.11:27020 & 192.168.1.6:27020 で実行されます。
だから私は書いた
mongod --configsvr --dbpath /shard-data -port 27020
192.168.1.10、192.168.1.11、および 192.168.1.6 で。
次に、27017 ポートの 192.168.1.10 で mongos を実行し、3 つの configdb を実行しようとしました。だから、私は書いた
mongos --configdb 192.168.1.10:27020,192.168.1.11:27020,192.168.1.6:27020 --port 27017 --chunkSize 1
次に、mongos にシャードを追加し、27017 ポートで実行中の mongos を追加する必要があるため、次のように記述しました。
mongo --port 27017
でも映ってる
errno:111 conncetion refused.
しかし、以前は単一のマシンでテストしていたときに完全に機能していました。
このエラーが発生する理由と解決方法を教えてください。
また、別の混乱があります。192.168.1.10 で mongos を実行していて、node.js サーバーをその mongos に接続しますが、そのマシンがシャットダウンすると問題が発生します。したがって、データベースとの接続をいつでもルーティングするために少なくとも1つのmongoが実行されるように、他のマシンでもmongoを実行する必要がありますか? 実行中の複数の mongos を別々のマシンで同時に作成する必要がある場合、node.js サーバーからいずれかの mongos を接続してデータベースにアクセスするにはどうすればよいですか?