2

What are my best options for deploying a load balancer on AWS with the following requirments:

Add auto scaling that will start my own EC2 instances. Deploy 3rd party SW on the load balancer. Have a readable shared memory (can be S3).

Found the tutorial "Create an External Load Balancer" about Kubernetes but not sure about it.

EDIT:

deploy 3rd party [software] on the load balancer" -- to do what: Want to start new instances with parameters and for routing rules to the instances that were created with the auto scaling.

how is "readable shared memory" used, and for what purpose? shared memory between the load balancer and the instances. I can do it with sockets.

Why is the balancer layer 4 as opposed to a different layer? Need TCP parametrs, layer 7 info can also be useful

Where is TLS handled? I havn't thought about this.

  • You might need to clarify "deploy 3rd party [software] on the load balancer" -- to do what? Why does the 3rd party software need to be on the balancer? Also how is "readable shared memory" used, and for what purpose? Why is the balancer layer 4 as opposed to a different layer? Where is TLS handled? My intention is not to say that there is a problem with the question, but it seems like the answers will be more useful to you and others if we understand what your actual requirements are, as well as what limitations of the AWS balancer options make them unsuitable for your purpose. – Michael - sqlbot Dec 31 '17 at 16:52
  • @Michael-sqlbot thanks, EDITED – nmnir Dec 31 '17 at 18:42
  • @nmnir what is your final goal with this load balancer ? How AWS ELB or ALB linked to an auto scaling group are not fulfilling your needs ? – Tensibai Jan 3 '18 at 10:10
2

Historically, F5's Application Delivery Controller has been the enterprise-grade industry solution for doing this. With this solution you can:

  • Last point is highly debatable and more a commercial speech, cpu and ram speed nowadays are way higher than the underlying hardware, not even talking about virtual appliances on the cloud where you don't handle the hardware nor the vm parameters. (BTW kubernetes is not a load balancer and doesn't have one out of the box, the one you choose is your decision, nginx is a popular choice but f5 has one specific for k8s also) – Tensibai Jan 2 '18 at 21:20
  • @Tensibai - Did you read the article I linked there for support? I can link to several others, but TL;DR the Linux Kernel scales connections poorly. The kernel's algorithms require more CPU comparisons the more connections you make to iterate over and manage memory. This is thus an exponential performance degradation. Microkernels that allocate memory optimized to connection management don't suffer from the same problem. As moores law slows down, this problem will only get worse. – James Shewey Jan 2 '18 at 21:28
  • I just mean a standard network card will show its limits before the kernel cpu needs are slowing things down – Tensibai Jan 2 '18 at 21:32
  • So what that is really saying (marketing-wise) is that you at least need an F5, a Kemp or an A10 as connections scale past several thousand. or you will need to roll your own system. – James Shewey Jan 2 '18 at 21:32
  • @Tensibai - that really depends. If you have a lot of connections with low throughput (eg, all you are doing is millions of 3-way-handshakes, then closing the connection) you won't necessarily reach a limit on your network card/interface. – James Shewey Jan 2 '18 at 21:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.