我有两个简单的 Springboot 微服务,它们使用 Spring Eureka 相互连接。
步骤-
- 首先我运行 Eureka 服务器。
- 然后我运行这两个微服务。
- 因此,两个微服务都从 Eureka 服务器注册和发现。
我想在 Openshift v3 中实现同样的目标。我知道 Openshift 使用 Kubernates 服务来实现负载平衡和 Pod 发现。但是我可以在 Openshift 中使用 Eureka 服务器吗?
在 Openshift 中我有 3 个 pod..
- 1 个用于 eureka 的 pod,2 个用于微服务的 pod。
- 两个微服务都向 eureka 注册。
但在 Eureka 中,它注册为微服务的 pod IP:PORT。
因此,当发现微服务时,会尝试调用 POD IP 和失败。
通常,要访问 POD IP,我们需要调用 Openshift 中的服务层。 那么如何让eureka服务器注册服务器层IP:PORT而不是POD的IP:PORT
最佳答案
对于 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 客户端项目:application.yml
eureka.client.serviceUrl.defaultZone=http://server.eureka.svc8761/eureka/
eureka.instance.preferIpAddress=false
关于kubernetes - Openshift 上的 Spring Eureka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424738/