0

docker を使用して 3 ノードのクォーラム ネットワークをセットアップしました。ネットワークがクラ​​ッシュした場合、ノードの 1 つの情報しかありません。バイナリを使用してそのノードを回復しますか? また、新しいネットワークのブロックは他のブロックと同期している必要があります。それがどのように可能か教えてください。

4

1 に答える 1

0

docker swarm を使用していると思います。スウォーム内のクラスタリング機能は、マネージャー ノードによって維持されます。何らかの理由でマネージャー リーダーが利用できなくなり、クォーラムに達して新しいマネージャー リーダーを選出するのに十分なマネージャーが残っていない場合、クォーラムは失われ、マネージャー ノードはスウォームを制御できません。

このような状況では、swarm を再初期化し、マネージャー リーダーが再びオンラインになったときにコマンドを使用して新しいクラスターを強制的に作成する必要がある場合があります。

# docker swarm init --force-new-cluster

これにより、コマンドが実行されたマネージャーを除くすべてのマネージャーが削除されます。良いことは、swarm が再初期化されると、ワーカー ノードが引き続き正常に機能し、他のマネージャー ノードが機能を再開することです。

場合によっては、swarm からマネージャー ノードを削除して、それらを swarm に再結合する必要があります。

ただし、ノードがスウォームに再参加するときは、マネージャー ノードを介してスウォームに参加する必要があることに注意してください。

/nodes HTTP エンドポイントを介して JSON 形式で Docker ノード API にクエリを実行することにより、マネージャー ノードの正常性をいつでも監視できます。

# docker node inspect manager1 --format "{{ .ManagerStatus.Reachability }}"
# docker node inspect manager1 --format "{{ .Status.State }}"

また、docker swarm config ディレクトリの自動バックアップを実行して/var/lib/docker/swarm、災害から簡単に復旧できるようにすることを実践してください。

于 2018-03-25T19:19:20.317 に答える