本文へスキップ

プロジェクトの移行 ​

デプロイ済みのプロジェクトを、データとともに同じチームの別のサーバーへ移します。より大きなサーバーへ、別のリージョンへ、または古いマシンを引退させるためにです。プロジェクトの ID、設定、ドメイン、履歴はそのままです。

新しいサーバーでプロジェクトが動くことを確認するまで、古いサーバーからは何も削除されません。

始める前に ​

  • チームで admin か owner のロールが必要で、確認のためにプロジェクト名を入力します。
  • プロジェクトはデプロイ済みである必要があります。デプロイしていないプロジェクトにはコピーするデータがないので、代わりに別のサーバーへ複製してください。
  • 新しいサーバーは ready(準備完了)で、古いサーバーにも到達できる必要があります。データは古いサーバーからコピーするからです。
  • 移行中、プロジェクトは使えません。 コピーの一貫性を保つためにサービスを停止します。利用の少ない時間に計画してください。所要時間は、すべてのデータをバックアップして復元するのとほぼ同じです。

移行を始める ​

  1. プロジェクトの Settings → General → Move to another server を開きます。
  2. 新しいサーバーを選びます。Zenavo が確認して次を表示します。
    • サーバーの準備ができているか、チームがプランの範囲内か、サーバーに十分な空きメモリがあるか(各サービスのメモリ上限か最近の使用量から計算)
    • そのサーバー上の他のプロジェクトとのドメインや公開 TCP/UDP ポートの衝突
    • コピーされるデータ
    • 自動で切り替わる生成ドメインと、カスタムドメインのために変更が必要な DNS レコード
  3. プロジェクト名を入力し、Move をクリックします。

移行はジョブとして実行され、そのページに各ステップとログが表示されます。

何が起きるか ​

ステップZenavo が行うこと
新しいサーバーの確認準備ができていて余裕があることを確認します。まだ何も変わっていません。
書き込みの停止古いサーバーのアプリケーションサービスを停止します。
バックアップボリュームのない PostgreSQL と MySQL のデータベースをダンプしてから停止し、すべてのボリュームを .tar アーカイブとしてコピーします。各ファイルの SHA-256 を記録します。
デプロイ新しいサーバーに同じイメージと設定を、すべてのサービスを停止した状態でデプロイします。データは古いサーバーから来るので、初期化コマンドは実行しません。TLS 証明書もコピーするので、トラフィックが届いた時点から HTTPS が使えます。
復元各ボリュームを新しい空のボリュームに復元し、ダンプが必要なデータベースを起動してダンプを復元します。
起動依存関係の順に、元と同じインスタンス数でサービスを起動し、ヘルスチェックを待ちます。
切り替え各生成ドメインを新しいサーバーのアドレスに向け、それをプロジェクトのサーバーにします。

移行前に一時停止または停止していたサービスは、新しいサーバーでも停止したままです。

失敗したら ​

切り替えより前のステップが失敗すると、Zenavo は移行を取り消します。サービスは古いサーバーで元どおりに再び起動し、新しいサーバーのコピーは削除され、ジョブは理由とともに失敗します。移行によって古いサーバーのデータが変わることはありません。

取り消しも失敗した場合(古いサーバーに到達できなくなったなど)、移行は開いたままになり、理由が表示されます。問題を直してから Roll back をクリックして再試行してください。新しいサーバーのコピーは、古いサーバーが再び動いてから削除されます。

切り替えのあと ​

プロジェクトは新しいサーバーで動いています。停止したコピーとそのデータはすべて古いサーバーに残っています。移行があなたの確認を待っている間に:

  • カスタムドメイン:DNS レコードを新しいサーバーのアドレスに変えてください。移行ページに、ドメインごとの正確なレコード(A か AAAA とアドレス)が表示されます。変えるまで、それらのドメインは停止した古いサーバーに向いたままです。
  • 新しいサーバーでアプリを確認してください:サインイン、バックグラウンドのワーカー、メール、Webhook など、アプリが依存するものすべて。
  • 移行を正確に取り消せるよう、デプロイなどのプロジェクトの操作は一時的に止まっています。

それから、どちらかを選びます。

  • Finish move は、停止したコピーとそのボリュームを古いサーバーから削除し、移行用の転送ファイルを Zenavo から削除します。その後は古いサーバーにロールバックできません。
  • Roll back は、新しいサーバーのコピーを停止し、生成ドメインを元に戻し、移行開始時のデータで古いサーバーのサービスを起動し、新しいコピーを削除します。切り替え後に新しいサーバーで行われた変更はコピーされて戻りません。 カスタムドメインを変えていたら、それも元に戻してください。

知っておくと良いこと ​

  • 生成ドメインのレコードは、新しいレコードを先に追加してから古いものを削除するので、名前は常に解決できます。リゾルバーが古いアドレスを最大 5 分保持することがあります。
  • サービスがボリューム以外(コンテナ内)に置いているデータはコピーされません。どのみち再起動で失われるものです。必要なデータにはボリュームを追加してください。
  • 転送ファイルはバックアップと同じ種類のもので、移行を完了するかロールバックするまでプロジェクトのバックアップに表示されます。
  • 別のチームのサーバーへの移行はできません。代わりにプロジェクトを別のチームに複製し、そこでバックアップを復元してください。
  • 移行、完了、ロールバックはすべてチームの監査ログに記録されます。

API ​

メソッドパス
GET/api/projects/{pid}/move最新の移行:状態、サーバー、データ、ドメイン、can_finish、can_roll_back
GET/api/projects/{pid}/move/preflight?server_id=何も変えずに移行を確認(管理者)
POST/api/projects/{pid}/move開始:{server_id, confirmation: "<project name>"}(ジョブを返します)
POST/api/projects/{pid}/move/finish古いサーバーから停止したコピーを削除(ジョブを返します)
POST/api/projects/{pid}/move/rollback古いサーバーに戻す(ジョブを返します)

Zeabur とは関係ありません。