Как работает зона доступности Aws ecs fargate?

Два основных вопроса с кодом terraform.

  1. Альбом для Ecs fargate предназначен для маршрутизации в другие зоны доступности? или маршрутизация в контейнеры
  2. Если я создаю подсеть на основе номера зоны доступности (us-east-2a, 2b, 2c, поэтому число равно 3 и создаю 3 подсети) и сопоставляю ее с кластером ecs с помощью alb, применяется ли зона доступности?

Я пытаюсь создать инфраструктуру, как показано на изображении  введите описание изображения здесь

resource "aws_vpc" "cluster_vpc" {
  tags = {
    Name = "ecs-vpc"
  }
  cidr_block = "10.30.0.0/16"
}

data "aws_availability_zones" "available" {

}

resource "aws_subnet" "cluster" {
  vpc_id            = aws_vpc.cluster_vpc.id
  count             = length(data.aws_availability_zones.available.names)
  cidr_block        = "10.30.${10 + count.index}.0/24"
  availability_zone = data.aws_availability_zones.available.names[count.index]
  tags = {
    Name = "ecs-subnet"
  }
}


resource "aws_internet_gateway" "cluster_igw" {
  vpc_id = aws_vpc.cluster_vpc.id

  tags = {
    Name = "ecs-igw"
  }
}

resource "aws_route_table" "public_route" {
  vpc_id = aws_vpc.cluster_vpc.id
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.cluster_igw.id
  }

  tags = {
    Name = "ecs-route-table"
  }
}

resource "aws_route_table_association" "to-public" {
  count          = length(aws_subnet.cluster)
  subnet_id      = aws_subnet.cluster[count.index].id
  route_table_id = aws_route_table.public_route.id
}
resource "aws_ecs_cluster" "staging" {
  name = "service-ecs-cluster"
}

resource "aws_ecs_service" "staging" {
  name            = "staging"
  cluster         = aws_ecs_cluster.staging.id
  task_definition = aws_ecs_task_definition.service.arn
  desired_count   = 1
  launch_type     = "FARGATE"

  network_configuration {
    security_groups  = [aws_security_group.ecs_tasks.id]
    subnets          = aws_subnet.cluster[*].id
    assign_public_ip = true
  }

  load_balancer {
    target_group_arn = aws_lb_target_group.staging.arn
    container_name   = var.app_name
    container_port   = var.container_port
  }

resource "aws_lb" "staging" {
  name               = "alb"
  subnets            = aws_subnet.cluster[*].id
  load_balancer_type = "application"
  security_groups    = [aws_security_group.lb.id]

  access_logs {
    bucket  = aws_s3_bucket.log_storage.id
    prefix  = "frontend-alb"
    enabled = true
  }

  tags = {
    Environment = "staging"
    Application = var.app_name
  }
}

... omit like lb_target, or specific components

Есть ли проблемы с вашим кодом, или вы просто ищете ответы на два своих вопроса?   —  person KIM    schedule 30.12.2020

оба :) код работает хорошо, но я не уверен в своем коде, хотя он работает.   —  person KIM    schedule 30.12.2020

@Marcin, я намерен создать инфраструктуру с тремя зонами доступности, а также развернуть aws fargate в трех зонах доступности. но я думаю, что мой код просто создает три зоны доступности и не использую их   —  person KIM    schedule 30.12.2020

См. также:  S3-ковш. Произошла неизвестная ошибка: действие не применяется к каким-либо ресурсам в инструкции. Как создать политику s3-bucket?

Если кластер ALB и ECS используют одни и те же подсети (и кажется, что они взяты из кода Terraform), тогда он должен создать все, как показано на схеме.   —  person KIM    schedule 30.12.2020

@MarkoE, спасибо за ответ :) 1. если us-east-2a не работает, us-east-2b активируется автоматически, и alb будет направлять запросы на us-east-2b? 2. Это вызовет повышение тарифов? 3. aws fargate может сам маршрутизировать трафик? (если alb используется для маршрутизации зоны доступности, как aws направляет запросы маршрута?)   —  person KIM    schedule 30.12.2020

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. KIM

    Альбом для Ecs fargate предназначен для маршрутизации в другие зоны доступности? или маршрутизация в контейнеры

    Не совсем. Он должен предоставить единую фиксированную конечную точку (URL) для вашей службы ECS. ALB автоматически распределяет входящее соединение из Интернета по вашим сервисам ECS. Они могут находиться в одной или нескольких зонах доступности. В вашем случае это только 1 AZ, так как вы используете desired_count = 1. Это означает, что у вас будет только 1 сервис ECS в одной зоне доступности.

    Если я создаю подсеть на основе номера зоны доступности (us-east-2a, 2b, 2c, поэтому число равно 3 и создаю 3 подсети) и сопоставляю ее с кластером ecs с помощью alb, применяется ли зона доступности?

    Да, потому что ваш ALB включен для тех же подсетей, что и ваша служба ECS через aws_subnet.cluster[*].id. Но, как объяснялось в первом вопросе, у вас будет только 1 услуга в одной зоне доступности.

    Я намерен создать инфраструктуру с тремя зонами доступности, а также развернуть aws fargate в трех зонах доступности.

    Как объяснялось ранее, ваш desired_count = 1, поэтому у вас не будет услуг ECS в 3 зонах доступности.

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

    большой! если я увеличиваю желаемое_счет до 3 или применяю автоматическое масштабирование, работает АЗ? person KIM; 30.12.2020

    и. Приведет ли это к увеличению тарифов? Я немного сбит с толку, что если зона доступности работает, служба aws fargate должна активировать каждую зону доступности. это означает, что если у меня есть два AZ (us-east-2a, us-east-2b), также у меня есть два фаргейта ecs, верно? person KIM; 30.12.2020

    @KIM Да, 3 услуги ecs будут распределены по нескольким зонам доступности. Вы можете изменить desired_count на 3 и проверить детали ваших задач в вашем сервисе ECS. Вы можете подтвердить, в какие подсети они были помещены. person KIM; 30.12.2020

    @KIM Я не уверен, что вы имеете в виду во втором комментарии? Вы можете иметь столько сервисов ECS Fargate, сколько захотите. Вы можете разместить их все в одной зоне доступности или в нескольких зонах доступности. У вас может быть больше услуг, чем есть АЗ. person KIM; 30.12.2020

    несколько AZ могут использовать один фаргейт ecs? person KIM; 30.12.2020

    Я понимаю, что если одна зона доступности сломалась, другая зона доступности работает, и это может быть сделано с помощью ALB (потому что alb может направить ее в другую доступную зону), и каждая зона доступности дублирует AWS ECS Fargate. person KIM; 30.12.2020

    @KIM С точки зрения ALB, если вы включите ALB для всех зон доступности, то да, все они могут направлять трафик через все зоны доступности в одну службу ECS, поскольку ALB по умолчанию использует межзональную балансировку нагрузки. person KIM; 30.12.2020

    Позвольте нам продолжить это обсуждение в чате. person KIM; 30.12.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: