I’ve been using docker swarm for a while and I’m really pleased with how simple it is to set up a swarm cluster and to run replicated services. However I’ve faced a problem that seems like a blocker in my use case.
I’m using docker 1.12 and swarm mode.
My problem is that the internal IPVS load balancer sends request to tasks that have “status health: starting” and whereas my application is not properly started.
My application takes some time to start but docker swarm load balancer starts sending requests as soon as the container is in “state running”.
After running some tests I realized that If I scale up one instance, the instance is available to the load balancer immediately and the client may get a connection refused response if the load balancer sends the request to the starting server.
I’ve implemented the health check and I was expecting a particular instance to only become available to the load balancer after the first successful health check.
Is there any way to configure the load balancer or the scheduler to only send request to instance that are properly started?