0

我正在尝试在 mongodb 中创建一个复制的分片集群。最初我创建了两个分片,每个分片中有一个包含三个成员的副本集。所有的分片和副本集都在一台机器上运行。我跟着

http://docs.mongodb.org/manual/tutorial/convert-replica-set-to-replicated-shard-cluster/

部署这种结构并且效果很好。

但是当我在 AWS 实例中为业务应用程序运行我的 mongodb 并将我的 node.js 服务器与数据库连接时,我想在多个 aws 实例中对数据库进行负载平衡,以便数据库即使在巨大的情况下也能正常工作流量负载,即使一个实例变得不健康或不可用,我也可以从其他实例中运行的副本集访问数据库。

根据我上一个问题中不同用户的建议

http://stackoverflow.com/questions/24671205/mongodb-load-balancing-in-multiple-aws-instances

我正在尝试将数据库划分为分片,每个分片将有一个具有 3 个或更多成员的副本集,这些成员在单独的 aws 实例中运行。为了创建这个结构,我首先尝试在本地部署它。

我有两个副本集 firstset 和 secondset

第一组有三个成员 192.168.1.10:27018(Primary), 192.168.1.11.27018(Secondary) & 192.168.1.9:27018(arbiter)

第二组有三个成员 192.168.1.6:27019(Primary), 192.168.1.9:27019(Secondary) & 192.169.1.11:27019(arbiter)

创建我写的第一个副本

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
         }]
         }
    });

我以类似的方式创建了 secondset 副本并且它有效。

然后我尝试在三台单独的机器上创建三个 configsvrs,这样即使一台机器关闭,其他 configsvrs 也会运行。configsv 将在 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,三个运行的 configdb。所以,我写了

mongos --configdb 192.168.1.10:27020,192.168.1.11:27020,192.168.1.6:27020 --port 27017 --chunkSize 1

然后因为我必须在 mongos 中添加分片,并且 mongos 在 27017 端口中运行,所以我写了:-

mongo --port 27017

但它显示

errno:111 conncetion refused.

但以前当我在一台机器上测试它时它工作得很好。

请帮助我为什么会收到此错误以及如何解决它。

我还有另一个困惑。我在 192.168.1.10 中运行 mongos,然后将我的 node.js 服务器与该 mongos 连接,但如果该机器关闭,我就会遇到问题。那么我是否还需要在其他机器上运行 mongos,以便随时运行至少一个 mongos 来路由与数据库的连接?如果我必须创建多个同时运行不同机器的 mongos,那么我将如何从 node.js 服务器连接任何一个 mongos 以访问数据库?

4

0 回答 0