我的項目中由于還沒有加入轉(zhuǎn)發(fā)服務(wù)器,因此暫時有3臺對外服務(wù)器,服務(wù)器與服務(wù)器之間暫時用內(nèi)網(wǎng)連接,今天將服務(wù)器放到雙網(wǎng)卡的服務(wù)器,發(fā)現(xiàn)竟然將服務(wù)器內(nèi)網(wǎng)地址告訴給客戶端來連接,很明顯這是錯的!
馬上著手解決這個問題:是否可以根據(jù)配置,對某幾條連接自動從gethostname中獲取到內(nèi)網(wǎng)或者外網(wǎng)地址?事實證明是錯誤的!這里有一個例子:
某公司的電話只能對內(nèi)打,對外打只能靠私人手機。如果 A正在用私人手機跟公司外的B打電話,此時,B想打C的手機,但是B不知道C的號碼。但同時,A只知道C的內(nèi)線號,但不知道其手機。這種情況下,B只有找公司的前臺D要到 C的手機號,因為A,C在進入公司時就已經(jīng)注冊過他們的手機號。這樣,B就成功的打通了C的手機號。
這是一種解決方法,也就是說,在現(xiàn)有的服務(wù)器管理的上層,再做一層平臺服務(wù)器,其他服務(wù)器到這臺服務(wù)器獲得自己在外網(wǎng)的地址,然后對需要進行外網(wǎng)聯(lián)系的服務(wù)器組和客戶端之間傳輸使用外網(wǎng)地址。
還有一種方法:
C首先將自己的手機號告訴A,之后B與A聯(lián)系后,得到C的手機號,而不是其內(nèi)網(wǎng)號,即可聯(lián)通
這種方法的原理就是:將要讓客戶端轉(zhuǎn)接的某臺服務(wù)器的地址的公網(wǎng)ip保存在配置文件里,在讀取后將這個地址告訴給列表服務(wù)器,這樣客戶端連過來就會獲得一個正確的外網(wǎng)地址