移行
データの整合性を保ったまま、あるノードから別のノードにサービスを移行します。移行タスクはソースノードとターゲットノード間でバックアップ、停止、リストア、起動、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)を使用してください。
Rollback
State rollback is currently available in the Web UI only. Open the migration task details, choose the recovery actions that match the failed step, and start rollback there.
| Action | Description |
|---|---|
deploy_source | Redeploy the service on the original source node. |
stop_target | Stop and clean up the service on the target node. |
rollback_dns | Sync DNS records back to the source node. |
The CLI does not have a task rollback command yet. You can still inspect and follow the migration task with:
composia task wait --follow --timeout 30m <task-id>関連項目
最終更新日 • Renovate Bot