Что такое кластер в облачном контексте (на примере AWS)?

«Что такое кластер в облачном контексте (на примере AWS)?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В облаке AWS кластер — это группа связанных вычислительных ресурсов (серверов, инстансов), которые работают вместе как единая система для выполнения общей задачи. Управление кластером часто делегируется сервису AWS.

Основные примеры кластерных сервисов в AWS:

  1. Amazon ECS/EKS (Кластеры контейнеров):

    • ECS (Elastic Container Service): Управляемый сервис для запуска Docker-контейнеров. Вы создаёте кластер ECS, который представляет собой логическую группировку EC2-инстансов или использует бессерверный режим Fargate.
      # Terraform: Создание ECS-кластера
      resource "aws_ecs_cluster" "main" {
      name = "my-app-cluster"
      setting {
      name  = "containerInsights"
      value = "enabled"
      }
      }
  2. Amazon RDS (Кластеры баз данных):

    • RDS Multi-AZ: Кластер из первичной и standby-реплики в разных зонах доступности для повышения отказоустойчивости.
    • Aurora: Использует кластерную архитектуру «под капотом», где данные реплицируются на 6 реплик в 3 AZ.
  3. AWS Elastic Beanstalk: Создаёт автоматически масштабируемый кластер из EC2-инстансов под ваше приложение.

  4. Самодельные кластеры на EC2: Например, кластер для Hadoop, Spark или базы данных (например, PostgreSQL с репликацией). Управление таким кластером (установка ПО, оркестрация) ложится на вас.

    # Пример пользовательских данных для настройки ноды в кластере
    #!/bin/bash
    yum install -y amazon-efs-utils
    mount -t efs fs-12345678:/ /mnt/shared-storage
    # ... настройка софта кластера (например, Consul, Nomad)

Зачем нужны кластеры в DevOps? Они обеспечивают масштабируемость (добавление нод), высокую доступность (распределение по AZ) и отказоустойчивость (автоматический перезапуск задач). Инфраструктура как код (Terraform, CloudFormation) используется для декларативного описания и развёртывания таких кластеров.