Does it make sense to have an Amazon Elastic Load Balancer with just one EC2 instance?

Solution 1:

Using an Elastic Load Balancer with a single instance can be useful. It can provide your instance with a front-end to cover for a disaster situation.

For example, if you use an auto-scaling group with min=max=1 instance, with an Elastic Load Balancer, then if your instance is terminated or otherwise fails:

  1. auto-scaling will launch a new replacement instance
  2. the new instance will appear behind the load balancer
  3. your user's traffic will flow to the new instance

This will happen automatically: no need to change DNS, no need to manually re-assign an Elastic IP address.

Later on, if you need to add more horsepower to your application, you can simply increase your min/max values in your autoscaling group without needing to change your DNS structure.

Solution 2:

It's much easier to configure your SSL on an ELB than an EC2, just a few clicks in the AWS console. You can even hand pick the SSL protocols and ciphers.

It's also useful that you can associate different security groups to the actual EC2 and the forefront ELB. You can leave the ELB in the DMZ and protect your EC2 from being accessible by public and potentially vulnerable to attacks.

Solution 3:

With NO ELB :-

  • Less Secure (DOS Attacks possible as HTTP 80 will be open to all, instead of being open only to ELB)
  • You won't have the freedom of terminating an instance to save EC2 hrs without worrying about remapping your elastic IP(not a big deal tho)
  • If you don't use ELB and your ec2 instance becomes unhealthy/terminates/goesDown

    1. Your site will remain down (It will remain up if you use ELB+Scaling Policies)
    2. You will have to remap your elastic IP
    3. You pay for the time your elastic IP is not pointing to an instance around $0.005/hr

You get 750 hours of Elastic Load Balancing plus 15 GB data processing with the free tier so why not use it along with a min=1,max=1 scaling policy

Solution 4:

There is no need to use a Load Balancer if you are only running an single Amazon EC2 instance.

To point your domain name to an EC2 instance:

  • In the EC2 Management Console, select Elastic IP
  • Allocate New Address
  • Associate the address with your EC2 instance
  • Copy the Elastic IP address and use it in your Route 53 sub-domain

The Elastic IP address can be re-associated with a different EC2 instance later if desired.

Later, if you wish to balance between multiple EC2 instances:

  • Create an Elastic Load Balancer
  • Add your instance(s) to the Load Balancer
  • Point your Route 53 sub-domain to the Load Balancer

Solution 5:

On top of the answer about making SSL support easier by putting a load balancer in front of your EC2 instance, another potential benefit is HTTP/2. An Application Load Balancer (ALB) will automatically handle HTTP/2 traffic and convert up to 128 parallel requests to individual HTTP/1.1 requests across all healthy targets.

For more information, see: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-configuration