Maison >développement back-end >Golang >Comment résoudre les erreurs « Aucun serveur accessible » lors de la connexion aux ensembles de réplicas MongoDB Atlas avec la bibliothèque mgo de Go ?

Comment résoudre les erreurs « Aucun serveur accessible » lors de la connexion aux ensembles de réplicas MongoDB Atlas avec la bibliothèque mgo de Go ?

DDD
DDDoriginal
2024-11-28 19:38:15326parcourir

How to Resolve

Serveur persistant non accessible à répliquer dans MongoDB Atlas avec Go mgo

Lors de la connexion à un jeu de répliques MongoDB Atlas à l'aide de la bibliothèque Golang mgo , une erreur « serveur non accessible » peut parfois survenir. Ce problème peut être résolu en exploitant une fonction DialServer personnalisée dans la structure mgo DialInfo.

L'extrait de code suivant montre comment établir une connexion réussie à un jeu de réplicas à l'aide de configurations TLS personnalisées :

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)

Dans ce code :

  • tlsConfig est initialisé avec tout TLS nécessaire configuration.
  • dialInfo est configuré avec les adresses des membres du jeu de réplicas, le nom de la base de données, le nom d'utilisateur et le mot de passe.
  • DialServer est personnalisé pour établir une connexion protégée par TLS à chaque serveur.
  • Enfin, mgo.DialWithInfo établit une connexion avec le jeu de répliques à l'aide du cadran fourni informations.

Alternativement, la méthode mgo.ParseURL() peut être utilisée pour analyser la chaîne URI MongoDB Atlas. Cependant, SSL n'est actuellement pas pris en charge par cette méthode. Une solution de contournement consiste à supprimer la ligne ssl=true de la chaîne URI avant l'analyse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn