当前位置: 首页 > 知识库问答 >
问题:

Eureka使用奇怪的IP地址注册,请求不使用zuul

锺离赤岩
2023-03-14

我正在使用SpringBoot开发一个具有微服务体系结构的Rest后端。我使用Eureka作为发现服务,使用Zuul作为API网关。在本地主机中工作时,一切正常。但当我在云上部署服务时,zuul api网关的行为并不像预期的那样。所有服务仍在eureka注册。到api网关的请求没有转发到所需的服务,而是卡在api网关上并给出

com.netflix.zuul.exception.ZuulException: Filter threw Exception
    at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:227) ~[zuul-core-1.3.1.jar:1.3.1]
    at com.netflix.zuul.FilterProcessor.runFilters(FilterProcessor.java:157) ~[zuul-core-1.3.1.jar:1.3.1]
    at com.netflix.zuul.FilterProcessor.route(FilterProcessor.java:118) ~[zuul-core-1.3.1.jar:1.3.1]
    at com.netflix.zuul.ZuulRunner.route(ZuulRunner.java:96) ~[zuul-core-1.3.1.jar:1.3.1]
    at com.netflix.zuul.http.ZuulServlet.route(ZuulServlet.java:116) ~[zuul-core-1.3.1.jar:1.3.1]
    at com.netflix.zuul.http.ZuulServlet.service(ZuulServlet.java:81) ~[zuul-core-1.3.1.jar:1.3.1]
    at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:165) [spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    ...
    at com.netflix.hystrix.HystrixCommand.queue(HystrixCommand.java:378) ~[hystrix-core-1.5.12.jar:1.5.12]
    at com.netflix.hystrix.HystrixCommand.execute(HystrixCommand.java:344) ~[hystrix-core-1.5.12.jar:1.5.12]
    at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:159)
    ... 96 common frames omitted
Caused by: java.lang.RuntimeException: java.net.UnknownHostException: 3b7b691a42eb: unknown error
    at rx.exceptions.Exceptions.propagate(Exceptions.java:57) ~[rxjava-1.3.6.jar:1.3.6]
    at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:463) ~[rxjava-1.3.6.jar:1.3.6]
    at rx.observables.BlockingObservable.single(BlockingObservable.java:340) ~[rxjava-1.3.6.jar:1.3.6]
    at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112) ~[ribbon-loadbalancer-2.2.5.jar:2.2.5]
    ... 158 common frames omitted
Caused by: java.net.UnknownHostException: 3b7b691a42eb: unknown error
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_65]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[na:1.8.0_65]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[na:1.8.0_65]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276) ~[na:1.8.0_65]
    at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_65]
    at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_65]
    at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) ~[httpclient-4.5.5.jar:4.5.5]
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:112) ~[httpclient-4.5.5.jar:4.5.5]
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373) ~[httpclient-4.5.5.jar:4.5.5]
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381) ~[httpclient-4.5.5.jar:4.5.5]
    ...
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.6.jar:1.3.6]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.3.6.jar:1.3.6]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.6.jar:1.3.6]
    at rx.Observable.subscribe(Observable.java:10352) ~[rxjava-1.3.6.jar:1.3.6]

这是我的zuul配置

zuul:
    prefix: /api/v1
      routes:
        user-server:
          path: /user/**
          serviceId: USER-SERVER
        developer-server:
          path: /developer/**
          serviceId: DEVELOPER-SERVER

    spring:
      application:
        name: zuul-server

    server:
      port: 5000

    eureka:
      client:
        register-with-eureka: true
        fetch-registry: true
        service-url:
          defaultZone : http://{{eureka_hosted_ip}}:8070/eureka/   


hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 2000000
    ribbon:
        ConnectTimeout: 200000
        ReadTimeout: 200000

我已经在docker容器中部署了服务。我做错了什么?

共有1个答案

沈乐邦
2023-03-14

我发现了错误。错误是在向Eureka服务器注册时,我的服务没有使用正确的ip地址注册。因为它是在docker容器上运行的,所以没有正确注册ip
因此,在运行docker时,我必须使用docker run命令的--network=host部分。当我在eureka正确注册时,一切都很好。

 类似资料:
  • 问题内容: 我正在使用python中的请求库发出HTTP请求,但我需要来自响应http请求的服务器的IP地址,因此,我试图避免进行两次调用(可能与响应的IP地址不同)请求。 那可能吗?是否有任何python http库允许我这样做? ps:我还需要发出HTTPS请求并使用经过身份验证的代理。 更新1: 例: 然后,我想知道响应中的方法或属性将哪些IP地址请求连接到了。在其他库中,我可以通过找到袜子

  • 我在Tomcat 7上使用Spring 4 MVC实现RESTful Web服务。 想知道如果外部客户端发送HTTP请求,是否有办法在服务器端层中获取特定客户端的IP地址?

  • 问题内容: 当我尝试设置套接字服务器时,出现错误消息: 整个代码是最简单的: 我100%确定端口已转发,Windows防火墙已关闭。什么都不会阻塞端口9999。还有什么会出错? 问题答案: 正如其他人指出的那样,这很可能与使用port的另一个进程有关。在Windows上,运行以下命令: 并且它应该列出任何阻塞端口的内容。当然,您必须去手动在Task Manager中杀死那些程序。如果仍然无法解决问

  • 问题内容: 如何仅使用标准库在Python平台中独立查找本地IP地址(即192.168.xx或10.0.xx)? 问题答案: 这将永远无法正常工作(返回127.0.0.1主机为as的机器127.0.0.1),将是gimel显示的一种称呼,而是使用。当然,您的计算机需要一个可解析的主机名。

  • 问题内容: 我正在尝试进行测试以检查sys.argv输入是否与IP地址的RegEx相匹配… 作为一个简单的测试,我有以下内容… 但是,当我向其中传递随机值时,在大多数情况下,它会返回“可接受的IP地址”,除非我的“地址”基本上等于。 问题答案: 您必须通过以下方式修改您的正则表达式 这是因为通配符代表“每个字符”

  • 我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。