Вопросы

Как работает зона доступности 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

Если кластер 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

Похожие записи

Невозможно создать событие для локальных объектов в гибридной среде с помощью Graph API

admin

Как записывать сообщения в концентратор событий Azure из службы управления API Azure

admin

Почему / usr / lib64 не находится в местоположении ld.so по умолчанию?

admin

Как использовать clang с заголовками mingw-w64 в Windows

admin

Альтернативы положительному просмотру назад REGEX при использовании JDE

admin

Динамически добавлять новые записи WTForms FieldList из пользовательского интерфейса

admin