小さな Mesos クラスターがあり、Marathon を使用して、それぞれ可変数のインスタンスを持つ一連の長期実行サービスを管理しています。
ビジネス ニーズに応じて、新しいノードを起動したり、一部のノードを終了したりできるようにしたいと考えています。ただし、ノードを終了するときに、潜在的な問題があることに気付きました。Mesos スレーブをシャットダウンすると、いくつかのサービスのインスタンスの数が一時的に定義された を下回ることが起こりますminimumHealthCapacity
。たとえば、停止するマシンが 1 つのインスタンスのみでサービスを実行している場合、ダウンタイムが発生する可能性があります。
次の単純化されたシナリオを考えてみましょう: ノード 1 はサービス A を実行しており、ノード 2 はサービス B を実行しており、ノード 3 はサービス C をminimumHealthCapacity
実行しています。サービス A でダウンタイムが発生することは望ましくありません。意図した動作の例としては、サービス A を 2 にスケーリングしてから、ノード 1 を安全に終了することが挙げられます。
を下回るサービスがないことを確認するにはどうすればよいminimumHealthCapacity
ですか?
理想的には、そのためのローリング アップデートにヒントを得たプロセスが必要です。代替品は別のマシンで起動され、その後マシンのサービスが終了してシャットダウンされます。スケールダウンが簡単なスクリプトで済むように、少なくともそれを行うための自動化されたプロセスが必要です。そのために必要な時間はありません。つまり、Marathon の移行が完了して成功したことを確認した後でのみ、Mesos スレーブをシャットダウンできます。