A self-hosted orchestration system crafted for power users. composia.xyz
Something went wrong. Try again.
title: "移行" date: '2026-05-26T00:00:00+08:00' weight: 45 #
データの整合性を保ったまま、あるノードから別のノードにサービスを移行します。移行タスクはソースノードとターゲットノード間でバックアップ、停止、リストア、起動、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 migrate my-app --to edge-1
移行手順 #
- データのエクスポート — 設定された各データ項目について、ソースノードでバックアップタスクを実行します。
- ソースインスタンスの停止 —
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 または CLI からロールバックタスクをトリガーします。ロールバックタスクは以下の復旧アクションをサポートします:
| アクション | 説明 |
|---|---|
deploy_source |
元のソースノードにサービスを再デプロイします。 |
stop_target |
ターゲットノード上のサービスを停止してクリーンアップします。 |
rollback_dns |
DNS レコードをソースノードに戻します。 |
失敗したステップに一致するアクションを選択します。例えば、ターゲットがデプロイされた後に移行が失敗したが DNS がまだ更新されていない場合、stop_target と deploy_source だけが必要になるかもしれません。
CLI:
composia task rollback <task-id> --deploy-source --stop-target --rollback-dns
必要のないアクションのフラグは省略します。