Статьи

Автоматическое масштабирование групп с помощью terraform в AWS. Часть 3. Эластичный балансировщик нагрузки и проверка работоспособности

Ранее мы настроили несколько серверов Apache Ignite в группу автоматического масштабирования. Следующим шагом является добавление балансировщика нагрузки перед группой автоматического масштабирования.

Перед любыми шагами давайте добавим некоторые переменные окружения в 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"
}

Сначала мы добавим группу безопасности для балансировщика нагрузки.

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"]
  }
}

Затем нам нужно получить зоны доступности для балансировщика нагрузки.

1
2
3
data "aws_availability_zones" "available" {
  state = "available"
}

Тогда давайте добавим балансировщик нагрузки.

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"
  }
}

Затем сопоставим балансировщик нагрузки с группой автоматического масштабирования и установим тип работоспособности 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
  }
}

Как и прежде, вы применяете решение Terraform

1
> terraform apply

Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. См. Оригинальную статью здесь: Автоматическое масштабирование групп с помощью terraform в AWS. Часть 3. Эластичный балансировщик нагрузки и проверка работоспособности.

Мнения, высказанные участниками Java Code Geeks, являются их собственными.