

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

In questa configurazione, viene eseguito AWS IoT Greengrass V2 come servizio systemd su un'istanza alla volta. Pacemaker gestisce la replica DRBD, il montaggio del file system e il servizio come risorse ordinate. AWS IoT Greengrass V2 Se l'istanza primaria fallisce, Pacemaker promuove il DRBD dell'istanza di standby a principale, monta il file system e si avvia. AWS IoT Greengrass V2

**Importante**  
[Prerequisiti e configurazione del cluster](pacemaker-tutorial-prerequisites.md)Completa tutti i passaggi prima di procedere.

**avvertimento**  
Esegui i seguenti comandi solo sull'istanza principale, se non diversamente specificato.

## Allega la risorsa DRBD
<a name="pacemaker-tutorial-setup1-drbd-resource"></a>

Verificate che Pacemaker sia in funzione prima di procedere.

```
sudo systemctl status pacemaker
```

Disabilita STONITH prima di creare qualsiasi risorsa. Senza un dispositivo di recinzione configurato, Pacemaker rifiuterà di avviare le risorse se STONITH è abilitato (impostazione predefinita).

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

**avvertimento**  
STONITH è disabilitato qui per semplificare questo tutorial. In un ambiente di produzione, è necessario abilitare STONITH e configurare un agente di fencing (ad esempio, per le istanze Amazon EC2) `fence_aws` per prevenire lo split-brain e il danneggiamento dei dati.

Smonta il dispositivo DRBD sull'istanza principale e disattiva DRBD su tutte le istanze in modo che Pacemaker abbia un controllo completo del ciclo di vita DRBD.

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

# On all instances
sudo drbdadm down greengrass
```

Crea la risorsa DRBD in 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
```

Configura la risorsa come promuovibile in modo che solo un'istanza sia principale alla volta. Imposta `clone-max` il numero di istanze nel cluster.

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

## Allega la risorsa del filesystem
<a name="pacemaker-tutorial-setup1-fs-resource"></a>

Tutte le AWS IoT Greengrass V2 risorse sono archiviate in. `/greengrass/v2` Questo passaggio indica a Pacemaker di montare il dispositivo DRBD in quel percorso sull'istanza promossa. Ciò garantisce che la directory AWS IoT Greengrass V2 dei dati sia replicata e disponibile durante il failover.

Crea la risorsa del filesystem in uno stato disabilitato. La abiliterai dopo che tutti i vincoli saranno stati impostati.

```
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 le risorse
<a name="pacemaker-tutorial-setup1-verify-resources"></a>

Verifica che le risorse vengano create e propagate a tutte le istanze.

```
sudo pcs status
```

## Fornisci e allega il AWS IoT Greengrass V2 risorsa systemd
<a name="pacemaker-tutorial-setup1-greengrass-resource"></a>

1. **Fornitura AWS IoT Greengrass V2.** Poiché hai smontato il dispositivo DRBD in precedenza, abilita la modalità di manutenzione e rimontalo per il provisioning:

   ```
   # 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
   ```

   Esegui il provisioning AWS IoT Greengrass V2 sull'istanza principale utilizzando il provisioning automatico. Segui le istruzioni riportate in [Installa il software AWSAWS IoTAWS IoT Greengrass V2 Core con il provisioning automatico delle risorse](https://docs.aws.amazon.com/greengrass/v2/developerguide/quick-installation.html).

   Assicuratevi che AWS IoT Greengrass V2 sia installato nella `/greengrass/v2` directory (il DRBD-mounted percorso). Dopo il provisioning, smonta il dispositivo e disabilita la modalità di manutenzione:

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

1. **Disabilita il AWS IoT Greengrass V2 servizio** in modo che Pacemaker possa gestirlo al posto di systemd.

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

1. **Installa i prerequisiti di runtime su tutte le istanze di standby.** AWS IoT Greengrass V2 richiede Java e altre dipendenze che il provisioner automatico installa all'esterno della directory. DRBD-replicated Installa la stessa versione di JDK su ogni istanza di standby. Consulta [AWS IoT Greengrass V2 i requisiti](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html) per l'elenco completo dei prerequisiti.

1. **Crea il file di unità systemd su altre istanze.** Copia il file di unità AWS IoT Greengrass V2 systemd nelle istanze di standby in modo che Pacemaker possa avviare il servizio su qualsiasi istanza durante il failover.

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

   Copia quel file nello stesso percorso su ogni altra istanza. Quindi ricaricate systemd su ogni istanza di standby in modo che riconosca il nuovo file di unità.

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

1. **Allega la risorsa. AWS IoT Greengrass V2 **

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

## Crea vincoli di risorse
<a name="pacemaker-tutorial-setup1-constraints"></a>

Crea un ordinamento dei vincoli in modo che Pacemaker gestisca le risorse nell'ordine corretto durante il failover.

```
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
```

Abilita le risorse ora che sono stati impostati i vincoli.

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

Verifica lo stato finale dei vincoli relativi alle risorse.

```
sudo pcs constraint show
```

L'output dovrebbe mostrare i seguenti vincoli:
+ **Vincoli di posizione**: il gruppo di `greengrass-group` risorse preferisce l'istanza principale.
+ **Vincoli di colocation**: viene eseguito con il programma promosso e `fs_greengrass` viene eseguito con. `drbd-greengrass-clone` `greengrass` `fs_greengrass`
+ **Vincoli d'ordine**: DRBD viene promosso prima dell'avvio del filesystem e il filesystem prima. AWS IoT Greengrass V2

## Verifica il failover
<a name="pacemaker-tutorial-setup1-failover"></a>

Simula un failover per verificare che la configurazione funzioni.

1. **Controllate lo stato iniziale.** Verifica che AWS IoT Greengrass V2 sia in esecuzione sull'istanza principale.

   ```
   sudo pcs status
   ```

1. **Simula l'errore dell'istanza primaria.** Metti il nodo primario in modalità standby per attivare la migrazione delle risorse.

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

1. **Verifica il failover.** Nell'istanza di standby, controlla lo stato del cluster. Il DRBD, il filesystem e AWS IoT Greengrass V2 le risorse dovrebbero ora essere in esecuzione sull'istanza di standby.

   ```
   sudo pcs status
   ```

1. **Recupera l'istanza fallita.**

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

   Quando il nodo viene riportato online, si ricongiunge al cluster come istanza di standby. L'istanza promossa durante il failover rimane l'istanza principale.

**Risoluzione dei problemi**  
Se le risorse entrano in uno stato di errore, è possibile pulirle e riavviarle con il seguente comando.  

```
sudo pcs resource cleanup
```