>백엔드 개발 >Golang >Go\의 mgo 라이브러리를 사용하여 MongoDB Atlas 복제본 세트에 연결할 때 \'접근 가능한 서버 없음\' 오류를 해결하는 방법은 무엇입니까?

Go\의 mgo 라이브러리를 사용하여 MongoDB Atlas 복제본 세트에 연결할 때 \'접근 가능한 서버 없음\' 오류를 해결하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-28 19:38:15264검색

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는 제공된 다이얼을 사용하여 복제 세트에 대한 연결을 설정합니다.

또는 mgo.ParseURL() 메서드를 사용하여 MongoDB Atlas URI 문자열을 구문 분석할 수 있습니다. 그러나 현재 이 방법에서는 SSL이 지원되지 않습니다. 해결 방법은 구문 분석하기 전에 URI 문자열에서 ssl=true 줄을 제거하는 것입니다.

위 내용은 Go\의 mgo 라이브러리를 사용하여 MongoDB Atlas 복제본 세트에 연결할 때 \'접근 가능한 서버 없음\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.