eureka zuul找不到我在eureka上注册的python应用程序

时间:2017-11-22 08:34:10

标签: netflix-eureka netflix-zuul

我有一个python web应用程序,并使用restfull api [https://github.com/Netflix/eureka/wiki/Eureka-REST-operations]在eureka注册,我在eureka网页上发现它状态为UP,但我的网关服务器(也在eureka注册)找不到它,我称之为网址" gateway-server-host / myapp-url"以下回复是:

  

com.netflix.zuul.exception.ZuulException:转发错误   org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:188)   在   org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:163)   在   org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:111)

...

  

引起:com.netflix.client.ClientException:负载均衡器没有   为客户提供服务器:test at   com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483)   在   com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.call(LoadBalancerCommand.java:184)   在   com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.call(LoadBalancerCommand.java:180)

对这个问题的任何建议???

3 个答案:

答案 0 :(得分:2)

您是否查看了Spring Cloud的Sidecar

它基本上是对你的非jvm语言服务(在你的情况下是python)和sidecar服务(你必须在同一主机上部署你的python服务和sidecar服务,如果我没有记错)的服务,你会将Zuul端点包含在边车服务中,该服务将尝试处理诸如尤里卡之类的东西。

您启动了一个新的弹簧启动应用,注释了@EnableSidecar,您配置了health-uriport

示例application.yml

server:
  port: 5678
spring:
  application:
    name: sidecar

sidecar:
  port: 8000
  health-uri: http://localhost:8000/health.json

您可以查看有关Sidecar here的Spring Cloud文档,了解有关如何设置的详细信息

答案 1 :(得分:0)

由于您使用Zuul,您需要手动注册路线。可以让他们只包含来自Eureka的应用程序名称。

Zuul路线配置示例:

zuul:
 routes:
   application1: /app1/**
   application2: /app2/**
   application3:
     path: /app3/**
     url: http://10.0.8.11:3000/

applicationN是在尤里卡注册的名称。网址将自动解析并进行负载平衡。对于app3,手动指定网址。

答案 2 :(得分:0)

添加Sidecar可以在您的Zuul / routes显示已注册的应用程序名称的范围内解决此问题。

即使您没有实际的应用程序,您也必须经历过,并且只需在此文档后面加上任何带有有效负载的名称-[https://github.com/Netflix/eureka/wiki/Eureka-REST-operations],该名称也将在Eureka中注册为应用程序。