Ранее мы настроили несколько серверов 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, являются их собственными. |