0
我想通過端口轉發連接到遠程MongoDB服務器。在mgo.DialInfo中,撥號服務器將返回一個連接(類型爲*net.Conn
)到中間主機,Addrs
將是一串遠程MongoDB服務器的地址(一組種子服務器)。我的問題是,如果我給這些服務器的遠程IP地址,程序工作正常,我能夠連接到遠程MongoDB服務器,但因爲IP地址可以改變我想給服務器的域名,說mongodbserver1和mongodbserver2當我給出這個,程序掛起。據我瞭解,該程序正試圖解決我的本地計算機上的域名不起作用,他們需要在中介主機上解決。我想知道我該怎麼做。如何解析遠程服務器的域名,同時ssh端口轉發
在代碼方面,下面的工作正常,
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)
但一個低於不起作用
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)
我想要在代碼中進行更改,而不是更改/ etc/hosts文件,以便運行此代碼的任何人不必手動更改任何文件。 – user1851006
我不明白你想要什麼。你想使用域名,但你也想硬編碼的IP地址?感覺就像你在問矛盾的事情。 – Flimzy
不,這不是我想要的。我的意思是,如果我在任何機器上運行此代碼(使用域名而非IP地址),該機器應該自動解析域名,並且不應該有任何需要的手動配置。 – user1851006