web-dev-qa-db-ja.com

生きているLinuxサービスのホットクローン

リブートできないなどの理由だけでなく、稼働中のLinuxサービスをホットクローンする必要があります。それは私たちの特別なシナリオのためです(ええ、私はすでにこの回答を読んでいますが、私のものとは少し異なります動作しているLinuxサーバーのクローンを作成します)。

計算ノードがあります。いくつかのモデルを実行しているNLP計算ノードと言えます。ノードを(もちろんサービスを使用して)開始すると、数回フィードするまで計算が非常に遅くなります。それをウォームアップと呼びました。

残念ながら、ウォームアップジョブは、待機するのに長い時間がかかります(ノードがウォームアップする前に計算が終了した可能性があります)。

したがって、問題が発生します。Linuxサーバーをホットクローンアウトしてノードを最高のパフォーマンスに保ち、短時間でクローンを作成してオンラインにするための安定した方法はありますか?

14
chen steven

サーバー全体を「ホットクローン」することはできないかもしれませんが(仮想マシンの場合のみ可能です)、 cri 、Checkpoint/Restore in Userspaceを使用して単一のプロセスを凍結および復元できます。 。

これにより、プログラムの内部状態をディスクに保存してプログラムを停止し、後で、保存したファイルからプログラムをその状態に復元できます。

目的の操作をサポートするために、保存したプログラムを表すファイルを別のサーバーにコピーして、そこに復元できます。

criuは、さまざまな機能が組み込まれた最新のカーネルを必要とするため、古いLinuxディストリビューションは機能しない可能性があります。 criu check特定のマシンで、criuの前提条件が存在するかどうかを判別します。

28
Michael Hampton

現在の環境では範囲外の場合もありますが、業界標準の方法はサーバーを仮想化することです。多くの仮想化ホスト(VMware、virtualboxなど)は、サーバーの状態を保存する「スナップショット」を許可し、それを新しいインスタンスに複製できます。これらの新しいインスタンスは、実行中のプロセスまで、元のインスタンスとまったく同じ状態になります。もちろん、実行しているソフトウェアが仮想環境で正しく機能することを確認する必要があります(CUDA/GPU計算が頭に浮かびます)。

12
cawwot

あなたが言及する質問はリンク http://www.linuxfocus.org/English/March2005/article370.shtml を参照しており、私があなたのリクエストを行うために想像したすべての方法を説明しています。

オプションがあるということは、サーバー上で実行されているものに多くを意味するものではありません。クローン作成プロセスで変更される可能性のあるすべてのファイルが、ターゲットマシン上の一貫性のないファイルである可能性があることを考慮する必要があります。その投稿であなたは彼らがデータベースについて話していることを提供し、そのようにそれを複製することはデータの完全性のいかなる保険も与えません。

「数回フィードするまで」の意味が明確ではありません。

しかし、私があなたの質問をよく理解している場合、システムのクローンを作成するには、リソースをコピーして計算する時間が必要であることを考慮する必要があります。

「ON/OF」またはより適切なアクティブ/バックアップ環境を実行するには、サーバーがクラスター内で適切に構成されている必要があります。

あなたが期待する答えではない場合は申し訳ありませんが、あなたが得るオプションはそれらです。

3
AtomiX84

何をしようとしているのかについては、多くの潜在的な問題があります。もちろん、ご存知のとおり、データが動的に格納されていないときにサーバーをオフラインにしてクローンを作成するのが最善です。

しかし、私が以前にやったように、あなたがやろうとしていることは完全にもっともらしいです。 ddを使用する場合、サーバー全体をブロックレベルで別のドライブまたは別のサーバーに複製できます。ただし、新しいサーバーで追加のセットアップが必要になるため、他のサーバーをオフにして新しいサーバーをオンにすることはおそらくできません。これを理解するには、サーバーのハードウェアとソフトウェアについていくつか知っておく必要があります。

まず、最適なデータ戦略を決定するには、何が定期的に更新されているかを把握しておくと役立ちます。動的に更新されているが静的なコンテンツを持つSQLサーバーがありますか?あるいは、あなたのコンテンツに一定のデータ更新を送るgitのようなsubversioningシステムの開発者のチームはいますか?更新内容に応じて、最善の完全なアクションコースが決定されます。

たとえば、定期的に更新されているのがSQLのみの場合、次の方法でサーバーが稼働している間に新しいサーバーに移行できます。

  • dd新しいサーバーのすべてのデータを複製します。
  • 新しいサーバーのセットアップを開始します。特にハードウェアが異なる場合は、多少の作業が必要になる場合がありますが、それでも最初からセットアップするよりは速い場合があります。
  • 最初のサーバーが稼働している間に2番目のサーバーを稼働させる必要がある場合は、別のサーバーで同じDNSを使用できないため、DNSの変更が必要になる場合もあります。
  • 新しいサーバーが完成し、独立して実行されたら、元のサーバー上のsqlサーバーの最終バックアップを取り、それを新しいサーバーにインポートします。

データを見落とさないように、元のサーバーを一時的にオフラインにする必要がある場合があります。または、ダウンタイムをゼロにするには、2番目を有効にして、DNSを新しいサーバーにポイントし、新しいサーバーでDNSエントリを手動で更新して、ダウンタイムが実質的にゼロになるようにします。これは、SQLをバックアップして新しいサーバーに復元するための数分のダウンタイムよりも面倒ですが、ゼロダウンタイムでは必要になる場合があります。

もちろん、これは使用例の1つにすぎず、構成やいくつかの変数によっては、特定のケースに基づいて、独自の移行戦略を作成する必要がある場合があります。

もう1つの問題は、サーバーのハードウェア構成に関するものです。新しいサーバーのハードウェアは古いサーバーと100%同一ですか?その場合、セットアップはより簡単です。ただし、反対に、それが完全に完全に異なるハードウェア構成である場合は、事前に2台目のサーバーを設定し、すべてのデータとSQLデータベースをバックアップするという別の戦略を実装する必要がある場合があります。最初のサーバーを手動で移行し、必要に応じて構成を変更します。

サーバーの移行は決して簡単なことではありません。移行を成功させるには、サーバーに関する知識、またはサーバーを持っているスタッフに関する深い知識が必要です。いずれの場合も、フルバックアップをすぐに取り、それをローカルコンピュータ上でも3番目のソースに保存することを強くお勧めします。これにより、最悪のシナリオが発生した場合(両方のサーバーがクラッシュし、修復不能に停止する)でも、別のサーバーの再構築に使用するデータのコピー。

これがお役に立てば幸いです。サーバーの移動にご協力ください。

1
user250795