Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Can';无法让节点连接到副本集_Mongodb - Fatal编程技术网

Mongodb Can';无法让节点连接到副本集

Mongodb Can';无法让节点连接到副本集,mongodb,Mongodb,我正在尝试设置MongoDB测试副本集。问题是我找不到任何方法来获取错误消息,其中一个节点始终处于关闭或未知状态 这是我在小学的rs状态 { "set" : "rs0", "date" : ISODate("2014-05-08T00:41:11Z"), "myState" : 1, "members" : [ {

我正在尝试设置MongoDB测试副本集。问题是我找不到任何方法来获取错误消息,其中一个节点始终处于
关闭
未知
状态

这是我在小学的rs状态

    {
            "set" : "rs0",
            "date" : ISODate("2014-05-08T00:41:11Z"),
            "myState" : 1,
            "members" : [
                    {
                            "_id" : 0,
                            "name" : "mongo1:27017",
                            "health" : 1,
                            "state" : 1,
                            "stateStr" : "PRIMARY",
                            "uptime" : 3319,
                            "optime" : Timestamp(1399509356, 1),
                            "optimeDate" : ISODate("2014-05-08T00:35:56Z"),
                            "electionTime" : Timestamp(1399506359, 1),
                            "electionDate" : ISODate("2014-05-07T23:45:59Z"),
                            "self" : true
                    },
                    {
                            "_id" : 2,
                            "name" : "mongo3:30000",
                            "health" : 1,
                            "state" : 2,
                            "stateStr" : "SECONDARY",
                            "uptime" : 319,
                            "lastHeartbeat" : ISODate("2014-05-08T00:41:11Z"),
                            "lastHeartbeatRecv" : ISODate("2014-05-08T00:41:11Z"),
                            "pingMs" : 2,
                            "syncingTo" : "mongo1:27017"
                    },
                    {
                            "_id" : 3,
                            "name" : "mongo2:27018",
                            "health" : 1,
                            "state" : 6,
                            "stateStr" : "UNKNOWN",
                            "uptime" : 315,
                            "optime" : Timestamp(0, 0),
                            "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                            "lastHeartbeat" : ISODate("2014-05-08T00:41:11Z"),
                            "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                            "pingMs" : 2,
                            "lastHeartbeatMessage" : "still initializing"
                    }
            ],
            "ok" : 1
    }
这是来自primary的rs.conf

    {
            "_id" : "rs0",
            "version" : 12,
            "members" : [
                    {
                            "_id" : 0,
                            "host" : "mongo1:27017"
                    },
                    {
                            "_id" : 2,
                            "host" : "mongo3:30000",
                            "arbiterOnly" : true
                    },
                    {
                            "_id" : 3,
                            "host" : "mongo2:27018"
                    }
            ]
    }
问题是mongo2:27018。我已尝试添加和删除它。我试着擦拭整个盒子并重新安装Cent+Mongo。从这3个框中的任何一个,我可以
mongo
切换到另一个框。所以从mongo1:27017我可以输入
MongoMongo2:27018
,它没有问题。所有3个框都有相同的配置,我在它们的
/etc/hosts
中检查了double、triple和quadraple

我在任何地方都能找到的唯一调试信息是问题节点上的以下块:

    2014-05-08T02:45:51.763+0200 [initandlisten] connection accepted from 10.0.2.2:48720 #50 (2 connections now open)
    2014-05-08T02:46:00.593+0200 [rsStart] trying to contact mongo1:27017
    2014-05-08T02:46:00.602+0200 [rsStart] trying to contact mongo3:30000
    2014-05-08T02:46:00.605+0200 [rsStart] replSet info Couldn't load config yet. Sleeping 20sec and will try again.

感谢您的指导,我们已经为此奋斗了5个小时。

我们发现的最终问题是,每个副本节点的主机名不仅需要在节点之间有效,还需要从节点到自身有效

例如,由于某些端口转发正在进行,mongo1可以通过mongo2:27018成功地与mongo2通信,mongo3可以通过mongo2:27018成功地与mongo2通信,但mongo2无法通过mongo2:27018与自身通信(因为它实际上正在监听27017)。它对其他盒子起作用的原因是它们是mongo1,mongo3有一个mongo2的别名,即port forwarding 27018到27017


因此,基本上,除非每个节点都可以从配置中的主机名ping自己和其他节点,否则它将无法工作

您确定已正确配置mongod,对吗?我是说replSet/keyFile(可选)/auth?