-
Notifications
You must be signed in to change notification settings - Fork 407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MVP Smart load balancer / API Gateway #13
Comments
In gitlab by @treeder on May 11, 2017, 11:23 changed title from {-API gateway / smart load balancer-} to {+MVP Smart load balancer / API Gateway+} |
In gitlab by @treeder on May 11, 2017, 11:23 changed milestone to %3 |
In gitlab by @treeder on May 18, 2017, 13:09 changed milestone to %1 |
In gitlab by @treeder on May 30, 2017, 14:55 added ~6 label |
In gitlab by @carimura on May 31, 2017, 08:36 removed ~6 label |
In gitlab by @rdallman on May 31, 2017, 16:41 gonna not edit the body to leave those ideas laying around, but there were some deviations taken. have a working version that works so long as there's only 1 LB, mostly just need to fix that and then beef things up a bit (posting pr soon-ish). going to add a checklist of things to do as a second brain:
|
In gitlab by @treeder on Jun 13, 2017, 10:14 closed |
In gitlab by @treeder on May 11, 2017, 11:15
In order to optimize various things such as:
the load balancer will need to be smart about routing requests to a specific function to a subset of machines.
IronLB
The Problem
IronFunctions requires a load balancer to route requests to IronFunctions nodes. The problem is if we just use a regular load balancer, the requests will go to all the nodes which is very suboptimal since every machine will need to store all of the image functions, and we can't take advantage of hot/streaming containers.
The Solution
If we route requests for a particular function to a subset of
machines, we get the following benefits:
See iron-io/functions#151
We can extend an existing load balancer like Vulcand
to solve the problem. At a minimum, the load balancer(s) should be able to route function X to a fixed set of nodes (say 3 by default).
Usage
Like any other load balancer, user will start X number of IronLB nodes to route traffic to IronFunctions nodes.
The logic to route traffic to specific nodes will be baked in so there shouldn't be much more configuration than
telling the load balancers where to route traffic.
Will be delivered via a docker image.
High Level Implementation
The Docker image will start the LB and etcd.
app_name
andpath
(can be obtained from URL).app_name.path
to MAX_NODES (3 default) nodesTry to implement via a Vulcand middleware.
Not sure if that's possible, I don't see a way to route to a specific server, will have to dig in. Otherwise,
fork Vulcand and add this feature to the "Backend" that handles the servers.
Also consider https://github.com/containous/traefik instead of Vulcan.
First Deliverable
Working MVP for use with IronFunctions.
Future Improvements - not part of initial scope
functions, you may want to say that a particular function can go to 10 nodes, instead of the default 3.
increase as traffic increases.
The text was updated successfully, but these errors were encountered: