4

仮想マシンで実行されている分散アプリケーションがあり、そのうちの 1 つのサービスがアクティブ/パッシブ モードで実行されています。アクティブな VM は、パブリック IP を介してサービスを提供します。アクティブ VM に障害が発生すると、パブリック IP がパッシブ VM に移動され、パッシブ VM がアクティブになり、サービスの提供を開始します。

このパターンは、kubernetes によって管理されるコンテナー化されたアプリケーションにどのように適合しますか?

レプリカ = 1 のレプリケーション コントローラーを使用すると、ノード/ミニオンに障害が発生した場合、レプリケーション コントローラーは別のミニオンでポッド (= 現在のアプリケーションの VM) を再スケジュールしますが、これは現在のソリューションと比較してダウンタイムが長くなる可能性があります。 IP リソースのみが移動されます。

レプリカ = 2 のレプリケーション コントローラーを使用する場合、アンチパターンである 2 つのポッド (1 つはパブリック IP を使用し、もう 1 つはパブリック IP を使用しない) で異なる構成が必要になりますか? さらに、kubernetes には仮想 IP をサポートするための設計された方法はありません (ポッドを移動します)?

または、レプリカ = 2 を使用して、IP を管理するために自分で何かを実装する必要があります (または、ペースメーカーを使用する可能性がありますか?これにより、別の問題が発生します: アプリケーション、kubernetes、およびペースメーカー/corosync でクラスター管理が必要になります)。

それで、これはどのように行われるべきですか?

4

1 に答える 1

4

あなたのアプリケーションは、ロード バランサーとして機能する 2 つの VM 間で独自のマスター選択スキームを使用しているようで、現在どちらがマスターであるかを内部的に認識しています。

これは、両方のポッド (マスターとスタンバイ) にまたがるサービスと、現在アクティブなマスターに対してのみ成功を返す準備プローブを使用して、Kubernetes で現在実現できます。準備プローブが失敗すると、エンドポイント リストからポッドが削除されるため、マスターではないノードにトラフィックが送信されることはありません。フェールオーバーを実行する必要がある場合、スタンバイは readiness プローブに正常であると報告し (マスターは異常または到達不能であると報告します)、その時点で、サービスへのトラフィックはスタンバイ (現在はマスターとして機能) にのみ到達します。

クラスターの外部からアクセスできるように、外部 IP を使用して 2 つのポッドにまたがるサービスを作成できます。

于 2015-03-25T22:41:41.237 に答える