クラスタノードの診断手順
共有ファイルシステム (glusterfs)の正常性確認
glusterd の正常性確認
すべての glusterd ノードの `State` が `Connected` であることを確認してください。
```bash
$ gluster pool list
UUID Hostname State
448d38ce-bc9c-4bca-ae77-8876cbb4ab32 ke2-rhel89-swarm-1 Connected
28cdd9bc-4a49-48ac-a7ab-635f35e90bda ke2-rhel89-swarm-3 Connected
0760ce31-9b1e-4697-980e-721bbd0f4862 localhost Connected
```
- いずれかの gluster ノードの State が Disconnected 状態になっている場合は、そのホストの glusterd サービスが正常に動作していなかったり、ネットワークに問題が生じているといった可能性があります。
```bash
$ gluster pool list
UUID Hostname State
448d38ce-bc9c-4bca-ae77-8876cbb4ab32 ke2-rhel89-swarm-1 Disconnected
28cdd9bc-4a49-48ac-a7ab-635f35e90bda ke2-rhel89-swarm-3 Connected
0760ce31-9b1e-4697-980e-721bbd0f4862 localhost Connected
```
このような状況の場合、以下の確認を行なってみてください。
- [ホストサーバの正常性の確認](./host-server-diag.html#diag-a1-ホストサーバの正常性の確認)
- [クラスタ構成における共有ファイルシステム glusterd の正常動作の確認](./host-server-diag.html#diag-a7-クラスタ構成における共有ファイルシステム-glusterd-の正常動作の確認)
- [ネットワーク導通の確認](./host-server-diag.html#diag-a4-ネットワーク導通の確認)
上記の対策を行なっても回復しない場合は、サポートまでお問い合わせください
gluster ボリューム の正常性確認
すべてのノードの gluster ボリューム状態 `Status` が `Started` であることを確認してください。
```bash
$ gluster volume info
Volume Name: gvol0
Type: Replicate
Volume ID: 71d358be-7b95-4c03-a528-9cb15d37a3c3
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: ke2-rhel89-swarm-1:/var/glustervol0
Brick2: ke2-rhel89-swarm-2:/var/glustervol0
Brick3: ke2-rhel89-swarm-3:/var/glustervol0
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
```
- ボリューム `Status` が `Stopped` になっている場合、 そのノードのボリュームが停止されてしまったの可能性があります。
```bash
$ gluster volume info
Volume Name: gvol0
Type: Replicate
Volume ID: 71d358be-7b95-4c03-a528-9cb15d37a3c3
Status: Stopped
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: ke2-rhel89-swarm-1:/var/glustervol0
Brick2: ke2-rhel89-swarm-2:/var/glustervol0
Brick3: ke2-rhel89-swarm-3:/var/glustervol0
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
```
この状況なら以下のコマンドでボリュームを起動してください。
```bash
$ gluster volume start <volume-name>
volume start: <volume-name>: success
```
gluster ボリュームのマウントの正常性確認
すべての glusterd ノードにおいて gluster ボリュームがマウントされていることを確認してください。mount コマンドを実行すると `localhost:/gvol0 on /mnt/gluster` という表示があるはずです
```bash
$ mount | grep gluster
localhost:/gvol0 on /mnt/gluster type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
```
gluster ボリュームがマウントされていない場合は、以下のコマンドでマウントしてください。
```bash
$ mount -t glusterfs localhost:/gvol0 /mnt/gluster
```
* 特定のノードで gluster ボリュームが正しくマウントされない場合は、kompira コンテナのログで以下のようなエラーが記録されることがあります。
swarm ノードのステータスの正常性確認
swarm ノードの正常性については、docker node ls コマンドの結果から以下を確認してください。
- すべてのノードの STATUS が
Readyであること。 - すべてのノードの Availability が
Activeであること。 - MANAGER STATUS については、1 台が
Leaderであり、残りのノードがReachableであること。 - すべてのノードの ENGINE VERSION が同一であること。
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
fki8ndj78y2khgyt7j6xn2duf ke2-rhel89-swarm-1 Ready Active Reachable 26.1.3
ly4ik4v3pw9rgom0htt281aus * ke2-rhel89-swarm-2 Ready Active Reachable 26.1.3
if1r8znj7v7dsym4r9ya26gmt ke2-rhel89-swarm-3 Ready Active Leader 26.1.3
-
マネージャーの半数以上がオンラインでない、または正常でない場合、次のエラーが発生します。
$ docker node ls Error response from daemon: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.このような状況の場合、全てのノードで以下の診断手順を行なってみてください。
上記の調査で問題を見つけて修正した場合、あらためて
docker node lsコマンドを実行して Swarm ノードの状況を確認してください。STATUS、AVAILABILITY、MANAGER STATUSなどが正常であれば、KE2 クラスタは正常であると言えます。まだ、swarm クラスタは正常ではない場合、必要なポートが開いていない可能性があります。この場合、ファイアウォールの設定 を見てください。
それでも swarm クラスタが正常に戻らない場合は、各 VM を一度再起動してみてください。Docker の自動起動設定が有効であれば、swarm クラスタは正常に戻るはずです。
swarm クラスタが正常に戻っても KE2 APP が全体的に操作しない可能性があります。
その時、まずはすべてのノードの gluster ボリュームの正常性確認を行ってください。そして、KE2 APPを以下の手順で再デプロイしてください。
[いずれかのノード]$ docker stack rm ke2 [いずれかのノード]$ cd ke2/cluster/swarm [いずれかのノード]$ docker stack deploy -c docker-swarm.yml ke2最後に、KE2 APP の全体ステータスをご確認ください。
-
もしいずれかのノードの
MANAGER STATUSがUnreachableとSTATUSがDown状態になっている場合、 そのノードが止めされてしまったの可能性があります。$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION fki8ndj78y2khgyt7j6xn2duf ke2-rhel89-swarm-1 Down Active Unreachable 26.1.3 ly4ik4v3pw9rgom0htt281aus * ke2-rhel89-swarm-2 Ready Active Reachable 26.1.3 if1r8znj7v7dsym4r9ya26gmt ke2-rhel89-swarm-3 Ready Active Leader 26.1.3上の状況が起きた場合、問題があるノードで以下の分析を行ってください。
問題が解決できない場合、必要なポートが開いていない可能性があります。この場合、ファイアウォールの設定 を見てください。
それでも問題が解決しない場合は、問題があるノードを再起動してください。docker と glusterfs 自動起動設定があれば特定の ホストの swarm node と 関係があるコンテナが自動回復になります。
そして、KE2 APP の全体ステータスをみてください。
上記の対策を行なっても回復しない場合は、サポートまでお問い合わせください。