ホームページ >バックエンド開発 >Golang >Go の mgo ライブラリを使用して MongoDB Atlas レプリカ セットに接続するときに発生する「到達可能なサーバーがありません」エラーを解決する方法

Go の mgo ライブラリを使用して MongoDB Atlas レプリカ セットに接続するときに発生する「到達可能なサーバーがありません」エラーを解決する方法

DDD
DDDオリジナル
2024-11-28 19:38:15263ブラウズ

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 は、提供されたダイヤルを使用してレプリカ セットへの接続を確立します。 information.

または、mgo.ParseURL() メソッドを使用して MongoDB Atlas URI 文字列を解析することもできます。ただし、現在、この方法では SSL はサポートされていません。回避策は、解析する前に URI 文字列から ssl=true 行を削除することです。

以上がGo の mgo ライブラリを使用して MongoDB Atlas レプリカ セットに接続するときに発生する「到達可能なサーバーがありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。