Previously we set up some Apache Ignite servers in an autoscaling group. The next step is to add a Load Balancer in front of the autoscaling group.
Before any steps let’s add some environment variables to variables.tf.
variable "autoscalling_group_elb_name" { type = string default = "autoscallinggroupelb" } variable "elb_security_group_name" { type = string default = "elb_name" }
First we shall add the security group for the Load Balancer.
resource "aws_security_group" "elb_security_group" { name = var.elb_security_group_name egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } ingress { from_port = 80 to_port = 8080 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } }
Then we need to retrieve the availability zones for the Load Balancer.
data "aws_availability_zones" "available" { state = "available" }
Then let’s add the Load Balancer.
resource "aws_elb" "autoscalling_group_elb" { name = var.autoscalling_group_elb_name security_groups = ["${aws_security_group.elb_security_group.id}"] availability_zones = data.aws_availability_zones.available.names health_check { healthy_threshold = 2 unhealthy_threshold = 2 timeout = 3 interval = 30 target = "HTTP:8080/ignite?cmd=version" } listener { lb_port = 80 lb_protocol = "http" instance_port = "8080" instance_protocol = "http" } }
Then let’s match the Load Balancer with the autoscaling group and set the health type to ELB.
resource "aws_autoscaling_group" "autoscalling_group_config" { name = var.auto_scalling_group_name max_size = 3 min_size = 2 health_check_grace_period = 300 health_check_type = "ELB" desired_capacity = 3 force_delete = true vpc_zone_identifier = [for s in data.aws_subnet.subnet_values: s.id] load_balancers = ["${aws_elb.autoscalling_group_elb.name}"] launch_configuration = aws_launch_configuration.launch-configuration.name lifecycle { create_before_destroy = true } }
As before you apply your terraform solution
> terraform apply
One thought on “Autoscaling Groups with terraform on AWS Part 3: Elastic Load Balancer and health check”