下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Spring Cloud Netflix Eureka多網(wǎng)卡環(huán)境下 Eureka 服務注冊 IP 選擇問題問題場景服務器上分別配置了 eth0, eth1 和 eth2 三塊網(wǎng)卡,只有 eth1 的地址可供其它機器訪問, eth0 和 eth2 的 IP 無效。在這 種情況下,服務注冊時 Eureka Client 會自動選擇 eth0 作為 服務 ip, 導致其它服務無法調(diào)用。問題原因 由于官方并沒有寫明 Eureka Client 探測本機 IP 的邏輯,所 以只能翻閱源代碼。 Eureka Client 的源碼在 eureka-client 模塊下, flix.appinfo 包下的 I
2、nstanceInfo 類封裝了 本機信息,其中就包括了 IP 地址。在 Spring Cloud 環(huán)境下, Eureka Client 并沒有自己實現(xiàn)探測本機 IP 的邏輯,而是交 給 Spring 的 InetUtils 工具類的 findFirstNonLoopbackAddress() 方法完成的: public InetAddress findFirstNonLoopbackAddress() InetAddress result = null;try / 記錄網(wǎng)卡最小索引int lowest = Integer.MAX_VALUE;/ 獲取所有網(wǎng)卡for (Enumeration
3、nics = NetworkInterface .getNetworkInterfaces();nics.hasMoreElements();) NetworkInterface ifc =nics.nextElement();if (ifc.isUp() log.trace(Testing interface: + ifc.getDisplayName();if (ifc.getIndex() lowest | result = null) lowest = ifc.getIndex(); / 記錄 索引else if (result != null) continue;/ formatte
4、r:offif(!ignoreInterface(ifc.getDisplayName() /是否是被忽略的網(wǎng)卡for (Enumeration addrs = ifc.getInetAddresses();addrs.hasMoreElements();) InetAddress address = addrs.nextElement();if (address instanceof Inet4Address& !address.isLoopbackAddress()& !ignoreAddress(address) log.trace(Found non-loopback interfac
5、e: + ifc.getDisplayName();result = address;/ formatter:on catch (IOException ex) log.error(Cannot get first non-loopbackaddress, ex);if (result != null) return result;try return InetAddress.getLocalHost(); / 如果以上邏輯都沒有找到合適的網(wǎng)卡,則使用 JDK 的InetAddress.getLocalhost()catch (UnknownHostException e) log.warn(
6、Unable to retrieve localhost);return null;123456789101112131415161718192021222324252 6272829303132333435363738394041424344454647484 950515253 通過源碼可以看出,該工具類會獲取所有網(wǎng)卡,依次進行遍 歷,取 ip 地址合理、 索引值最小且不在忽略列表的網(wǎng)卡的 ip 地址作為結果。如果仍然沒有找到合適的 IP, 那么就將InetAddress.getLocalHost() 做為最后的 fallback 方案。 解決方案忽略指定網(wǎng)卡 通過上面源碼分析可以得知,
7、spring cloud 肯定能配置一個 網(wǎng)卡忽略列表。通過查文檔資料得知確實存在該屬性: spring.cloud.inetutils.ignored-interfaces0=eth0 # 忽略 eth0, 支持正則表達式 1因此,第一種方案就是通過配置 perties 讓應 用忽略無效的網(wǎng)卡。配置 host當網(wǎng)查遍歷邏輯都沒有找到合適 ip 時會走 JDK 的 InetAddress.getLocalHost() 。該方法會返回當前主機的 hostname, 然后會根據(jù) hostname 解析出對應的 ip 。因此第 二種方案就是配置本機的 hostname 和 /etc/hosts 文件,直接 將本機的主機名映射到有效 IP 地址。手工指定I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)村土地置換與現(xiàn)代農(nóng)業(yè)發(fā)展合作合同
- 二零二五年度公寓租賃與綠化養(yǎng)護合同2篇
- 2025年度農(nóng)村土地承包經(jīng)營權轉(zhuǎn)讓合同3篇
- 2025年度物流企業(yè)人事員工勞動合同更新3篇
- 二零二五年度網(wǎng)絡安全公司股權合作合同3篇
- 二零二五年度智能門窗控制系統(tǒng)開發(fā)與應用合同3篇
- 二零二五年度養(yǎng)殖場土地流轉(zhuǎn)與租賃合同3篇
- 二零二五年度全新托管班節(jié)假日托管服務合同2篇
- 2025年度文化旅游融合發(fā)展項目合同管理細則3篇
- 2025年度年度新材料股份收購投資合同3篇
- 建立創(chuàng)新攻關“揭榜掛帥”機制行動方案
- 倉庫安全培訓考試題及答案
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
- (高清版)JTG 3370.1-2018 公路隧道設計規(guī)范 第一冊 土建工程
- 2024年中國雄安集團招聘筆試參考題庫含答案解析
- 軟件開發(fā)含演示評分細則100分
- 2013天津中考滿分作文
- 高等數(shù)學同濟大學第7版 課后習題答案解析完整版
- 單模光纜檢驗報告
- 公共政策分析簡答題
- Q∕SY 1829-2015 抽油機用橡膠盤根驗收規(guī)范
評論
0/150
提交評論