遠端呼叫-rmi遠端連線被拒絕
阿新 • • 發佈:2019-02-11
【問題背景】
本專案的匯入匯出功能是非同步實現的,即:
第一步:前臺頁面先點選“匯入”、“匯出”按鈕,後臺給任務表Task插入一條佇列任務;
第二步:Linux主機上的定時程式掃描Task表,然後遠端呼叫Windows主機上部署的“匯入匯出應用”(ps:中間還有好幾個應用之間的呼叫,此處省略)
第三步:前臺頁面“下載報告”中檢視任務執行情況,並提供“下載”按鈕去下載匯出的excel檔案。
【問題描述】
匯出功能在最終上線的時候,發現任務不執行(ps:開發環境、測試環境、準生產環境都驗證沒有問題)。
【報錯資訊】
連線被拒絕 Connection refused [IP地址2]
【問題分析】
第一步:找到哪個節點除了問題?(ps:由於是非同步,且整個架構涉及好幾個節點,不清楚是哪個節點除了問題,只能一步一步跟蹤)。
通過跟蹤日誌,發現Linux上的定時程式沒有呼叫到Windows主機上(ps:window主機上的應用日誌沒有變化)
第二步:檢視定時程式的日誌,發現連線被拒絕,但是列印的“IP地址2”不是系統中配置的目標地址。
檢查配置檔案,發現地址沒有配錯,確實是“IP地址1”,但是rmi一呼叫打印出的出錯日誌中顯示的總是“IP地址2”
分別使用ping命令和telnet命令檢查網路是否聯通,發現“IP地址1”是通的,“IP地址2”是不通的。
下一個問題:為什麼會IP地址會發生變化呢?
第三步:懷疑是網路問題,檢查Window主機的IP地址情況,使用ipconfig命令發現了三個IP地址。
繼續檢視網路連線,發現有三個網絡卡(ps:windows主機是安裝在虛擬機器上的,這三個網絡卡也都是虛擬網絡卡),其中一個是我們配置的地址“IP地址1”,
也有一個是報錯資訊裡面的IP地址“IP地址2”,“IP地址1”和“IP地址2”是同一臺主機上的多個虛擬網絡卡。
下一個問題:怎麼只讓客戶端rmi程式連線“IP地址1”呢?
【解決方案】
禁用多餘的虛擬網絡卡,只留下目標地址“IP地址1”,然後重啟Windows主機(PS:重啟才會生效,切記),再次呼叫,問題解決。
本專案的匯入匯出功能是非同步實現的,即:
第一步:前臺頁面先點選“匯入”、“匯出”按鈕,後臺給任務表Task插入一條佇列任務;
第二步:Linux主機上的定時程式掃描Task表,然後遠端呼叫Windows主機上部署的“匯入匯出應用”(ps:中間還有好幾個應用之間的呼叫,此處省略)
第三步:前臺頁面“下載報告”中檢視任務執行情況,並提供“下載”按鈕去下載匯出的excel檔案。
【問題描述】
匯出功能在最終上線的時候,發現任務不執行(ps:開發環境、測試環境、準生產環境都驗證沒有問題)。
【報錯資訊】
連線被拒絕 Connection refused [IP地址2]
【問題分析】
第一步:找到哪個節點除了問題?(ps:由於是非同步,且整個架構涉及好幾個節點,不清楚是哪個節點除了問題,只能一步一步跟蹤)。
通過跟蹤日誌,發現Linux上的定時程式沒有呼叫到Windows主機上(ps:window主機上的應用日誌沒有變化)
第二步:檢視定時程式的日誌,發現連線被拒絕,但是列印的“IP地址2”不是系統中配置的目標地址。
檢查配置檔案,發現地址沒有配錯,確實是“IP地址1”,但是rmi一呼叫打印出的出錯日誌中顯示的總是“IP地址2”
分別使用ping命令和telnet命令檢查網路是否聯通,發現“IP地址1”是通的,“IP地址2”是不通的。
下一個問題:為什麼會IP地址會發生變化呢?
第三步:懷疑是網路問題,檢查Window主機的IP地址情況,使用ipconfig命令發現了三個IP地址。
繼續檢視網路連線,發現有三個網絡卡(ps:windows主機是安裝在虛擬機器上的,這三個網絡卡也都是虛擬網絡卡),其中一個是我們配置的地址“IP地址1”,
也有一個是報錯資訊裡面的IP地址“IP地址2”,“IP地址1”和“IP地址2”是同一臺主機上的多個虛擬網絡卡。
下一個問題:怎麼只讓客戶端rmi程式連線“IP地址1”呢?
【解決方案】
禁用多餘的虛擬網絡卡,只留下目標地址“IP地址1”,然後重啟Windows主機(PS:重啟才會生效,切記),再次呼叫,問題解決。