Autoscaling Groups with terraform on AWS Part 3: Elastic Load Balancer and health check
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 environmental variables to variables.tf.
1 2 3 4 5 6 7 8 9 | 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.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | 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.
1 2 3 | data "aws_availability_zones" "available" { state = "available" } |
Then let’s add the Load Balancer.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | 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.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | 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
1 | > terraform apply |
Published on Java Code Geeks with permission by Emmanouil Gkatziouras, partner at our JCG program. See the original article here: Autoscaling Groups with terraform on AWS Part 3: Elastic Load Balancer and health check Opinions expressed by Java Code Geeks contributors are their own. |