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.
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. 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 On Thu, Jan 26, 2017 at 1:54 PM, Christie, Marcus Aaron <[email protected]> wrote: > > On Jan 21, 2017, at 9:40 PM, Ameya Advankar <[email protected]> wrote: > > Hi Airavata Developers, > > As a part of the ongoing Advanced Science Gateway Architectures course at > IU, we are working on load balancing the UI Portal. This mail chain is > intended to be used for the same. > > We briefly discussed 3 load balancing technologies in this weeks classroom > session - > 1. *HAProxy* > 2. *NGINX* > 3. HAProxy with Consul / *Consul-template* > > The topic is open for discussion. > > The following is the Github link to the Portal which will be used - > https://github.com/airavata-courses/spring17-laravel-portal > > Thanks & Regards, > Ameya Advankar > > > Hello Ameya, > > One requirement I have is programmatic control over which instances are > being used by a load balancer. The main use case I have in mind is > deploying updated code. Let’s say there are two portal instances, A and B, > that are being load balanced. I would like to create a deploy script that > takes A out of the load balancer, then updates the code deployed to A, and > then enable A in the load balancer again. And then do the same thing with B. > > Which of these load balancing technologies support this sort of > programmatic control? > > Thanks, > > Marcus > > > -- Vidya Sagar Kalvakunta | Graduate MS CS Student | IU School of Informatics and Computing | Indiana University Bloomington | (812) 691-5002 <8126915002> | [email protected]
