【问题标题】:Spring Eureka on OpenshiftOpenshift 上的 Spring Eureka
【发布时间】:2018-07-03 15:09:32
【问题描述】:

我有两个简单的 Springboot 微服务,它们使用 Spring Eureka 相互连接。

步骤-

  1. 首先我运行 Eureka 服务器。
  2. 然后我运行这两个微服务。
  3. 因此,两个微服务都从 Eureka 服务器注册和发现。

我想在 Openshift v3 中实现同样的效果。我知道 Openshift 使用 Kubernates 服务来实现负载平衡和 pod-discovery。但是我可以在 Openshift 中使用 Eureka 服务器吗?

在 Openshift 中,我有 3 个 pod..

  1. 1 个用于 eureka 的 pod 和 2 个用于微服务的 pod。
  2. 两个微服务都向 eureka 注册。
  3. 但是在Eureka中,是注册为微服务的pod IP:PORT。

  4. 所以当发现微服务尝试调用 POD IP & 失败。

通常,要访问 POD IP,我们需要调用 Openshift 中的服务层。 那么如何让eureka server注册服务器层IP:PORT而不是POD的IP:PORT

【问题讨论】:

  • 问:这两个微服务都部署在 openshift 之外吗?
  • 微服务部署在 Openshift 内部。 1)我有 3 个 pod,1 个用于 eureka,2 个用于微服务。 2) 两个微服务都向 eureka 注册。 3)但是在Eureka中,是注册为微服务的pod IP:PORT。
  • eureka.instance.hostname = 应该使用服务名称。它应该在您的 openshift 控制台中找到。

标签: kubernetes openshift netflix-eureka openshift-origin


【解决方案1】:

Spring Cloud Eureka Server 项目:application.yml

server:
  port: 8761

eureka:
  instance:
    hostname: server.eureka.svc   # it should be service url in openshift cluster.
  client:
    fetch-registry: false 
    register-with-eureka: false 
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

对于 Spring Cloud Eureka Client 项目:application.yml

eureka.client.serviceUrl.defaultZone=http://server.eureka.svc8761/eureka/
eureka.instance.preferIpAddress=false

【讨论】:

  • @Maks 你能否提供更多信息来检查原因。
  • 我不知道该怎么做(我从openshift设置主机名并相应地更改eureka.client.serviceUrl.defaultZone。
  • 也许,我稍后会尝试这个:github.com/spring-cloud/spring-cloud-kubernetes。现在,当我部署到 openshift(
猜你喜欢
  • 2017-11-16
  • 2020-04-30
  • 2017-08-24
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多