

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.

# Active/passive AWS IoT Greengrass V2 servicio
<a name="pacemaker-tutorial-setup1"></a>

En esta configuración, se ejecuta AWS IoT Greengrass V2 como un servicio de systemd en una instancia a la vez. Pacemaker gestiona la replicación del DRBD, el montaje del sistema de archivos y AWS IoT Greengrass V2 el servicio como recursos solicitados. Si la instancia principal falla, Pacemaker convierte el DRBD de la instancia en espera a principal, monta el sistema de archivos y se inicia. AWS IoT Greengrass V2

**importante**  
Complete todos los pasos antes de continuar. [Requisitos previos y configuración del clúster](pacemaker-tutorial-prerequisites.md)

**aviso**  
Ejecute los siguientes comandos solo en la instancia principal, a menos que se indique lo contrario.

## Adjunta el recurso DRBD
<a name="pacemaker-tutorial-setup1-drbd-resource"></a>

Compruebe que el marcapasos esté funcionando antes de continuar.

```
sudo systemctl status pacemaker
```

Deshabilite STONITH antes de crear cualquier recurso. Sin un dispositivo de protección configurado, Pacemaker se negará a iniciar los recursos si STONITH está activado (opción predeterminada).

```
sudo pcs property set stonith-enabled=false
```

**aviso**  
STONITH está deshabilitado aquí para simplificar este tutorial. En un entorno de producción, debe habilitar STONITH y configurar un agente de control (por ejemplo, para las instancias de Amazon EC2) `fence_aws` para evitar la división de cerebros y la corrupción de los datos.

Desmonte el dispositivo DRBD en la instancia principal y desactive el DRBD en todas las instancias para que Pacemaker tenga un control total del ciclo de vida del DRBD.

```
# On the primary instance only
sudo umount /greengrass/v2

# On all instances
sudo drbdadm down greengrass
```

Cree el recurso DRBD en Pacemaker.

```
sudo pcs resource create drbd-greengrass \
  ocf:linbit:drbd drbd_resource=greengrass \
  op monitor interval=15s role=Promoted \
  op monitor interval=30s role=Unpromoted
```

Configure el recurso como promocionable para que solo una instancia sea principal a la vez. `clone-max`Establézcalo en el número de instancias de tu clúster.

```
sudo pcs resource promotable drbd-greengrass \
  promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
```

## Adjunta el recurso del sistema de archivos
<a name="pacemaker-tutorial-setup1-fs-resource"></a>

Todos los AWS IoT Greengrass V2 recursos se almacenan en. `/greengrass/v2` Este paso indica a Pacemaker que monte el dispositivo DRBD en esa ruta de la instancia promocionada. Esto garantiza que el directorio de AWS IoT Greengrass V2 datos esté replicado y disponible durante la conmutación por error.

Cree el recurso del sistema de archivos en un estado desactivado. Lo activará una vez que se hayan establecido todas las restricciones.

```
sudo pcs resource create fs_greengrass Filesystem \
    device="/dev/drbd0" \
    directory="/greengrass/v2" \
    fstype="ext4" \
    op start timeout=15s \
    op stop timeout=15s \
    --disabled
```

## Verifica los recursos
<a name="pacemaker-tutorial-setup1-verify-resources"></a>

Compruebe que los recursos se crean y se propagan a todas las instancias.

```
sudo pcs status
```

## Aprovisione y adjunte el AWS IoT Greengrass V2 recurso systemd
<a name="pacemaker-tutorial-setup1-greengrass-resource"></a>

1. **Provisión AWS IoT Greengrass V2.** Como desmontó el dispositivo DRBD antes, habilite el modo de mantenimiento y vuelva a montarlo para el aprovisionamiento:

   ```
   # Enable maintenance mode to prevent Pacemaker from interfering
   sudo pcs property set maintenance-mode=true
   
   # Check which node Pacemaker promoted to Primary
   sudo pcs status | grep drbd-greengrass
   
   # On the Promoted node, mount the DRBD device
   sudo mount /dev/drbd0 /greengrass/v2
   ```

   Aprovisione AWS IoT Greengrass V2 en la instancia principal mediante el aprovisionamiento automático. Siga las instrucciones que se indican en [Instalar el software AWSAWS IoTAWS IoT Greengrass V2 principal con aprovisionamiento automático de recursos](https://docs.aws.amazon.com/greengrass/v2/developerguide/quick-installation.html).

   Asegúrese de que AWS IoT Greengrass V2 esté instalado en el `/greengrass/v2` directorio (la DRBD-mounted ruta). Tras el aprovisionamiento, desmonte el dispositivo e inhabilite el modo de mantenimiento:

   ```
   sudo umount /greengrass/v2
   sudo pcs property set maintenance-mode=false
   ```

1. **Desactive el AWS IoT Greengrass V2 servicio** para que Pacemaker pueda gestionarlo en lugar de systemd.

   ```
   sudo systemctl disable greengrass
   sudo systemctl stop greengrass
   ```

1. **Instale los requisitos de tiempo de ejecución en todas las instancias en espera.** AWS IoT Greengrass V2 requiere Java y otras dependencias que el aprovisionador automático instale fuera del directorio. DRBD-replicated Instale la misma versión de JDK en cada instancia en espera. Consulte [AWS IoT Greengrass V2 los requisitos](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html) para ver la lista completa de requisitos previos.

1. **Cree el archivo de unidad systemd en otras instancias.** Copie el archivo de la unidad AWS IoT Greengrass V2 systemd en las instancias en espera para que Pacemaker pueda iniciar el servicio en cualquier instancia durante la conmutación por error.

   ```
   # On the primary instance, view the unit file location
   systemctl show -p FragmentPath greengrass
   ```

   Copie ese archivo en la misma ruta en cada una de las demás instancias. A continuación, vuelva a cargar systemd en cada instancia en espera para que reconozca el nuevo archivo de la unidad.

   ```
   # On each standby instance
   sudo systemctl daemon-reload
   ```

1. **Adjunte el recurso AWS IoT Greengrass V2 .**

   ```
   sudo pcs resource create greengrass systemd:greengrass \
     op monitor interval=10s \
     op start timeout=60s \
     op stop timeout=60s \
     --disabled
   ```

## Cree restricciones de recursos
<a name="pacemaker-tutorial-setup1-constraints"></a>

Cree un orden de restricciones para que Pacemaker gestione los recursos en el orden correcto durante la conmutación por error.

```
sudo pcs constraint order promote drbd-greengrass-clone then start fs_greengrass
sudo pcs constraint colocation add fs_greengrass with Promoted drbd-greengrass-clone score=INFINITY
sudo pcs resource group add greengrass-group fs_greengrass greengrass
sudo pcs constraint location greengrass-group prefers {{instance1}}=200
```

Habilite los recursos ahora que existen las restricciones.

```
sudo pcs resource enable fs_greengrass
sudo pcs resource enable greengrass
```

Compruebe el estado final de las restricciones de recursos.

```
sudo pcs constraint show
```

El resultado debe mostrar las siguientes restricciones:
+ **Restricciones de ubicación**: el grupo de `greengrass-group` recursos prefiere la instancia principal.
+ **Restricciones** de colocación: `fs_greengrass` se ejecuta con la promocionada `drbd-greengrass-clone` y `greengrass` se ejecuta con`fs_greengrass`.
+ **Restricciones de orden**: DRBD se activa antes de que se inicie el sistema de archivos y el sistema de archivos se inicie antes. AWS IoT Greengrass V2

## Compruebe la conmutación por error
<a name="pacemaker-tutorial-setup1-failover"></a>

Simule una conmutación por error para comprobar que la configuración funciona.

1. **Compruebe el estado inicial.** Compruebe que AWS IoT Greengrass V2 se esté ejecutando en la instancia principal.

   ```
   sudo pcs status
   ```

1. **Simule el error de la instancia principal.** Coloque el nodo principal en modo de espera para activar la migración de recursos.

   ```
   sudo pcs node standby {{primary-node-name}}
   ```

1. **Verifique la conmutación por error.** En la instancia en espera, compruebe el estado del clúster. El DRBD, el sistema de archivos y AWS IoT Greengrass V2 los recursos deberían estar ejecutándose ahora en la instancia en espera.

   ```
   sudo pcs status
   ```

1. **Recupera la instancia fallida.**

   ```
   sudo pcs node unstandby {{primary-node-name}}
   ```

   Cuando el nodo vuelve a estar en línea, vuelve a unirse al clúster como instancia en espera. La instancia que se promovió durante la conmutación por error sigue siendo la instancia principal.

**Resolución de problemas**  
Si los recursos entran en un estado fallido, puedes limpiarlos y reiniciarlos con el siguiente comando.  

```
sudo pcs resource cleanup
```