gpt4 book ai didi

spring - 为什么部署在 Docker 容器上的 Spring Cloud Netflix 应用需要显式设置 eureka.instance.hostname?

转载 作者:行者123 更新时间:2023-12-04 17:19:09 26 4
gpt4 key购买 nike

一个简单的场景:

  • 2 台 Eureka 服务器 ( http://archimedes1 http://archimedes2 )
  • 1 配置服务器
  • 1 祖尔网关
  • 1 业务微服务

  • 部署在本地主机上,一切都按预期工作。

    我将它们 dockerized 以在每个应用程序的单独容器上运行,并在 Windows 上的 Docker 上进行测试。

    部署(配置服务器、zull 和 b-ms)后我看到的是,如果我不指定 eureka.instance.hostname每个人的 他们使用无效的 URL 在 Eureka 服务器中注册.这使得它们无法互相调用,因为它们得到了无效的 URL。

    例如:
    CONFIGSERVER    n/a (1) (1) UP (1) - 287dd3ada410:configserver:8888
    287dd3ada410:configserver:8888点在 287dd3ada410:8888/info .而这并不存在。

    解决 这我必须添加到 configserver 的 application.yml(以及其他应用程序的等效项):
    eureka:
    instance:
    hostname: config-server

    现在它在 Eureka 中显示如下:
    CONFIGSERVER    n/a (1) (1) UP (1) - c99cdfe9bd01:configserver:8888

    c99cdfe9bd01:configserver:8888点在 http://config-server:8888/info ,现在可以正确解析配置服务器。

    为什么要使用eureka.instance.hostname每个服务?为什么他们不像在没有 Docker ( c99cdfe9bd01:configserver:8888 -> 192.168.99.100:8888 ) 的情况下运行时那样注册他们的 IP:port ?

    最佳答案

    我相信每个 Docker 容器都需要使用映射到容器端口的 Docker 主机 IP 和 Docker 主机端口进行注册。

    这是我用过的:

    Eureka 实例:

    docker run -idt -p 8001:8001 --net=host -e spring.profiles.active=peerAware -e appPort=8001 -e hostName=$HOSTNAME -e dataCenter=asimio-cloud-dal -e environment=staging -e peerUrls="http://$HOSTNAME:8002/eureka/" asimio/discovery-server:1.0.73

    一个服务实例:
    docker run -idt -p 8601:8601 --net=host -e appPort=8601 -e hostName=$HOSTNAME -e eureka.client.serviceUrl.defaultZone="http://$HOSTNAME:8001/eureka/,http://$HOSTNAME:8002/eureka/" asimio/demo-registration-api-2:1.0.21

    http://tech.asimio.net/2016/11/14/Microservices-Registration-and-Discovery-using-Spring-Cloud-Eureka-Ribbon-and-Feign.html#running-the-discovery-server-and-demo-services-in-docker-containers

    关于spring - 为什么部署在 Docker 容器上的 Spring Cloud Netflix 应用需要显式设置 eureka.instance.hostname?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41827030/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com