Terraform присваивает эластичные IP-адреса экземплярам группы с автоматическим масштабированием

Я использую Terraform уже несколько дней и ищу совета. У меня две подсети под vpc (приватная, публичная). Я пытаюсь назначить эластичные IP-адреса каждому экземпляру, создаваемому группой автоматического масштабирования, или удалить эластичный IP-адрес при уничтожении экземпляра. Я пытался перейти по этой ссылке: Автоматически назначать общедоступные IP-адреса моему экземпляру, созданному группой austo-scaling

Итак, я создал эластичный балансировщик нагрузки, прослушивающий порт 80, и назначил его группе автоматического масштабирования и общедоступной подсети. Я просмотрел документацию AWS по эластичной балансировке нагрузки здесь: https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html и другие, предоставляемые AWS, поэтому я может просто неправильно думать о проблеме. Я не уверен, как назначить экземплярам EC2 группы автоматического масштабирования общедоступной подсети эластичный IP-адрес, поэтому единственное, о чем я могу думать, - это автоматически обрабатывать его через эластичный балансировщик нагрузки?

Первое решение, о котором я подумал (даже не уверен, смогу ли я это сделать, не являясь экземпляром EC2), а второе - из инструкций в первой ссылке

  1. Назначьте эластичный IP-адрес эластичному балансировщику нагрузки вместо экземпляров EC2, затем укажите DNS-запись на этот эластичный IP-адрес, а затем позвольте балансировщику нагрузки обработать все остальное.
  2. Сделайте запись DNS, чтобы указать на DNS балансировщика нагрузки

Если второй вариант верен, я попробую еще раз, и мой .tf должен быть неверным. Однако, если есть какие-то лучшие варианты, я хотел бы услышать любые предложения, которые люди использовали!

Любые руководства, документы или рекомендации были бы замечательными!


person Greg Miller    schedule 22.05.2018    source источник
comment
Есть ли конкретная причина для эластичного IP-адреса и отказа от использования ELB DNS?   -  person krishna_mee2004    schedule 22.05.2018
comment
Не уверен, что вы имеете в виду, я, должно быть, пропустил это. Это похоже на docs.aws. amazon.com/elasticloadbalancing/latest/classic/ в первом абзаце и просто используете это для распределения трафика между экземплярами?   -  person Greg Miller    schedule 22.05.2018


Ответы (1)


Второй вариант правильный. Вам необходимо указать свою DNS-запись на балансировщик нагрузки. В terraform, который выглядит примерно так (ваш ресурс ELB или ALB будет отличаться):

# Set up the load balancer
resource "aws_alb" "example" {
  name            = "example"
  internal        = false
  security_groups = ["${aws_security_group.example.id}"]
  subnets         = ["${data.aws_subnet_ids.example.ids}"]
}

# Get the zone id for the zone you are setting this in
data "aws_route53_zone" "example" {
  name         = "example.com"
  private_zone = false
}

# Set the record, replace <your dns name> with the name you want to use
resource "aws_route53_record" "build" {
  provider = "aws"
  zone_id  = "${data.aws_route53_zone.example.zone_id}"
  name     = "<your dns name>"
  type     = "A"

  alias {
    name                   = "${aws_alb.example.dns_name}"
    zone_id                = "${aws_alb.eaxmple.zone_id}"
    evaluate_target_health = false
  }
}
person Brandon Miller    schedule 22.05.2018