Zuul负载均衡器没有可用于客户端的服务器

时间:2017-12-27 00:34:57

标签: netflix-eureka netflix-zuul spring-cloud-netflix

我一直在尝试使用Zuul和Eureka连接微服务,并且除了基于serviceId通过Zuul重新路由之外,大部分都取得了成功。我所拥有的是Spring Boot Zuul和Eureka应用程序,以及一个向Eureka注册的基于节点的微服务。 Zuul和微服务都在Eureka注册并显示在Eureka控制面板上,但是,当我尝试通过Zuul路由到微服务时,我得到以下异常:

com.netflix.zuul.exception.ZuulException: Forwarding error
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: steam-auth-service

通过IP路由似乎有效,但我不需要。

Zuul application.properties:

server.port=8079
eureka.client.service-url.defaultZone=http://localhost:8088/eureka
zuul.routes.steam-auth-service.serviceId=steam-auth-service
zuul.routes.steam-auth-service.path=/steam/**

Node.JS Eureka客户注册:

// Discovery service info
const eurekaServer = {
  host: process.env.EUREKA_HOST,
  port: process.env.EUREKA_PORT,
  servicePath: '/eureka/apps/',
};

// Client to connect to Eureka discovery service
const eurekaClient = new Eureka({
  instance: {
    app: 'steam-auth-service',
    hostName: 'localhost',
    ipAddr: '127.0.0.1',
    port: {
      $: process.env.PORT,
      '@enabled': true,
    },
    vipAddress: 'steamauth.pubgtrade.com',
    dataCenterInfo: {
      '@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
      name: 'MyOwn',
    },
  },
  eureka: eurekaServer,
});

正如我所说,Zuul应用程序和微服务都在Eureka注册并显示在控制面板中。

/ eureka / apps回复:

<applications>
<versions__delta>1</versions__delta>
<apps__hashcode>UP_2_</apps__hashcode>
<application>
<name>STEAM-AUTH-SERVICE</name>
<instance>
<hostName>localhost</hostName>
<app>STEAM-AUTH-SERVICE</app>
<ipAddr>127.0.0.1</ipAddr>
<status>UP</status>
<overriddenstatus>UNKNOWN</overriddenstatus>
<port enabled="true">3001</port>
<securePort enabled="false">7002</securePort>
<countryId>1</countryId>
<dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
<name>MyOwn</name>
</dataCenterInfo>
<leaseInfo>
<renewalIntervalInSecs>30</renewalIntervalInSecs>
<durationInSecs>90</durationInSecs>
<registrationTimestamp>1514334766260</registrationTimestamp>
<lastRenewalTimestamp>1514334886300</lastRenewalTimestamp>
<evictionTimestamp>0</evictionTimestamp>
<serviceUpTimestamp>1514333831189</serviceUpTimestamp>
</leaseInfo>
<metadata class="java.util.Collections$EmptyMap"/>
<vipAddress>steamauth.pubgtrade.com</vipAddress>
<isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer>
<lastUpdatedTimestamp>1514334766260</lastUpdatedTimestamp>
<lastDirtyTimestamp>1514334766260</lastDirtyTimestamp>
<actionType>ADDED</actionType>
</instance>
</application>
<application>
<name>PUBG-API-GATEWAY</name>
<instance>
<instanceId>192.168.0.13:pubg-api-gateway:8079</instanceId>
<hostName>192.168.0.13</hostName>
<app>PUBG-API-GATEWAY</app>
<ipAddr>192.168.0.13</ipAddr>
<status>UP</status>
<overriddenstatus>UNKNOWN</overriddenstatus>
<port enabled="true">8079</port>
<securePort enabled="false">443</securePort>
<countryId>1</countryId>
<dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
<name>MyOwn</name>
</dataCenterInfo>
<leaseInfo>
<renewalIntervalInSecs>30</renewalIntervalInSecs>
<durationInSecs>90</durationInSecs>
<registrationTimestamp>1514334380413</registrationTimestamp>
<lastRenewalTimestamp>1514334890454</lastRenewalTimestamp>
<evictionTimestamp>0</evictionTimestamp>
<serviceUpTimestamp>1514334380413</serviceUpTimestamp>
</leaseInfo>
<metadata>
<management.port>8079</management.port>
<jmx.port>36983</jmx.port>
</metadata>
<homePageUrl>http://192.168.0.13:8079/</homePageUrl>
<statusPageUrl>http://192.168.0.13:8079/info</statusPageUrl>
<healthCheckUrl>http://192.168.0.13:8079/health</healthCheckUrl>
<vipAddress>pubg-api-gateway</vipAddress>
<secureVipAddress>pubg-api-gateway</secureVipAddress>
<isCoordinatingDiscoveryServer>false</isCoordinatingDiscoveryServer>
<lastUpdatedTimestamp>1514334380413</lastUpdatedTimestamp>
<lastDirtyTimestamp>1514334380381</lastDirtyTimestamp>
<actionType>ADDED</actionType>
</instance>
</application>
</applications>

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:-1)

为什么不使用application.yml而不是属性,这就是我在我的设置中的设置。你能直接进入这项服务吗?即不是通过ZUUL。

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css" integrity="sha512-M2wvCLH6DSRazYeZRIm1JnYyh22purTM+FDB5CsyxtQJYeKq83arPe5wgbNmcFXGqiSH2XR8dT/fJISVA1r/zQ==" crossorigin=""/>

<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js" integrity="sha512-lInM/apFSqyy1o6s89K4iQUKg6ppXEgsVxT35HbzUupEVRh2Eu9Wdl4tHj7dZO0s1uvplcYGmt3498TtHq+log==" crossorigin=""></script>
 
 <div id='map'></div>