移行
データの整合性を保ったまま、あるノードから別のノードにサービスを移行します。移行タスクはソースノードとターゲットノード間でバックアップ、停止、リストア、起動、DNS 更新の各ステップを調整します。
設定
移行中に引き継がれるデータ項目は、data_protect に backup と restore の両方のアクションを持つ必要があります。migrate で宣言します:
name: my-app
nodes:
- main
data_protect:
data:
- name: uploads
backup:
strategy: files.copy
include:
- ./data/uploads
restore:
strategy: files.copy
include:
- ./data/uploads
migrate:
data:
- name: uploads| キー | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | はい | バックアップとリストアの両方のアクションを持つ data_protect.data[].name を参照する必要があります。 |
enabled | bool | いいえ | この項目の移行を有効または無効にします。 |
移行の実行
Web UI:
- サービス詳細ページを開きます。
- 移行コントロールを使用してソースノードとターゲットノードを選択します。
- 移行 をクリックします。
CLI:
composia service my-app migrate --source main --target edge-1 --wait --follow --timeout 30m移行手順
- データのエクスポート — 設定された各データ項目について、ソースノードでバックアップタスクを実行します。
- ソースインスタンスの停止 —
docker compose downを実行し、Caddy 設定を削除します。 - ソースでの Caddy リロード — ソース Caddy インスタンスからプロキシエントリを削除します。
- ターゲットでのデータリストア — 各データ項目について、ターゲットノードでリストアタスクを実行します。
- ターゲットでのデプロイ —
docker compose up -dを実行し、Caddy 設定を同期します。 - ターゲットでの Caddy リロード — ターゲット Caddy インスタンスにプロキシエントリを適用します。
- DNS の更新 — DNS レコードをターゲットノードに向けるよう更新します。
- 設定の書き込み —
composia-meta.yamlのnodesを更新し、Git にコミットします。
注意点
- サービスはソースノードにデプロイされている必要があり、ターゲットノードはオンラインである必要があります。
- 移行には短時間のダウンタイムが発生します。オフピーク時間に実行してください。
- 整合性を確保するため、データ転送前にソースインスタンスが停止されます。
- データベースの場合はエクスポート戦略(
database.pgdumpall/database.pgimport)を使用してください。
ロールバック
状態のロールバックは現在 Web UI でのみ利用できます。移行タスクの詳細を開き、失敗したステップに合う復旧アクションを選択してロールバックを開始します。
| アクション | 説明 |
|---|---|
deploy_source | 元のソースノードにサービスを再デプロイします。 |
stop_target | ターゲットノードのサービスを停止してクリーンアップします。 |
rollback_dns | DNS レコードをソースノードへ戻します。 |
CLI にはまだ task rollback コマンドがありません。次のコマンドで移行タスクを確認し、進行状況を追跡できます:
composia task wait --follow --timeout 30m <task-id>関連項目
最終更新日 • alexma233