クラスタノードの診断手順
Swarmクラスタ構成における、共有ファイルシステム(glusterfs)と swarm ノードの診断手順を示します。
共有ファイルシステム(glusterfs)の正常性確認
glusterd の正常性確認
すべての glusterd ノードの State が Connected であることを確認してください。
$ 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
いずれかのノードの State が Disconnected の場合は、そのホストの glusterd
サービスが正常に動作していないか、ネットワークに問題が生じている可能性があります。
$ 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
この場合、以下を確認してください。
上記の対策を行なっても回復しない場合は、問い合わせ前に情報を収集のうえ、サポートへお問い合わせください。
gluster ボリュームの正常性確認
すべてのノードの gluster ボリューム状態 Status が Started であることを確認してください。
$ gluster volume info
Volume Name: gvol0
Type: Replicate
Status: Started
Number of Bricks: 1 x 3 = 3
...
ボリューム Status が Stopped の場合は、そのノードのボリュームが停止されている可能性があります。
$ gluster volume info
Volume Name: gvol0
Type: Replicate
Status: Stopped
Number of Bricks: 1 x 3 = 3
...
以下のコマンドでボリュームを起動してください。
$ gluster volume start <VOLUME_NAME>
gluster ボリュームのマウントの正常性確認
すべての glusterd ノードで gluster ボリュームがマウントされていることを確認してください。mount コマンドで
localhost:/gvol0 on /mnt/gluster の表示があるはずです。
$ mount | grep gluster
localhost:/gvol0 on /mnt/gluster type fuse.glusterfs (rw,relatime,...)
マウントされていない場合は、以下のコマンドでマウントしてください。
$ mount -t glusterfs localhost:/gvol0 /mnt/gluster
特定のノードで gluster ボリュームが正しくマウントされない場合、kompira コンテナのログにエラーが記録されることがあります。静的ファイルにアクセスできない(KeyError: 'staticfiles') を参照してください。
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 が次のようなエラーを返します。全てのノードで以下の診断を行なってください。
$ 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 で STATUS / AVAILABILITY / MANAGER STATUS が正常であれば
KE2
クラスタは正常です。まだ正常でない場合は、必要なポートが開いていない可能性があります(ファイアウォールの設定)。それでも戻らない場合は各
VM を一度再起動してみてください。
クラスタが正常に戻っても 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 の自動起動設定があれば、そのノードに関係するコンテナが自動回復します。起動後、KE2 APP の全体ステータス を確認してください。
上記の対策を行なっても回復しない場合は、問い合わせ前に情報を収集のうえ、サポートへお問い合わせください。