首頁 > 後端開發 > Golang > 如何解決使用 Go 的 mgo 庫連接 MongoDB Atlas 副本集時出現「No Reachable Server」錯誤?

如何解決使用 Go 的 mgo 庫連接 MongoDB Atlas 副本集時出現「No Reachable Server」錯誤?

DDD
發布: 2024-11-28 19:38:15
原創
333 人瀏覽過

How to Resolve

使用Go mgo 持續無法存取MongoDB Atlas 中的副本集

使用Golang mgo 庫連接到MongoDB Atlas 副本集時,有時會副本集時,有時會出現“無法存取伺服器”錯誤。這個問題可以透過利用 mgo DialInfo 結構中的自訂 DialServer 函數來解決。

以下程式碼片段示範如何使用自訂TLS 設定成功建立與副本集的連線:

import (
    "gopkg.in/mgo.v2"
    "crypto/tls"
    "net"
)

tlsConfig := &tls.Config{}

dialInfo := &mgo.DialInfo{
    Addrs: []string{"prefix1.mongodb.net:27017", "prefix2.mongodb.net:27017", "prefix3.mongodb.net:27017"},
    Database: "authDatabaseName",
    Username: "user",
    Password: "pass",
}
dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
    conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
    return conn, err
}

session, err := mgo.DialWithInfo(dialInfo)
登入後複製

在此程式碼中:

  • tlsConfig 使用任何必要的TLS 進行初始化配置。
  • dialInfo 配置了副本集成員位址、資料庫名稱、使用者名稱和密碼。
  • DialServer 被自訂以設定到每個伺服器的 TLS 保護連線。
  • 最後,mgo.DialWithInfo 使用提供的 dial 建立與副本集的連接資訊。

或者,mgo.ParseURL() 方法可用來解析 MongoDB Atlas URI 字串。但是,此方法目前不支援 SSL。解決方法是在解析之前從 URI 字串中刪除 ssl=true 行。

以上是如何解決使用 Go 的 mgo 庫連接 MongoDB Atlas 副本集時出現「No Reachable Server」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板