Hacker News new | past | comments | ask | show | jobs | submit login
Come on Amazon, give ELB some love (coderwall.com)
50 points by dhendo on July 5, 2013 | hide | past | favorite | 14 comments

I agree that ELBs need much more functionality.

In order to get around the lack of features, I only use the ELBs for SSL termination (well, and DNS, and autoscaling). For anything fancier, I've developed a coprocess that manages HAProxy behind the scenes. It leverages Auto Scaling notifications to keep the backend instances in sync. It has a REST API so that you can drive configuration, and it works in a master-master configuration.

It's been running in production for about 9 months now, and has proven invaluable. Having hooks at this layer is incredible. I'm able to get amazing debugging information, I can "bumper" the site at the frontend, I can do 100% zero downtime deployments with quick rollback, I can tarpit and rate limit, etc.

Once I added enough "sugar", I started to realize that maybe AWS is doing it right -- it'd be impossible to add all the features that every customer would want to the ELB. However, WebSocket support and request draining are low-hanging fruit. Same goes for the support for generic HTTP methods, which was implemented some time ago.

ELB already does weighting, directing requests depending instance type and instance load. Can't find where in the docs this is clarified unfortunately. Have witnessed this with my own eyes though!

Draining is a huge issue for us. Investigating ways to add a secondary layer of balancing behind ELB to help mitigate it, which is completely silly. We shouldn't need to do this. ELB should have supported gracefully terminating connections from Day 1, IMO. Last I heard it was being 'considered'.

Docs talk about Availability Zones, but there is zero mention of weighting -- either that it's done, or that it's not done. This is a very strange omission. Googling reveals that balancing is done by counting outstanding requests to each instance:



> But there is zero mention of weighting

It is called WRR (Weighted Round Robin). Here are some docs to get you started:


That's for Route 53 (DNS). The subject here is ELB, a different AWS technology.

Yes, indeed! My thinking was that you could use this Route 53 feature to route traffic across several ELBs to accomplish the desired effect.

Yes, sounds like a good idea (if you have control of the DNS)

I'd also love to see support for draining - and it seems like we might be in luck in the near future:


^-- BenF@AWS commented on June 10th saying that amazon is now actively working on it!

Draining is easy. Your health check should be hitting a url like '/ping' anyway which responds with an OK if the box is in a reasonable state and willing to serve traffic.

I always add an additional check to see if a file called /tmp/down exists, and if it does, return a 500 for the health checks. Existing clients will continue to be served but that instance will get no new connections.

I would love to be able to not just attached EC2 instances to ELB's, but also RDS instances.

As unrealistic as it is I would love to be able to attach non-Amazon servers.

It's hard to find load balancing as a service.

How about more control over the software & configuration side of ELB as well? If you could control more things that nginx or haproxy let you control, I think there would be a lot less need for another routing mechanism behind ELB.

In addition to weighting, we need an nginx layer for different app pools, custom routing options, max connections limits, request queueing, url rewriting, static content serving for specific requests. The list goes on but these things could easily be brought up into the ELB layer.

I also wish ELB would get security groups like EC2 and RDS already have.

I think a LOT of people revert to HAPRoxy on an EC2 instance because of this.

They have been - and they successfully nerfed half a dozen of ours (public facing) when they did the migration about three weeks back. Most recent upgrade added the ability for R53 to do latency based and healthcheck based DNS (with ELBs, that is), which is pretty shiny. As others have noted, it already auto-weights.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact