AWS ELB с Terraform
ToC
Что такое EC2
Amazon Elastic Load Balancer (Amazon ELB) автоматически распределяет входящий трафик приложений по нескольким целевым объектам, таким как инстансы Amazon EC2, контейнеры или IP-адреса. Сервис входит в инфраструктуру Amazon Web Services.
Настройка
Создаем файл elb.tf
с таким содержимым:
resource "aws_elb" "elb" {
name = "terraform-elb"
subnets = ["${aws_subnet.aws-subnet-public.id}", "${aws_subnet.aws-subnet-private.id}"]
listener {
instance_port = 80
instance_protocol = "http"
lb_port = 80
lb_protocol = "http"
}
health_check {
healthy_threshold = 2
unhealthy_threshold = 2
timeout = 3
target = "HTTP:80/"
interval = 30
}
instances = ["${aws_instance.web.*.id}"]
cross_zone_load_balancing = true
idle_timeout = 400
connection_draining = true
connection_draining_timeout = 400
tags {
Name = "terraform-elb"
}
}
Эти инструкции позволят нам создать Elastic Load Balancer и добавить все наши инстансы Nginx к нему, в качестве бэкэнда.
Немного об опциях:
availability_zones
- зоны доступности, в которых будет развернут балансировщикlistner
- это те порты, которые будет слушать ELB и куда будет перенаправлять трафикhealth_check
- параметры проверки "живости" бэкэндаinstances
- описание, какие бэкэнды будут подключены к этому ELB. Тут интересно то, что бэкэнды можно указать через ссылку на уже существующий ресурс Terraform'a
Теперь можно добавить вывод параметров ELB в тот же файл:
output "elb_instances" {
value = ["${aws_elb.elb.instances}"]
}
output "elb_public_dns_name" {
value = ["${aws_elb.elb.dns_name}"]
}
Это позволит нам видеть, какие инстансы добавлены в Load Balancer и по какому DNS имени он доступен.
Думаю, что принцип работы с Terraform понятен. Он действительно не сложен и разобраться можно достаточно быстро.
В качестве домашнего задания оставляю вам поднятие RDS и создание и управление баккетами в S3. :)
Удачи и спасибо за то, что прочитали.
Комментарии: