View a markdown version of this page

Requisitos previos y configuración del clúster - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Requisitos previos y configuración del clúster

En esta sección, configurará la infraestructura para el tutorial de alta disponibilidad. Cree un grupo de seguridad, cree un key pair, lance instancias de Amazon EC2, instale Pacemaker y DRBD, cree un clúster y configure la replicación a nivel de bloque entre instancias.

Cree y configure un grupo de seguridad

Cree un grupo de seguridad que permita todo el tráfico entre las instancias del clúster. En este tutorial, debe abrir todos los puertos para simplificar la configuración. Este paso requiere una VPC. Si no tiene una, consulte Crear una VPC.

Consola
  • Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  • En el panel de navegación, elija Grupos de seguridad y, a continuación, elija Crear grupo de seguridad.

  • Introduzca un nombre (por ejemplopacemaker-cluster-sg) y una descripción.

  • Seleccione la VPC.

  • Elija Creación de grupo de seguridad.

  • Tras la creación, seleccione el nuevo grupo de seguridad y edite sus reglas de entrada. Seleccione Agregar regla. Defina Tipo en Todo el tráfico y Origen en el identificador propio del grupo de seguridad. Esto permite todo el tráfico entre las instancias de este grupo de seguridad.

  • Agregue una segunda regla de entrada para el acceso SSH. Defina Tipo en SSH y Fuente en Mi IP.

AWS Command Line Interface
  • Cree el grupo de seguridad.

    aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-id your-vpc-id

    Anote lo que GroupId aparece en el resultado (por ejemplo,sg-0123456789abcdef0).

  • Agrega una regla de entrada para permitir todo el tráfico procedente de instancias del mismo grupo de seguridad.

    aws ec2 authorize-security-group-ingress \ --group-id security-group-id \ --protocol all \ --source-group security-group-id
  • Agrega una regla de entrada para permitir el acceso SSH desde tu dirección IP.

    aws ec2 authorize-security-group-ingress \ --group-id security-group-id \ --protocol tcp \ --port 22 \ --cidr your-ip/32

Crear un par de claves

Crea un par de claves para usarlo en el acceso SSH a todas las instancias. Usa el mismo par de claves para todas las instancias de este tutorial.

Consola
  • Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  • En el panel de navegación, elija Pares de claves y, a continuación, elija Crear par de claves.

  • Introduzca un nombre (por ejemplo,pacemaker-key).

  • Seleccione RSA como tipo de key pair y .pem como formato de archivo.

  • Elija Crear par de claves. El archivo de clave privada se descarga automáticamente.

aviso

Guarde el archivo de clave privada (.pem) en un lugar seguro. No puede volver a descargarlo. Necesitas este archivo para usar SSH en tus instancias.

AWS Command Line Interface
  • Cree el key pair.

    aws ec2 create-key-pair \ --key-name key-name \ --query 'KeyMaterial' \ --output text > pacemaker-key.pem
  • Establezca los permisos correctos en el archivo de clave privada.

    chmod 400 pacemaker-key.pem

Lance instancias EC2

Lance dos instancias Amazon EC2 de Ubuntu en el grupo de seguridad que creó. Un tipo de instancia pequeño (por ejemplo,t3.small) es suficiente para este tutorial.

Consola
  • Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  • Elija iniciar instancias.

  • Introduzca un nombre para la instancia (por ejemplo,pacemaker-instance-1).

  • En Imágenes de aplicaciones y sistemas operativos, busque Ubuntu y seleccione una AMI de servidor Ubuntu (por ejemplo, Ubuntu Server 24.04 LTS).

  • En Tipo de instancia, selecciona t3.small.

  • En Par de claves, seleccione la clave que creó anteriormente.

  • En Configuración de red, elija Editar, seleccione su VPC y una subred y, en Firewall (grupos de seguridad), elija Seleccionar grupo de seguridad existente y seleccione. pacemaker-cluster-sg

  • Seleccione Iniciar instancia.

  • Repita este procedimiento para cada instancia adicional (por ejemplo,pacemaker-instance-2). Asegúrese de que todas las instancias estén en la misma VPC y grupo de seguridad.

AWS Command Line Interface
  • Lance una instancia.

    aws ec2 run-instances \ --image-id ubuntu-ami-id \ --instance-type t3.small \ --key-name key-name \ --security-group-ids security-group-id \ --subnet-id subnet-id \ --count 1 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=pacemaker-instance-1}]'

    Repita este procedimiento Value=pacemaker-instance-2 para la segunda instancia.

Necesita la dirección IP privada de cada instancia para configurar el clúster.

  • Consola: en la consola Amazon EC2, seleccione una instancia y busque la dirección IPv4 privada en la pestaña Detalles.

  • AWS Command Line Interface:

    aws ec2 describe-instances \ --filters "Name=tag:Name,Values=pacemaker-instance-*" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name'].Value|[0],PrivateIpAddress]" \ --output table

Instale las utilidades Pacemaker

Utilice SSH en cada instancia e instale las utilidades de Pacemaker.

ssh -i pacemaker-key.pem ubuntu@instance-public-ip
sudo apt update sudo apt install -y pacemaker pcs resource-agents-extra resource-agents-common resource-agents-base

Configure la comunicación de red

  1. Pruebe la comunicación entre instancias. En la instancia de destino, ejecuta el siguiente comando para detectar los pings de la instancia de origen.

    sudo tcpdump host source-instance-private-ip

    En la instancia de origen, ejecuta el siguiente comando para hacer ping a la instancia de destino.

    ping -c 4 destination-instance-private-ip

    Deberías ver las respuestas de ping en ambos lados. De lo contrario, compruebe que su grupo de seguridad permita todo el tráfico entre instancias.

  2. Inhabilite la administración de nombres de host inicializada en la nube. En las instancias Amazon EC2 de Ubuntu, cloud-init puede revertir el nombre de host y los cambios al reiniciar. /etc/hosts Ejecute esto en cada instancia para evitarlo.

    sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF'
  3. Establezca el nombre de host en cada instancia. Pacemaker usa nombres de host para identificar las instancias del clúster.

    En la instancia 1:

    sudo hostnamectl set-hostname instance1

    En la instancia 2:

    sudo hostnamectl set-hostname instance2
  4. Configurar/etc/hosts. En cada instancia, añada los pares de IP privada y nombre de host a. /etc/hosts Esto permite que las instancias se resuelvan entre sí por nombre de host.

    sudo tee -a /etc/hosts <<EOF instance1-private-ip instance1 instance2-private-ip instance2 EOF

Cree el clúster Pacemaker

  1. Inicie el daemon pcs en cada instancia.

    sudo systemctl enable pcsd.service sudo systemctl start pcsd.service
  2. Establece la contraseña del hacluster. El hacluster usuario es una cuenta de sistema que se crea automáticamente al instalar el pcs paquete. Pacemaker usa esta cuenta para la autenticación de clústeres entre instancias. Establezca la misma contraseña en cada instancia.

    sudo passwd hacluster
  3. Autoriza los hosts de PC. Autorice las instancias del clúster entre sí. Ejecuta esto en cada instancia.

    sudo pcs host auth instance1 instance2

    Se le solicitará el hacluster nombre de usuario y la contraseña.

  4. Configure el clúster. Ejecute este comando solo en una instancia. La --force marca destruye cualquier clúster existente en el dispositivo.

    sudo pcs cluster setup my-gg-cluster instance1 instance2 --force
  5. Inicie el clúster. Ejecute este comando solo en una instancia.

    sudo pcs cluster start --all sudo pcs cluster enable --all
  6. Compruebe el estado del clúster en cualquiera de las instancias.

    sudo pcs status

Configure DRBD

El DRBD (dispositivo de bloques replicados distribuidos) es un módulo del núcleo de Linux que replica los dispositivos de almacenamiento entre instancias en tiempo real. Funciona a nivel de dispositivo de bloques (el nivel del disco sin procesar por debajo del sistema de archivos), por lo que todos los datos escritos en el disco en una instancia se reflejan en la otra. Esto garantiza que, si la instancia principal falla, la instancia en espera tenga una copia idéntica de los datos.

  1. Cree y adjunte volúmenes de EBS. Cree un volumen de EBS para cada instancia. El volumen debe estar en la misma zona de disponibilidad que la instancia.

    Consola
    • Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

    • En el panel de navegación, selecciona Volúmenes y, a continuación, selecciona Crear volumen.

    • Defina el tipo de volumen en gp3, el tamaño en 8 GiB y la zona de disponibilidad en la misma zona que la instancia.

    • Seleccione Create volume (Crear volumen).

    • Seleccione el nuevo volumen, elija Acciones > Adjuntar volumen, seleccione la instancia de destino, establezca el nombre del dispositivo en y elija Adjuntar volumen. /dev/xvdbz

    • Repite el procedimiento para cada instancia.

    AWS Command Line Interface
    • Cree un volumen en la misma zona de disponibilidad que su instancia.

      aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zone instance-availability-zone

      Anote lo que VolumeId aparece en el resultado.

    • Adjunta el volumen a una instancia.

      aws ec2 attach-volume \ --volume-id volume-id \ --instance-id instance-id \ --device /dev/xvdbz

      Repita el procedimiento para cada instancia.

  2. Compruebe el volumen. Utilice SSH en cada instancia y compruebe que el volumen esté conectado mediante una lista de los dispositivos bloqueados.

    lsblk

    En tipos de Nitro-based instancias comot3.small, por ejemplo, el volumen aparece como un dispositivo NVMe (por ejemplo/dev/nvme1n1) en lugar de. /dev/xvdbz lsblkUtilícelo para identificar el nombre real del dispositivo y utilícelo en la configuración de DRBD.

  3. Instale las utilidades de DRBD en cada instancia.

    sudo apt install -y drbd-utils
  4. Configure el recurso DRBD. Cree el directorio y el archivo de configuración de recursos del DRBD en ambas instancias.

    sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.res

    Agregue la siguiente configuración. Sustituya los nombres de host y las direcciones IP por sus valores.

    resource greengrass { protocol C; on instance1 { device /dev/drbd0; disk /dev/instance1-device-name; address instance1-private-ip:7788; meta-disk internal; } on instance2 { device /dev/drbd0; disk /dev/instance2-device-name; address instance2-private-ip:7788; meta-disk internal; } }
  5. Cree e inicie el recurso DRBD. Ejecute en ambas instancias.

    sudo drbdadm create-md greengrass sudo drbdadm up greengrass

    Compruebe lsblk que drbd0 aparece debajo de su dispositivo de volumen EBS (por ejemplo, xvdbz onvme1n1).

  6. Configure la instancia principal. Ejecuta los siguientes comandos en la instancia 1 solo para forzarla a ser principal y esperar a que se sincronice.

    sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm status

    Espere hasta que se muestre UpToDate el estado del disco en ambas instancias. Una vez sincronizadas, todas las demás instancias se convierten en instancias en espera.

  7. Formatee y monte el dispositivo DRBD.

    Solo en la instancia principal, formatee el dispositivo DRBD:

    sudo mkfs.ext4 /dev/drbd0

    En todas las instancias, cree el directorio de montaje:

    sudo mkdir -p /greengrass/v2

    Solo en la instancia principal, monte el dispositivo DRBD:

    sudo mount /dev/drbd0 /greengrass/v2
  8. Verifica el estado de sincronización del DRBD.

    sudo drbdadm status mount | grep 'drbd'