真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springcloudconsul如何使用ip注冊(cè)服務(wù)

這篇文章主要為大家展示了“spring cloud consul如何使用ip注冊(cè)服務(wù)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“spring cloud consul如何使用ip注冊(cè)服務(wù)”這篇文章吧。

十余年的大同網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整大同建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“大同網(wǎng)站設(shè)計(jì)”,“大同網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

我測(cè)試spring cliud使用consul作為注冊(cè)中心的時(shí)候,發(fā)現(xiàn)服務(wù)注冊(cè)的時(shí)候,注冊(cè)的都是hostname,比如:

注冊(cè)了一個(gè)commonservice,在consul中是這樣的:

{
  "ID":"commonservice123",
  "address":"testcommonserver"
  ........
}

這肯定是不對(duì)的。

加入我有一個(gè)服務(wù)payservice需要調(diào)用commonservice,payservice從consul中獲取的commonservice的地址是testcommonserver,而payservice所在的服務(wù)器地址是121.57.68.98上,這臺(tái)服務(wù)器無(wú)法解析hostname是testcommonserver的服務(wù)器的ip地址,無(wú)法調(diào)用commonservie,這時(shí)候就會(huì)報(bào)下面這個(gè)錯(cuò)誤:

unKnownHostException
.......

為了解決這個(gè)問(wèn)題,我需要在注冊(cè)服務(wù)的時(shí)候,讓服務(wù)以ip的方式注冊(cè),我的測(cè)試環(huán)境是:

  • spring cloud Finch2ey.SR2

  • consul v1.4.3

修改bootstrap.yml配置文件:

spring:
 cloud:
  consul:
   host: xxx.xxx.xxx.xxxx
   port: 8500
   discovery:
    prefer-ip-address: true //這個(gè)必須配
    tags: version=1.0
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}
    healthCheckInterval: 15s
    health-check-url: http://${spring.cloud.client.ip-address}:${server.port}/actuator/health

${spring.cloud.client.ip-address}這個(gè)屬性是spring cloud內(nèi)置,用來(lái)獲取ip,不同的spring cloud版本可能稍有不同,如果想要確定自己的版本是什么樣的,可以查看這個(gè)文件:

HostInfoEnvironmentPostProcessor

  @Override
  public void postProcessEnvironment(ConfigurableEnvironment environment,
      SpringApplication application) {
    InetUtils.HostInfo hostInfo = getFirstNonLoopbackHostInfo(environment);
    LinkedHashMap map = new LinkedHashMap<>();
    map.put("spring.cloud.client.hostname", hostInfo.getHostname());
    map.put("spring.cloud.client.ip-address", hostInfo.getIpAddress());
    MapPropertySource propertySource = new MapPropertySource(
        "springCloudClientHostInfo", map);
    environment.getPropertySources().addLast(propertySource);
  }

這時(shí)候再啟動(dòng)項(xiàng)目測(cè)試,發(fā)現(xiàn)注冊(cè)地址變了:

{
  "ID":"commonservice123",
  "address":"10.52.xx.xx"
  ........
}

注冊(cè)的address變成了服務(wù)的內(nèi)網(wǎng)地址,如果其它服務(wù)和commonservice在同一個(gè)網(wǎng)絡(luò)中,可以通過(guò)內(nèi)網(wǎng)訪問(wèn),這樣也是可以的,但是如果內(nèi)網(wǎng)不能訪問(wèn),其它服務(wù)仍然不能訪問(wèn),這時(shí)候就需要注冊(cè)服務(wù)的時(shí)候以公網(wǎng)的ip注冊(cè)才行。
修改bootstrap.yml配置文件:

spring:
 cloud:
  consul:
   host: xxx.xxx.xxx.xxx
   port: 8500
   config:
    data-key: data
    format: yaml
   discovery:
    prefer-ip-address: true //這個(gè)必須配
    tags: version=1.0
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}
    healthCheckInterval: 15s
    health-check-url: http://${spring.cloud.client.ip-address}:${server.port}/actuator/health
  inetutils:
   preferred-networks:
    - 公網(wǎng)ip1
    - 公網(wǎng)ip2

可以看到增加一個(gè)inetutils配置,這個(gè)配置是spring cloud的網(wǎng)絡(luò)工具類(lèi),這個(gè)配置的含義是如果獲取ip時(shí)獲取到多個(gè)ip(內(nèi)網(wǎng)、外網(wǎng)),就優(yōu)先選擇我配置的ip中存在的ip,這樣再測(cè)試就會(huì)發(fā)現(xiàn),注冊(cè)service的時(shí)候就變成了公網(wǎng)ip。

以上是“spring cloud consul如何使用ip注冊(cè)服務(wù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱(chēng)欄目:springcloudconsul如何使用ip注冊(cè)服務(wù)
網(wǎng)站URL:http://weahome.cn/article/poehso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部