【问题标题】:Error: error doing query: failed: network error while attempting to run command 'find' on host 'mongo.acme.com:27017'错误:执行查询时出错:失败:尝试在主机“mongo.acme.com:27017”上运行命令“find”时出现网络错误
【发布时间】:2020-09-29 21:31:48
【问题描述】:

我在 kubernetes 上使用 bitnami helm chart 设置了一个 mongodb 集群。 https://github.com/bitnami/charts/tree/master/bitnami/mongodb。你可以在这里看到我编辑的生产 yaml 文件https://pastebin.com/41rc3JC1

我已经运行了 2-3 周了。我注意到当我使用 cli 进行查询时,偶尔会收到以下错误:

rs0:PRIMARY> db.streamers.find().pretty() 

错误:执行查询时出错: 失败:尝试在主机上运行命令“find”时出现网络错误 'mongo.acme.com:27017'

我使用以下 url mongo mongodb://<redacted_username>:<redacted_password>@mongo.acme.com:27017 连接到 mongo

rs.status
{
    "set" : "rs0",
    "date" : ISODate("2020-09-16T11:09:40.136Z"),
    "myState" : 1,
    "term" : NumberLong(3),
    "syncingTo" : "",
    "syncSourceHost" : "",
    "syncSourceId" : -1,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "majorityVoteCount" : 2,
    "writeMajorityCount" : 1,
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1600254574, 1),
            "t" : NumberLong(3)
        },
        "lastCommittedWallTime" : ISODate("2020-09-16T11:09:34.606Z"),
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1600254574, 1),
            "t" : NumberLong(3)
        },
        "readConcernMajorityWallTime" : ISODate("2020-09-16T11:09:34.606Z"),
        "appliedOpTime" : {
            "ts" : Timestamp(1600254574, 1),
            "t" : NumberLong(3)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1600254574, 1),
            "t" : NumberLong(3)
        },
        "lastAppliedWallTime" : ISODate("2020-09-16T11:09:34.606Z"),
        "lastDurableWallTime" : ISODate("2020-09-16T11:09:34.606Z")
    },
    "lastStableRecoveryTimestamp" : Timestamp(1600254574, 1),
    "lastStableCheckpointTimestamp" : Timestamp(1600254574, 1),
    "electionCandidateMetrics" : {
        "lastElectionReason" : "electionTimeout",
        "lastElectionDate" : ISODate("2020-09-16T10:27:44.421Z"),
        "electionTerm" : NumberLong(3),
        "lastCommittedOpTimeAtElection" : {
            "ts" : Timestamp(1600241404, 1),
            "t" : NumberLong(2)
        },
        "lastSeenOpTimeAtElection" : {
            "ts" : Timestamp(1600241404, 1),
            "t" : NumberLong(2)
        },
        "numVotesNeeded" : 2,
        "priorityAtElection" : 5,
        "electionTimeoutMillis" : NumberLong(10000),
        "numCatchUpOps" : NumberLong(0),
        "newTermStartDate" : ISODate("2020-09-16T10:27:44.439Z"),
        "wMajorityWriteAvailabilityDate" : ISODate("2020-09-16T10:27:44.502Z")
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "a211af6c97d4847519c8a859471a1846-<redacted>.us-east-2.elb.amazonaws.com:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 3975838,
            "optime" : {
                "ts" : Timestamp(1600254574, 1),
                "t" : NumberLong(3)
            },
            "optimeDate" : ISODate("2020-09-16T11:09:34Z"),
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "electionTime" : Timestamp(1600252064, 1),
            "electionDate" : ISODate("2020-09-16T10:27:44Z"),
            "configVersion" : 2,
            "self" : true,
            "lastHeartbeatMessage" : ""
        },
        {
            "_id" : 1,
            "name" : "mongo-prod-mongodb-arbiter-0.mongo-prod-mongodb-arbiter-headless.mongodb.svc.cluster.local:27017",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 2507,
            "lastHeartbeat" : ISODate("2020-09-16T11:09:39.159Z"),
            "lastHeartbeatRecv" : ISODate("2020-09-16T11:09:38.700Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "configVersion" : 2
        }
    ],
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1600254574, 1),
        "signature" : {
            "hash" : BinData(0,"7pmSYWIweERYYg/QjqIIjQrQmo4="),
            "keyId" : NumberLong("6855964983600087044")
        }
    },
    "operationTime" : Timestamp(1600254574, 1)
}

正如您从 yaml 中看到的,这个 mongodb 集群通过在 aws 上创建的负载均衡器暴露在外部。然后我设置了一个 cname,它将 mongo.acme.com 指向负载均衡器的 url。

为什么我会偶尔遇到这些网络错误?这是我应该关心的事情吗?你能看到我配置错误的东西吗?

如果您需要我提供更多信息,请询问。

【问题讨论】:

  • 你最近有没有引入任何变化?更新、配置更改等?正如您提到的occasional network errors,它们多久出现一次?
  • 最近没有变化
  • 这些错误多久发生一次?它是您的本地环境还是云?
  • @PjoterS cloud,我想我不能给你一个准确的答案。每当我连接到 mongo 并进行查询时,我都会注意到它。
  • 你试过不同的版本吗?在类似的情况下this 或this SO case 问题是版本不匹配。我也尝试重现此行为,但无法重现,类似于 Github 上的用户

标签: mongodb kubernetes kubernetes-helm bitnami


【解决方案1】:

将其发布为Community Wiki 以获得更好的可见性和possible root cause 未得到OP 的确认。

类似的错误:

failed: network error while attempting to run command 'XXX' on host 'mongo.acme.com:27017' 通常在mongo server 和mongo client shell 之间存在版本不匹配问题时发生。

在网上可以找到很多类似whatismyuri command或saslStart的例子。

第二个最常见的根本原因是尝试在没有SSL 的情况下连接到需要它的MongoDB server,如this troubleshoot guide 中所述。

由于此类问题的解决方案是为server 和mongo shell 提供相同的版本,并检查MongoDB 是否需要SSL connection。

但是,如果问题更复杂,则必须仔细检查日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2022-07-18
    • 2018-08-15
    相关资源
    最近更新 更多