

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

# アクティブ/パッシブロードバランサー
<a name="pacemaker-tutorial-setup2"></a>

この設定では、一度に 1 つのインスタンスで HAProxy をロードバランサーとして実行します。HAProxy 設定ファイルは DRBD レプリケートストレージに保存されるため、Pacemaker がスタンバイインスタンスにフェイルオーバーすると、設定はすぐに使用できます。

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

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

## すべてのインスタンスに HAProxy をインストールする
<a name="pacemaker-tutorial-setup2-install-haproxy"></a>

HAProxy をインストールし、サービスを無効にして、Pacemaker がサービスを管理できるようにします。各インスタンスでこれを実行します。

```
sudo apt install -y haproxy
sudo systemctl disable haproxy
sudo systemctl stop haproxy
```

## HAProxy の DRBD マウントを設定する
<a name="pacemaker-tutorial-setup2-drbd-mount"></a>

DRBD デバイスをロードバランサーのディレクトリにマウントします。

マウントポイントディレクトリを作成します。各インスタンスでこれを実行します。

```
sudo mkdir -p /drbd/loadbalancer/
```

DRBD デバイスをプライマリインスタンスにマウントします。まず、前提条件から以前のマウントポイントをアンマウントします。

```
sudo umount /greengrass/v2
sudo mount /dev/drbd0 /drbd/loadbalancer/
```

でマウントを確認します`lsblk`。に`drbd0`マウントされている が表示されます`/drbd/loadbalancer`。

## HAProxy を設定する
<a name="pacemaker-tutorial-setup2-configure-haproxy"></a>

設定ファイルは、フェイルオーバーインスタンスにレプリケートされるように DRBD マウントディレクトリにある必要があります。

1. **HAProxy 設定**を DRBD マウントディレクトリにコピーします。

   ```
   sudo mkdir -p /drbd/loadbalancer/etc/haproxy/
   sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg
   ```

1. **HAProxy systemd unit ファイルを編集**して、DRBD マウントパスの設定を使用します。各インスタンスでこれを実行します。

   ```
   sudo systemctl edit haproxy
   ```

   次の行を追加して、設定ファイルパスを DRBD マウントパスに更新します。

   ```
   [Service]
   Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg"
   ```

1. **systemd を再ロードします。**各インスタンスでこれを実行します。

   ```
   sudo systemctl daemon-reload
   ```

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

DRBD デバイスをアンマウントし、DRBD を下げて、Pacemaker がデバイスを管理できるようにします。プライマリインスタンスとすべてのインスタンス`drbdadm down`でアンマウントを実行します。

```
# On the primary instance only
sudo umount /drbd/loadbalancer

# On all instances
sudo drbdadm down greengrass
```

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

```
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-setup2-fs-resource"></a>

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

## HAProxy systemd リソースをアタッチする
<a name="pacemaker-tutorial-setup2-haproxy-resource"></a>

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

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

```
sudo pcs constraint colocation add haproxy with fs_loadbalancer
sudo pcs constraint order fs_loadbalancer then start haproxy
sudo pcs constraint colocation add fs_loadbalancer with Promoted drbd-greengrass-clone
sudo pcs constraint order promote drbd-greengrass-clone then start fs_loadbalancer
```

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

```
sudo pcs resource enable fs_loadbalancer
sudo pcs resource enable haproxy
```

このチュートリアルのセットアップで STONITH を無効にします。

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

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

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

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

   ```
   sudo pcs status
   ```

1. **フェイルオーバーをシミュレートします。**プライマリノードをスタンバイモードにして、すべてのリソースをプライマリノードから強制的にオフにします。

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

1. **フェイルオーバーを確認します。**スタンバイインスタンスで、クラスターのステータスを確認します。DRBD、ファイルシステム、および HAProxy リソースがup-to-date設定ファイルを使用してスタンバイインスタンスで実行されているはずです。

   ```
   sudo pcs status
   ```

   障害が発生したインスタンスが回復すると、Pacemaker を設定して移行しない限り、ロードバランサーサービスはスタンバイインスタンスに残ります。

1. **ノードをオンラインに戻します。**

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