资讯专栏INFORMATION COLUMN

解决SpringBoot在Docker运行注册IP不正确的问题

defcon / 1489人阅读

摘要:在开发中经常会碰到应用在启动成功以后,发现注册到注册中心的不是自己想要的。配置忽略网络接口使用中运行服务时,服务注册的时候,可以忽略掉一些指定名称的网络接口,想要忽略的网络接口的名称可以使用正则表达式来配置。


在开发中经常会碰到SpringBoot应用在启动成功以后,发现注册到注册中心的IP不是自己想要的。实际开发联调的时候也经常碰到自己本地启动应用怎么获取到一个怪怪的IP,通过别的机器无法连接到这个IP。发现有虚拟机的时候,就把虚拟机网卡停掉,然后才能获取本地局域网IP。当然也可以每个服务都指定IP的方式来解决这个问题,只有几个实例还可以,但是有几十或者上百个实例如何解决呢?

出现这种问题的原因是当前机器有多个网卡(如有虚拟网卡)造成的,SpringBoot在获取IP的时候无法获取到正确的IP,在实际生产环境中服务器本身也有多块网卡,SpringBoot启动时只能选择一个IP,能否通过简单的配置就能解决这个问题呢?答案是,可以的,SpringBoot本身自带这种功能。

SpringBoot提供了三种配置方式,可以多带带使用,也可以混合使用。

配置忽略网络接口

使用Docker中运行SpringBoot服务时,服务注册的时候,可以忽略掉一些指定名称的网络接口,想要忽略的网络接口的名称可以使用正则表达式来配置。下面的配置就是忽略名称为docker0网络接口和所有名称以veth开头的网络接口:

application.yml.

spring:
  cloud:
    inetutils:
      ignoredInterfaces:
        - docker0
        - veth.*
配置使用指定网络接口

相反,也可以使用正则表达式配置只使用指定的网络接口地址,下面配置的例子就只使用192.168开头和10.0开头的ip地址,其他的地址都不会使用。

bootstrap.yml.

spring:
  cloud:
    inetutils:
      preferredNetworks:
        - 192.168
        - 10.0
配置使用site-local地址

如果SpringBoot服务只是在局域网内使用,不会被外部调用的话,就可以使用site-local方式配置,配置方式如下:

.application.yml

spring:
  cloud:
    inetutils:
      useOnlySiteLocalInterfaces: true

你在实际使用过程中是否也碰到了这种问题呢?帮你解决问题了吗?有问题可以加我的微信(zhuzhsh)或者关注我的公众号(xtech100)持续关注哟!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27570.html

相关文章

  • 一个网站微服务架构实战(2)k8s迁移

    摘要:前言我们一起回顾上一篇文章平台的微服务架构和,一共通过构建了三个镜像数据库,部署前端页面的,和接口。最近阿里云产品春节大促销,我一时没忍住又买了一台服务器,打完折扣还是很贵。是一个非常稳定的,可移植的网络文件系统。 前言 我们一起回顾上一篇文章《Bees平台的微服务架构(1)docker和docker-compose》,一共通过Dockerfile构建了三个docker镜像:mysql...

    Forelax 评论0 收藏0
  • 技术干货 | 初次微服务体验:从Docker容器农场说起

    摘要:或许你的第一次微服务体验,就从本文开始在本文中,和等纷纷亮相,并配有详细的代码说明。该角色与本地网络及的配置设置相关。由于会在虚拟机初始化过程中自动执行配置任务,因此惟一的解决办法就是将相关内容提取至单独的剧本当中 这是一篇温和有趣的技术文章,如果你初识Docker,对微服务充满兴趣,不妨一读。或许你的第一次微服务体验,就从本文开始…… 在本文中,Mesos、Zookeeper、Ma...

    魏宪会 评论0 收藏0
  • 一个网站微服务架构实战(1)dockerdocker-compose

    摘要:文件服务器项目为文章共享社区,少不了的就是一个存储文章的文件服务器,包括存储一些图片之类的静态资源。例如数据库的数据文件的配置文件和文件服务器目录。 前言 这是一次完整的项目实践,Angular页面+Springboot接口+MySQL都通过Dockerfile打包成docker镜像,通过docker-compose做统一编排。目的是实现整个项目产品的轻量级和灵活性,在将各个模块的镜像...

    CODING 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<