クラスタノードの診断手順

Swarmクラスタ構成における、共有ファイルシステム(glusterfs)と swarm ノードの診断手順を示します。

共有ファイルシステム(glusterfs)の正常性確認

glusterd の正常性確認

すべての glusterd ノードの StateConnected であることを確認してください。

$ 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

いずれかのノードの StateDisconnected の場合は、そのホストの 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 ボリューム状態 StatusStarted であることを確認してください。

$ gluster volume info

Volume Name: gvol0
Type: Replicate
Status: Started
Number of Bricks: 1 x 3 = 3
...

ボリューム StatusStopped の場合は、そのノードのボリュームが停止されている可能性があります。

$ 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 lsSTATUS / 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 の全体ステータス を確認してください。

上記の対策を行なっても回復しない場合は、問い合わせ前に情報を収集のうえ、サポートへお問い合わせください。