我是新来Zuul的。我有两个定义了不同端口的生产者项目。然而,Zuul总是直接指向第一个项目,而不是负载均衡它。我曾经成功过一次,但总是失败,没有任何改变。
Zuul application.properties
server.port=8888
spring.application.name=gateway-service-zuul
zuul.routes.producer.path=/producer/**
zuul.routes.producer.service-id=spring-cloud-producer生产者one application.properties
spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone = http://localhost:8760/eureka/生产者2 application.properties
spring.application.name=spring-cloud-producer-2
server.port=9001
eureka.client.serviceUrl.defaultZone = http://localhost:8760/eureka/如果您将Zuul的application.properties更改为:
zuul.routes.producer.service-id=spring-cloud-producer-2我可以将流量定向到producer-2。验证producer-2是否可以成功运行。我知道我可以不使用path和service-id直接使用Eureka,但我仍然想弄清楚这一点。
失败的日志-您在DynamicServerListLoadBalancer中看不到producer-2 ...
2021-02-07 18:53:33.943 INFO 14868 --- [nio-8888-exec-1] o.s.c.n.zuul.web.ZuulHandlerMapping : Mapped URL path [/producer/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2021-02-07 18:53:33.943 INFO 14868 --- [nio-8888-exec-1] o.s.c.n.zuul.web.ZuulHandlerMapping : Mapped URL path [/spring-cloud-producer/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2021-02-07 18:53:33.943 INFO 14868 --- [nio-8888-exec-1] o.s.c.n.zuul.web.ZuulHandlerMapping : Mapped URL path [/spring-cloud-producer-2/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]
2021-02-07 18:53:34.026 INFO 14868 --- [nio-8888-exec-1] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@6a4db6dc: startup date [Sun Feb 07 18:53:34 CST 2021]; parent: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@61d01788
2021-02-07 18:53:34.145 INFO 14868 --- [nio-8888-exec-1] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2021-02-07 18:53:34.542 INFO 14868 --- [nio-8888-exec-1] c.netflix.config.ChainedDynamicProperty : Flipping property: spring-cloud-producer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-02-07 18:53:34.603 INFO 14868 --- [nio-8888-exec-1] c.n.u.concurrent.ShutdownEnabledTimer : Shutdown hook installed for: NFLoadBalancer-PingTimer-spring-cloud-producer
2021-02-07 18:53:34.649 INFO 14868 --- [nio-8888-exec-1] c.netflix.loadbalancer.BaseLoadBalancer : Client: spring-cloud-producer instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=spring-cloud-producer,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2021-02-07 18:53:34.664 INFO 14868 --- [nio-8888-exec-1] c.n.l.DynamicServerListLoadBalancer : Using serverListUpdater PollingServerListUpdater
2021-02-07 18:53:34.712 INFO 14868 --- [nio-8888-exec-1] c.netflix.config.ChainedDynamicProperty : Flipping property: spring-cloud-producer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-02-07 18:53:34.716 INFO 14868 --- [nio-8888-exec-1] c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client spring-cloud-producer initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=spring-cloud-producer,current list of Servers=[localhost:9000],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone; Instance count:1; Active connections count: 0; Circuit breaker tripped count: 0; Active connections per server: 0.0;]
},Server stats: [[Server:localhost:9000; Zone:defaultZone; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 08:00:00 CST 1970; First connection made: Thu Jan 01 08:00:00 CST 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0]
]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@3ec2c916
2021-02-07 18:53:35.673 INFO 14868 --- [erListUpdater-0] c.netflix.config.ChainedDynamicProperty : Flipping property: spring-cloud-producer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2021-02-07 18:57:44.394 INFO 14868 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration完整的代码可以在这里找到。code
非常感谢您的评论。
发布于 2021-02-07 20:14:33
或者,我们可以使用ribbon并将url列表添加到其中:
zuul中的application.properties:
server.port=8888
spring.application.name=gateway-service-zuul
zuul.routes.producer.path=/producer/**
zuul.routes.producer.service-id=producer-service
producer-service.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
producer-service.ribbon.listOfServers=localhost:9000,localhost:9001
producer-service.ribbon.ConnectTimeout=1000
producer-service.ribbon.ReadTimeout=3000
producer-service.ribbon.MaxTotalHttpConnections=500
producer-service.ribbon.MaxConnectionsPerHost=100
eureka.client.serviceUrl.defaultZone = http://localhost:8760/eureka/
ribbon.eureka.enabled=false发布于 2021-02-08 17:36:44
所有实例应该具有相同的serviceId/ application.name,只是端口不同。然后,您的请求将被负载平衡到请求中指定的serviceId可用的服务实例之一。
https://stackoverflow.com/questions/66087264
复制相似问题