Hobart-Ljw 2024-04-12 11:50 采纳率: 25%
浏览 4

docker swarm下部署的spring cloud,时不时就会取到ingress网络的ip


我的spring cloud项目和nacos分别部署到不同的docker容器下,然后通过docker swarm管理这两个docker容器。

两个docker容器都加入 base-network和nacos-server-net网络的

img

我发现spring cloud往nacos注册的时候, 有时候取到的是ingress网络的ip,然后openFeign就调用接口失败,因为ingress的ip是ping不通的。怎么做才能忽略不去取ingress网络的ip呢?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 11:50
    关注

    引自免费微信小程序:皆我百晓生

    为了确保Spring Cloud应用在Docker Swarm环境中正确地连接到Nacos服务,你需要调整应用内部的配置,使其优先使用base-networknacos-server-net网络中的IP地址,而不是自动获取的Ingress网关IP。这里是一个详细的步骤:

    1. 理解Docker Swarm的网络模式: Docker Swarm会为每个服务创建一个逻辑上的overlay网络,并将服务实例连接到这个网络上。同时,如果你定义了外部网络(如base-networknacos-server-net),服务也会连接到这些网络。

    2. 配置Spring Cloud应用: 在Spring Cloud应用中,OpenFeign客户端默认会使用LocalServerAddress来自动发现服务提供者的地址。这可能会导致它从Ingress网关获取IP地址。为了避免这种情况,你需要手动指定Nacos服务的地址。

    3. 修改application.yml 或 application.properties: 在Spring Cloud应用的配置文件中,添加以下配置,明确指定Nacos服务器的地址:

      # application.yml
      spring:
        cloud:
          discovery:
            client:
              service-url:
                defaultZone: http://nacos-service-name:nacos-port@nacos-server-ip:8848/
      

      或者

      # application.properties
      spring.cloud.discovery.client.serviceUrl.defaultZone=http://nacos-service-name:nacos-port@nacos-server-ip:8848/
      

      其中,

      • nacos-service-name 是你在Swarm中给Nacos服务起的名字。
      • nacos-port 是Nacos服务暴露的端口。
      • nacos-server-ip 应该是你在Docker Swarm中实际运行Nacos服务的节点的IP地址。你可以通过查看Swarm集群的服务状态来确定这个IP地址。
    4. 验证配置: 重启Spring Cloud应用,检查日志确认应用是否已经成功连接到正确的Nacos服务地址。

    5. 监控和调试: 如果仍然存在问题,可以考虑在Spring Cloud应用的日志中增加更多关于服务发现的详细信息,以便于进一步排查问题。

    注意:由于你没有提供具体的Nacos服务名称和端口,你需要根据实际情况替换上述示例中的nacos-service-namenacos-portnacos-server-ip。另外,确保你的Docker Swarm环境中的Nacos服务确实可用,且端口正确暴露。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程