

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# アクティブ/パッシブ AWS IoT Greengrass V2 サービス
<a name="pacemaker-tutorial-setup1"></a>

この設定では、一度に 1 つのインスタンスで systemd サービス AWS IoT Greengrass V2 として を実行します。Pacemaker は、DRBD レプリケーション、ファイルシステムマウント、 AWS IoT Greengrass V2 サービスを順序付けられたリソースとして管理します。プライマリインスタンスが失敗した場合、Pacemaker はスタンバイインスタンスの DRBD をプライマリに昇格させ、ファイルシステムをマウントして起動します AWS IoT Greengrass V2。

**重要**  
先に進む[前提条件とクラスターのセットアップ](pacemaker-tutorial-prerequisites.md)前に、「」のすべてのステップを完了してください。

**警告**  
特に明記されていない限り、プライマリインスタンスでのみ次のコマンドを実行します。

## DRBD リソースをアタッチする
<a name="pacemaker-tutorial-setup1-drbd-resource"></a>

先に進む前に、Pacemaker が実行されていることを確認します。

```
sudo systemctl status pacemaker
```

リソースを作成する前に STONITH を無効にします。フェンシングデバイスが設定されていない場合、STONITH が有効になっている場合 (デフォルト）、Pacemaker はリソースの起動を拒否します。

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

**警告**  
STONITH は、このチュートリアルを簡素化するためにここでは無効になっています。本番環境では、STONITH を有効にし、分割ブレインやデータの破損を防ぐためにフェンシングエージェント (`fence_aws`Amazon EC2 インスタンスなど) を設定する必要があります。

プライマリインスタンスで DRBD デバイスをアンマウントし、すべてのインスタンスで DRBD をダウンして、Pacemaker が DRBD ライフサイクルをクリーンに制御できるようにします。

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

# On all instances
sudo drbdadm down greengrass
```

Pacemaker で DRBD リソースを作成します。

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

一度に 1 つのインスタンスのみがプライマリになるように、リソースを昇格可能として設定します。クラスター内のインスタンス数`clone-max`に設定します。

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

## ファイルシステムリソースをアタッチする
<a name="pacemaker-tutorial-setup1-fs-resource"></a>

すべての AWS IoT Greengrass V2 リソースは に保存されます`/greengrass/v2`。このステップでは、昇格されたインスタンスのそのパスに DRBD デバイスをマウントするように Pacemaker に指示します。これにより、フェイルオーバー中に AWS IoT Greengrass V2 データディレクトリがレプリケートされ、使用可能になります。

ファイルシステムリソースを無効な状態で作成します。すべての制約が設定された後で有効にします。

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

## リソースの検証
<a name="pacemaker-tutorial-setup1-verify-resources"></a>

リソースが作成され、すべてのインスタンスに伝達されていることを確認します。

```
sudo pcs status
```

## AWS IoT Greengrass V2 systemd リソースのプロビジョニングとアタッチ
<a name="pacemaker-tutorial-setup1-greengrass-resource"></a>

1. **プロビジョニング AWS IoT Greengrass V2。**以前に DRBD デバイスをアンマウントしたため、メンテナンスモードを有効にし、プロビジョニング用に再マウントします。

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

   自動プロビジョニングを使用してプライマリインスタンス AWS IoT Greengrass V2 でプロビジョニングします。[「自動リソースプロビジョニングを使用して AWSAWS IoTAWS IoT Greengrass V2 Core ソフトウェアをインストールする](https://docs.aws.amazon.com/greengrass/v2/developerguide/quick-installation.html)」の手順に従います。

    AWS IoT Greengrass V2 が `/greengrass/v2` ディレクトリ (DRBD マウントパス) にインストールされていることを確認します。プロビジョニング後、デバイスをアンマウントし、メンテナンスモードを無効にします。

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

1. ** AWS IoT Greengrass V2 サービスを無効に**して、Pacemaker が systemd の代わりに管理できるようにします。

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

1. **すべてのスタンバイインスタンスにランタイムの前提条件をインストールします。** AWS IoT Greengrass V2 には、自動プロビジョナーが DRBD レプリケートディレクトリの外部にインストールする Java およびその他の依存関係が必要です。各スタンバイインスタンスに同じ JDK バージョンをインストールします。前提条件の完全なリストについては、「 [AWS IoT Greengrass V2 の要件](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html)」を参照してください。

1. **他のインスタンスに systemd unit ファイルを作成します。** AWS IoT Greengrass V2 systemd unit ファイルをスタンバイインスタンスにコピーして、Pacemaker がフェイルオーバー中に任意のインスタンスでサービスを開始できるようにします。

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

   そのファイルを他のインスタンスで同じパスにコピーします。次に、新しいユニットファイルを認識するように、各スタンバイインスタンスに systemd を再ロードします。

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

1. ** AWS IoT Greengrass V2 リソースをアタッチします。**

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

## リソース制約を作成する
<a name="pacemaker-tutorial-setup1-constraints"></a>

Pacemaker がフェイルオーバー中に正しい順序でリソースを管理するように、制約の順序を作成します。

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

制約が設定されるようにリソースを有効にします。

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

リソース制約の最終状態を確認します。

```
sudo pcs constraint show
```

出力には、次の制約が表示されます。
+ **Location Constraints** – `greengrass-group`リソースグループはプライマリインスタンスを優先します。
+ **コロケーション制約 – **昇格された で`fs_greengrass`実行され`drbd-greengrass-clone`、 で`greengrass`実行されます`fs_greengrass`。
+ **順序の制約** – DRBD はファイルシステムの起動前に昇格し、ファイルシステムの起動前に昇格します AWS IoT Greengrass V2。

## フェイルオーバーを検証する
<a name="pacemaker-tutorial-setup1-failover"></a>

フェイルオーバーをシミュレートして、セットアップが機能することを確認します。

1. **初期状態を確認します。** AWS IoT Greengrass V2 がプライマリインスタンスで実行されていることを確認します。

   ```
   sudo pcs status
   ```

1. **プライマリインスタンスの障害をシミュレートします。**プライマリノードをスタンバイモードにして、リソースの移行をトリガーします。

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

1. **フェイルオーバーを確認します。**スタンバイインスタンスで、クラスターのステータスを確認します。DRBD、ファイルシステム、 AWS IoT Greengrass V2 リソースがスタンバイインスタンスで実行されているはずです。

   ```
   sudo pcs status
   ```

1. **障害が発生したインスタンスを復旧します。**

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

   ノードをオンラインに戻すと、クラスターはスタンバイインスタンスとして再結合されます。フェイルオーバー中に昇格されたインスタンスは、プライマリインスタンスのままです。

**トラブルシューティング**  
リソースが失敗状態になった場合は、次のコマンドを使用してリソースをクリーンアップして再起動できます。  

```
sudo pcs resource cleanup
```