今日は、最新のITの世界では完全には開示されていないトピックを検討します。ライブコンテナの移行、舞台裏での動作、および解決する問題。 このテクノロジーに対する需要は、新しい可能性を切り開き、アプリケーションのライフサイクルをより自由に管理できるようになり、急速に成長し続けています。
ライブ移行-それは何ですか?
コンテナのライブマイグレーションには 、アプリケーションを中断したり、ユーザーとの接続を切断したりすることなく、異なる物理マシンまたはクラウド間でアプリケーションを移動するプロセス
が含まれます。 ベアハードウェア上で実行されているコンテナのメモリ、ファイルシステム、およびネットワーク接続は、ソースホストコンピューターから宛先に転送され、作業を中断することなく作業状態を維持します。

ライブマイグレーションが解決する問題
ライブマイグレーションで解決できる問題がいくつかあります。
ハードウェアを変更/交換するには、システム管理者はすべてのユーザーをあるハードウェアノードから別のハードウェアノードにダウンタイムや作業の中断なしに転送する必要があります。
ハードウェアノードの負荷が高すぎる場合は、リバランスプロセスを実行する必要があります。そのためには、特定のアプリケーション構成を実装する必要があり、その結果、クラスターでホストできるワークロードの選択肢が狭められます。
現代のIT市場では、さまざまなクラウドソリューションが提供されており、ダウンタイムの期間、価格設定ポリシーの変更、提供されるサービスの品質の低下など、さまざまなインシデントが時々発生します。 ほとんどの場合、あるクラウドプロバイダーから別のクラウドプロバイダーにアプリケーションを移行することはできません。
代替ソリューション
上記の問題はすべて解決できます。ライブマイグレーションを使用せずにこれらの問題を解決するためのオプションをいくつか紹介します。
- 計画的なダウンタイム期間 。 クラスタの技術的なメンテナンスを実行するには、次の3つの手順を実行する必要があります。
1.メンテナンス時間とダウンタイムの可能性について事前にユーザー(アプリケーションの所有者)に通知する
2.ハードウェアを切断する
3.必要なすべての変更が完了した後にのみ再接続します。 この場合、問題は比較的長いダウンタイムです。
- トラフィックのリダイレクト 。 クラスタメンテナンスを実行するには、各アプリケーションのコピーを異なるハードウェアノードに復元し、トラフィックをこの新しいコピーにリダイレクトして、以前のコピーを閉じる必要があります。 この場合、問題はこのプロセスの複雑さです。高可用性とデータ同期を実現するには、特別に開発されたアプリケーションが必要です。 さらに、このタスクを完了するには、より多くのハードウェアリソースが必要になる場合があります。
- マイクロサービス。 アプリケーションサービスを個別のコンテナに詳細に分割し、それらを異なる物理サーバーに分散させることにより、ハードウェア障害が発生した場合のダウンタイム期間を回避できます。 障害が発生したコンテナは、アクティブなハードウェアノードに自動的に復元されます。 ただし、この場合、問題はやはりこのプロセスの複雑さです。クラスター内のアプリケーションは、障害後のプロセスの高可用性と回復を制御できるように設計する必要があるためです。
ライブ移行の仕組み
例として次のスキームを使用して、技術面でのライブマイグレーションのプロセスを見てみましょう。

- ソースノード -ライブ移行前のコンテナの場所
- 宛先ノード -ライブ移行後のコンテナの場所
移行を実行するために、プラットフォームはソースノードのコンテナをフリーズし、メモリ、プロセス、ファイルシステム、およびネットワーク接続をブロックし、このコンテナの状態を保存します。 その後、宛先ノードにコピーされます。 プラットフォームは、このノードのコンテナを復元および解凍します。 次に、ソースノードで、移行するコンテナのクイックデータクリーニングのプロセスが実行されます。
すべてが非常に簡単です。コンテナの状態を取得、コピー、復元します。 ただし、この場合、凍結期間を考慮する必要があります。凍結期間は、一部のアプリケーションで重要になることがあるため、(アーキテクチャ)アプリケーションの開発時に考慮する必要があります。
ライブマイグレーションを実行するには2つの方法があります。 それらの1つは
、メモリの事前コピーです。 コンテナを転送する場合、プラットフォームは監視対象メモリをソースノードに送信し、差が最小になるまでこのメモリを宛先ノードと同時にコピーします。 その後、プラットフォームはコンテナをフリーズし、残りの状態を受け取り、それを宛先ノードに転送し、復元して解凍します。

別の方法は、
メモリをコピーする 、つまり、
遅延マイグレーションです。 システムは最初にソースノードのコンテナを凍結し、最も急速に変化するメモリページの状態を取得し、状態を宛先ノードに転送し、復元して、コンテナを解凍します。 バックグラウンドの残りの状態は、ソースノードから宛先ノードにコピーされます。

通常、アプリケーションに応じて、各コンテナの凍結時間は5〜30秒かかります。 これは、クラスターのメンテナンス中に発生する可能性のあるダウンタイムに比べて非常に短い時間です。
ライブ移行の使用例
メンテナンス期間中、コンテナは物理サーバーの1つのノードから同じデータセンター内の別のノードにリアルタイムで転送できます。これにより、ダウンタイムが発生することはありません。
ライブマイグレーションを使用すると、コンテナをあるハードウェアノードから別のハードウェアノードに移行することで、負荷を再分散(均等に分散)できます。 このシナリオは自動化することもでき、特別なスケジューリングアルゴリズムと対応するトリガーがアクティブになります。

- データセンター(DPC)のアベイラビリティーゾーン間の高可用性
クラウドサービスプロバイダーは、1つ以上のデータセンター内でハードウェアの可用性ゾーンのセットを事前に構成して提供できます。 その結果、エンドユーザーは、システム管理者が1つのアクセスゾーンから別のアクセスゾーンに参加することなく、コンテナのライブマイグレーションを実行することにより、高可用性を確保する機会が増えます。
ライブマイグレーションにより、ユーザーは自由に選択できます。特定のクラウドプロバイダーに縛られることなく、移行中に構成を変更したり再展開したりすることなく、アプリケーションを代替クラウドに転送できます。

落とし穴と考えられる欠点
ライブ移行のすべての利点には、移行を開始する前に考慮しなければならないいくつかの欠点もあります。
- ライブマイグレーション中に、コンテナがフリーズ状態のときにパフォーマンスがわずかに低下することがあります。 一部のアプリケーションでは、パフォーマンスの低下を受け入れないため、これは重大な欠点です(たとえば、モノリシックで負荷の高いオンラインアプリケーション)。 ただし、インターネット上のほとんどのアプリケーション、特にWebアプリケーションに関しては、短期間の凍結は重大な欠点ではありません。
- 別の問題は、大量のデータが急速に変化することに関連しています。これは、あるクラウドプロバイダーから別のクラウドプロバイダーに簡単に転送することはできません。 待機期間と大量のデータは、ライブマイグレーションの成功を妨げる可能性があります。
- マルチクラウドのパブリックIP。 IPアドレスは特定のプロバイダーに関連付けられているため、パブリックIPアドレスを持つコンテナーをクラウドプロバイダー間で転送することはできません。
- コンテナ内のアプリケーションが特定のクラウドプロバイダーの独自のAPIまたは独自のクラウドサービスを使用している場合、あるクラウドから別のクラウドへのライブマイグレーションを実行することは非常に困難または不可能ですらあります。
現代のIT市場でのライブマイグレーション
現在、どの企業がコンテナのライブ移行を提供していますか?
- Virtuozzo-この会社は、実際には、ライブコンテナー移行の技術を作成しました。 彼らはこの分野の先駆者であり、現在、ある物理ホストから別のホストへのコンテナのアトミックな移行を可能にするライブ移行エンジンを提供しています。
- runCのOpen Containers Initiativeは、 CRIUベースのライブマイグレーションサポートを備えた別の有望なコンテナソリューションです。
- Jelasticは、ハードウェアホスト、アクセスゾーン、データセンター、クラウドプロバイダー間の複雑な展開トポロジで、アトミックコンテナーとアプリケーションの両方のライブマイグレーションを提供するコンテナーオーケストレーションプラットフォームを提供します。
デモ:Minecraft Real-Time Migration
MinecraftアプリケーションをダウンタイムなしでリアルタイムでAWSからAzureに移行するプロセスを確認するには、次のビデオをご覧ください。
ライブコンテナの移行は、まだ市場では比較的新しい技術です。 それにもかかわらず、現代のビジネスに対するこのテクノロジーの利点は明らかです。メンテナンス中のダウンタイムがないため、別のクラウドの作業環境の準備と確認に多くの労力を費やす必要はありません。 そのため、ライブマイグレーションは、アクセシビリティと柔軟性を向上させる優れたソリューションです。 クラウドまたはデータセンター間でのコンテナのリアルタイム移行の経験を共有してください。