Vidya,

Thanks. Response are below.

On Jan 26, 2017, at 4:01 PM, Vidya Sagar Kalvakunta 
<[email protected]<mailto:[email protected]>> wrote:

Hi Marcus,

Using a service registry such as Consul as the backend for the load balancer 
automatically ensures the service that is currently down (in this case being 
updated) is removed from the routing table of the load balancer and the service 
is added when it is back online.


In a way, yes that would work, but I wouldn’t want to disrupt ongoing requests 
when taking a portal instance down during the deployment.  On systems I’ve 
worked on in the past what we did was:
1. Take the portal instance out of the load balancer
2. At this point the portal instance may still be processing requests but it 
shouldn’t be getting any new ones
3. Either monitor the number of processing requests and wait till it drops to 
zero or just wait a predetermined amount of time (or both, for example, wait 
until current requests finish or some max amount of time passes).
4. Then proceed with taking down the portal instance and updating it, etc.

If you want more fine-grained control, i.e there are multiple instances with 
only a part of them currently updated to the latest version and you want the 
load balancer to give more priority to the latest instances until all the 
instances are done being updated.

A service registered in Consul can have tags associated with it, so each 
instance of the Laravel portal can register a tag with its version number. We 
can write the load balancer config file, such that it assigns more weight to 
instances with "Version 2" tags and less weight to instances with "Version 1" 
tags.

That’s interesting, I think that might work.  What I was thinking of is take 
half of the instances out of the load balancer, update them, bring them back 
up, put them back into the load balancer, then repeat with the other half. That 
way you don’t have a mix of versions deployed.


This scenario will work with both Consul Template + 
HAProxy<https://github.com/hashicorp/consul-template/blob/master/examples/haproxy.md>
 or Fabio<https://github.com/eBay/fabio>.


Thanks,
Vidya



Reply via email to