SpringCloud組件:Eureka服務注冊是采用主機名還是IP地址?


轉自:https://blog.csdn.net/weixin_42033269/article/details/82840950

我們一直在使用Eureka進行注冊服務,然而你有可能很少關心服務在注冊到Eureka Server時是采用的主機名的方式?還是IP地址的方式?

構建項目

我們把之前章節SpringCloud組件:將微服務提供者注冊到Eureka服務中心的源碼復制一份修改項目名稱為hengboy-spring-cloud-eureka-register-away,並簡單的對application.yml配置文件進行修改,如下所示:

# 服務名稱
spring:
  application:
    name: hengboy-spring-cloud-eureka-register-away

# 服務提供者端口號
server:
  port: 20001

# 配置Eureka Server 信息
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10000/eureka/
  # 自定義實例編號
  instance:
    instance-id: ${spring.application.name}:${server.port}:@project.version@
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在上面配置中,並沒有對注冊方式進行任何修改,如果現在啟動當然就是采用的默認方式進行注冊,接下來我們來看看默認的方式是采用的哪種?

查看默認方式

我們仍然使用SpringCloud組件:搭建Eureka服務注冊中心源碼作為服務注冊中心(Eureka Server)來完成本章的測試工作。

測試步驟:
  1. 啟動服務注冊中心
  2. 啟動本章項目
  3. 訪問http://localhost:10000打開服務注冊中心管理界面
  4. 點擊服務列表服務,查看地址欄地址

當我們點擊hengboy-spring-cloud-eureka-register-away:20001:v1.0服務名稱后會跳轉到服務的監控信息界面,不過我們並沒有添加監控相關的依賴或者配置,所以這里跳轉后是404訪問不到頁面,即使是這樣我們還是可以看到跳轉的網址是http://192.168.1.75:20001/actuator/info,這也證實了一點Eureka ClientEureka Server進行注冊的時候默認采用的是IP Address方式。

那么如果你想采用主機名的方式進行注冊服務,該怎么配置呢?請繼續閱讀。

配置使用主機名

我們如果采用主機名的方式進行注冊服務,只需要修改application.yml配置文件內的eureka.instance.hostname配置信息即可,如下所示:

# 配置Eureka Server 信息
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10000/eureka/
  # 自定義實例編號
  instance:
    instance-id: ${spring.application.name}:${server.port}:@project.version@
    # 配置使用主機名注冊服務
    hostname: node1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

node1是我本機配置的其中一個主機名

  • OS X/Linux系統下修改主機名

我是采用的MAC OS X系統作為運行環境,所以修改/etc/hosts文件對應的添加主機名IP地址的映射即可,如下所示:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
127.0.0.1       node1
127.0.0.1       node2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Windows系統下修改主機名

如果你是采用的Windows系統作為運行環境,你可以修改C:\Windows\System32\drivers\etc\hosts文件內容並添加映射關系。

修改完成主機名后,一定不要忘記是需要讓主機名生效的,修改完成后最有效的辦法是重啟你的計算機可以生效主機名

接下來我們需要按照下面的步驟進行測試主機名方式注冊是否已經生效?
  1. 重啟本章項目
  2. 刷新Eureka Server管理平台界面
  3. 點擊服務名稱查看跳轉地址

我們可以發現跳轉的路徑由原本默認的http://192.168.1.75:20001/actuator/info方式修改成了http://node1:20001/actuator/info,可以看到已經是使用了主機名的方式進行的注冊服務!!!

配置優先使用IP

如果你在部署的時候某種原因導致的無法使用主機名方式進行部署,當然你可以選擇不配置eureka.instance.hostname參數,如果你配置后仍然想使用IP Address方式進行服務注冊,這時我們可以通過eureka.instance.prefer-ip-address參數來進行設置,如果該參數設置為true,則優先使用IP Address進行服務注冊
配置如下所示:

# 配置Eureka Server 信息
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10000/eureka/
  # 自定義實例編號
  instance:
    instance-id: ${spring.application.name}:${server.port}:@project.version@
    # 配置使用主機名注冊服務
    hostname: node1
    # 優先使用IP地址方式進行注冊服務
    prefer-ip-address: true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
具體的測試過程與上述配置使用主機名一致,可以進行嘗試運行測試。

既然我們可以優先使用IP進行注冊服務,我們想根據指定的IP地址進行注冊該怎么配置呢?

配置使用指定IP

配置使用指定IP也比較簡單,我們可以進行設置eureka.instance.ip-address參數的值來進行修改注冊的IP 地址
我們基於上面步驟的配置文件進行修改內容如下所示:

# 配置Eureka Server 信息
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10000/eureka/
  # 自定義實例編號
  instance:
    instance-id: ${spring.application.name}:${server.port}:@project.version@
    # 配置使用主機名注冊服務
    hostname: node1
    # 優先使用IP地址方式進行注冊服務
    prefer-ip-address: true
    # 配置使用指定IP
    ip-address: 127.0.0.1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

配置文件修改完成后,進行如下步驟進行測試是否失效:

  1. 重啟本章項目
  2. 刷新Eureka Server管理平台界面
  3. 點擊服務名稱,查看跳轉地址信息

我們發現跳轉地址欄的地址已經使用了我們配置的ip-address參數,地址為:http://127.0.0.1:20001/actuator/info

注意:如果配置ip-address參數后並沒有開啟prefer-ip-address: true,那么仍然使用主機名或者默認的注冊方式。

總結

我們通過幾種不同的服務注冊方式來全面講解了Eureka Client在注冊到服務注冊中心時使用的主機信息,這幾種注冊方式也是存在一定的優先級順序的,這一知識點我們在下一章結合Eureka源碼進行分別全面剖析這幾種注冊方式以及優先級順序

源碼位置

本章源碼已經上傳到恆宇少年的碼雲,請結合源碼進行學習,感謝閱讀。

與恆宇少年面對面

如果你喜歡恆宇少年的相關文章,那么就去微信公眾號(恆宇少年)關注我吧!!!
當然你也可以去 SpringCloud碼雲源碼 項目底部掃描微信公眾號二維碼關注我,感謝閱讀!!!

學習目錄推薦

開源信息

這段時間一直在編寫開源的相關框架,致力於公司使用的框架升級以及開源計划,將公司使用到的工具以及插件進行升級重構並且開源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM