Ich versuche, eine Verbindung zu Remote-Mongodb-Servern mit Port-Forwarding. In mgo.DialInfo gibt der Dial-Server eine Verbindung (vom Typ *net.Conn
) an den zwischengeschalteten Host zurück, und Addrs
wäre eine Zeichenfolge von entfernten mongodb-Server-Adressen (eine Reihe von Seed-Servern). Meine Frage ist, wenn ich die Remote-IP-Adressen dieser Server gebe, funktioniert das Programm gut und ich kann eine Verbindung zu den Remote-Mongodb-Servern herstellen, aber da sich die IP-Adressen ändern können, möchte ich die Domain-Namen der Server angeben mongodbserver1 und mongodbserver2 und wenn ich das gebe, hängt das Programm. Soweit ich verstanden habe, versucht das Programm, die Domänennamen auf meinem lokalen Rechner aufzulösen, die nicht funktionieren und sie müssen auf dem zwischengeschalteten Host aufgelöst werden. Ich möchte wissen, wie ich das machen kann.Wie Domänennamen von Remote-Servern aufgelöst werden, während ssh Port-Forwarding
In Bezug auf die Code funktioniert die folgende, fein
dialinfo := mgo.DialInfo{
Addrs: {"1.2.3.45","1.2.3.56"}
Database: Mongo1,
Username: User,
Password: Pwd,
Timeout: 60 * time.Second,
DialServer: func(addr *mgo.ServerAddr) (net.Conn, error) {
conn, err := connectToCluster("172.12.13.145")
if err != nil {
fmt.Println("couldn't connect to the cluster, trying again..")
return nil, err
}
remote, err := conn.Dial("tcp", addr.String())
if err != nil {
fmt.Println("couldn't connect to the mongodb server:", addr.String())
}
return remote, err
},
}
session, err = mgo.DialWithInfo(dialinfo)
aber die unter nicht
dialinfo := mgo.DialInfo{
Addrs: {"mongodbserver1","mongodbserver2"}
Database: Mongo1,
Username: User,
Password: Pwd,
Timeout: 60 * time.Second,
DialServer: func(addr *mgo.ServerAddr) (net.Conn, error) {
conn, err := connectToCluster("172.12.13.145")
if err != nil {
fmt.Println("couldn't connect to the cluster, trying again..")
return nil, err
}
remote, err := conn.Dial("tcp", addr.String())
if err != nil {
fmt.Println("couldn't connect to the mongodb server:", addr.String())
}
return remote, err
},
}
session, err = mgo.DialWithInfo(dialinfo)
Ich möchte, dass die Änderungen innerhalb des Codes vorgenommen werden, anstatt die Datei/etc/hosts zu ändern, damit derjenige, der diesen Code ausführt, keine Änderungen an irgendeiner Datei manuell vornehmen muss. – user1851006
Ich verstehe nicht, was Sie wollen. Sie möchten einen Domain-Namen verwenden, möchten aber die IP-Adresse fest codieren? Es fühlt sich an, als würden Sie nach widersprüchlichen Dingen fragen. – Flimzy
Nein. Das ist nicht was ich will. Was ich meinte, ist, dass, wenn ich diesen Code (mit Domain-Namen und nicht IP-Adresse) auf jedem Computer ausführen, sollte dieser Computer den Domain-Namen automatisch auflösen und es sollte keine manuelle Konfiguration benötigt werden. – user1851006