We're building a microservice architecture on Spring Cloud + NetflixOSS and so far IT'S AMAZING. However we have noticed that when we first spin up Eureka + 2 separate microservices, Service1 cannot connect to Service2 for a good ~30 seconds, even though both register with Eureka very quickly and appear up individually. This happens locally or deployed (on AWS via Tutum)
The error we get is:
Load balancer does not have available server for client: Service1
Pretty much all of our timeouts and settings are just specified as the default, so we feel like there's something wrong. What we're worried about is rolling an update to a Service1 and having it register to Eureka & then having 30 seconds of downtime (or possibly downtime on Service2 that depends on Service1)
Has anyone seen this behavior before? Is there a way to inspect / debug / log the client-side load balancing candidate? We've fished through a lot of the Netflix code (both with / without the debugger) but we're not seeing a lot of logging and introspection points that will be useful (especially since the Observables tend to timeout during deep debugging sessions)
Advice? Suggestions? Pagan gods whom desire sacrifices?
Thanks
ribbon.ServerListRefreshInterval=2000
will set the client side to refresh every 2 seconds.