亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Golang和Robo3T連接到MongoDB ReplicaSet時出現問題

使用Golang和Robo3T連接到MongoDB ReplicaSet時出現問題

Go
慕妹3146593 2022-08-15 16:29:57
我正在努力連接到我的MongoDB副本集,但似乎沒有任何工作。我部署了具有 3 個節點的副本集,每個節點位于單獨的 AWS 可用區上,但位于同一區域。以下是我用于連接到副本集的代碼。    mongoURL := "mongodb://myuser:password@<publicIP>:27017,<publicIP>:27017,<publicIP>:27017/?replicaSet=replica01&authSource=admin"    clientOptions := options.Client().ApplyURI(mongoURL)    clientOptions = clientOptions.SetMaxPoolSize(100) //100 is default driver setting    log.Println("Connection String: " + clientOptions.GetURI())    client, err := mongo.Connect(ctx, clientOptions)我還創建了DNS映射并使用它,但這也不起作用。以下是連接網址mongodb://adminuser:[email protected]:27017,rs2.domain.com:27017,rs3.domain.com:27017/?replicaSet=replica01&authSource=admin機器人3T當我嘗試使用公共IP將副本集與Robo3T連接時,我收到以下錯誤無法連接到副本集“IP-RS”[公共 IP:27017]。集合的主數據庫無法訪問。原因:集合的任何成員都不可訪問。原因:連接失敗當我使用子域名連接到副本集時,我收到以下錯誤無法連接到副本集“SRV 副本”[rs1.domain.com:27017]。集合的主數據庫無法訪問。原因: 無法初始化 MongoWorker。原因:連接失敗
查看完整描述

1 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

這是解決方案。


問題是主機名。我在配置副本集時使用了主機名。


這是我的配置


$ config = {

  _id : "mongo-cluster",

   members : [

       {_id : 0, host : "mongo-1:27017"},

       {_id : 1, host : "mongo-2:27017"},

       {_id : 2, host : "mongo-3:27017"},

   ]

}


$ rs.initiate(config)

溶液

我用private-ip更改了。

請注意,由于我的 3 個副本節點位于同一 AWS 區域但位于不同的可用區中,因此我使用私有 IP 在節點之間建立連接。hostname


$ config = {

  _id : "replica01",

   members : [

       {_id : 0, host : "private-ip:27017"},

       {_id : 1, host : "private-ip:27017"},

       {_id : 2, host : "private-ip:27017"},

   ]

}


rs0:PRIMARY> rs.reconfig(config)

所有 3 個節點上的 MongoDB conf 設置


File: /etc/mongod.conf


    net:

      port: 27017

      bindIp: 127.0.0.1, 172.16.1.x (private-ip)


    security:

      keyFile: /opt/mongo/mongo-keyfile


    replication:

      replSetName: replica01

所有 3 個節點上的主機


File: /etc/hosts


    172.16.1.x    mongo-1

    172.16.1.x    mongo-2

    172.16.1.x    mongo-3

每臺計算機的名稱應與 /etc/hosts 文件中定義的名稱匹配


$ sudo nano /etc/hostname 

mongo-1 

復制副本狀態


> rs.status()


{

    "set" : "replica01",

    "date" : ISODate("2021-03-13T12:42:45.971Z"),

    "myState" : 2,

    "term" : NumberLong(8),

    "syncSourceHost" : "172.16.1.x:27017",

    "syncSourceId" : 2,

    "heartbeatIntervalMillis" : NumberLong(2000),

    "majorityVoteCount" : 2,

    "writeMajorityCount" : 2,

    "votingMembersCount" : 3,

    "writableVotingMembersCount" : 3,

    "optimes" : {

        "lastCommittedOpTime" : {

            "ts" : Timestamp(1615639361, 1),

            "t" : NumberLong(8)

        },

        "lastCommittedWallTime" : ISODate("2021-03-13T12:42:41.356Z"),

        "readConcernMajorityOpTime" : {

            "ts" : Timestamp(1615639361, 1),

            "t" : NumberLong(8)

        },

        "readConcernMajorityWallTime" : ISODate("2021-03-13T12:42:41.356Z"),

        "appliedOpTime" : {

            "ts" : Timestamp(1615639361, 1),

            "t" : NumberLong(8)

        },

        "durableOpTime" : {

            "ts" : Timestamp(1615639361, 1),

            "t" : NumberLong(8)

        },

        "lastAppliedWallTime" : ISODate("2021-03-13T12:42:41.356Z"),

        "lastDurableWallTime" : ISODate("2021-03-13T12:42:41.356Z")

    },

    "lastStableRecoveryTimestamp" : Timestamp(1615639331, 1),

    "members" : [

        {

            "_id" : 1,

            "name" : "172.16.1.x:27017",

            "health" : 1,

            "state" : 2,

            "stateStr" : "SECONDARY",

            "uptime" : 159132,

            "optime" : {

                "ts" : Timestamp(1615639361, 1),

                "t" : NumberLong(8)

            },

            "optimeDate" : ISODate("2021-03-13T12:42:41Z"),

            "syncSourceHost" : "172.16.1.x:27017",

            "syncSourceId" : 2,

            "infoMessage" : "",

            "configVersion" : 2,

            "configTerm" : 8,

            "self" : true,

            "lastHeartbeatMessage" : ""

        },

        {

            "_id" : 2,

            "name" : "172.16.1.x:27017",

            "health" : 1,

            "state" : 1,

            "stateStr" : "PRIMARY",

            "uptime" : 62213,

            "optime" : {

                "ts" : Timestamp(1615639361, 1),

                "t" : NumberLong(8)

            },

            "optimeDurable" : {

                "ts" : Timestamp(1615639361, 1),

                "t" : NumberLong(8)

            },

            "optimeDate" : ISODate("2021-03-13T12:42:41Z"),

            "optimeDurableDate" : ISODate("2021-03-13T12:42:41Z"),

            "lastHeartbeat" : ISODate("2021-03-13T12:42:45.616Z"),

            "lastHeartbeatRecv" : ISODate("2021-03-13T12:42:44.778Z"),

            "pingMs" : NumberLong(1),

            "lastHeartbeatMessage" : "",

            "syncSourceHost" : "",

            "syncSourceId" : -1,

            "infoMessage" : "",

            "electionTime" : Timestamp(1615477956, 1),

            "electionDate" : ISODate("2021-03-11T15:52:36Z"),

            "configVersion" : 2,

            "configTerm" : 8

        },

        {

            "_id" : 3,

            "name" : "172.16.1.x:27017",

            "health" : 1,

            "state" : 2,

            "stateStr" : "SECONDARY",

            "uptime" : 62213,

            "optime" : {

                "ts" : Timestamp(1615639361, 1),

                "t" : NumberLong(8)

            },

            "optimeDurable" : {

                "ts" : Timestamp(1615639361, 1),

                "t" : NumberLong(8)

            },

            "optimeDate" : ISODate("2021-03-13T12:42:41Z"),

            "optimeDurableDate" : ISODate("2021-03-13T12:42:41Z"),

            "lastHeartbeat" : ISODate("2021-03-13T12:42:45.095Z"),

            "lastHeartbeatRecv" : ISODate("2021-03-13T12:42:45.321Z"),

            "pingMs" : NumberLong(0),

            "lastHeartbeatMessage" : "",

            "syncSourceHost" : "172.16.1.x:27017",

            "syncSourceId" : 2,

            "infoMessage" : "",

            "configVersion" : 2,

            "configTerm" : 8

        }

    ],

    "ok" : 1,

    "$clusterTime" : {

        "clusterTime" : Timestamp(1615639361, 1),

        "signature" : {

            "hash" : BinData(0,"2ujactkx3HytFTyWhh+JkzyQy+8="),

            "keyId" : NumberLong("6936222258616598531")

        }

    },

    "operationTime" : Timestamp(1615639361, 1)

}


轉到連接字符串


mongoURL := "mongodb://username:pass@$172.16.1.x:27017,172.16.1.x:27017,172.16.1.x:27017/mydb?replicaSet=replica01&authSource=admin"



查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號