バックアップ対象の全体像
NemoClawの運用で保護すべきデータは4カテゴリに分類されます。各カテゴリの重要度とバックアップ頻度の目安を以下に示します。
| カテゴリ | 対象データ | 重要度 | 推奨頻度 | 保持期間 |
|---|---|---|---|---|
| 設定 | blueprint.yaml・ポリシーファイル・MCP設定 | 最高 | 変更のたびに | 無期限 |
| モデル | ローカルNIMコンテナイメージ・Nemotronモデルウェイト | 高 | バージョン更新時 | 2世代分 |
| メモリ | エージェントセッション履歴・ベクトルストア | 高 | 日次 | 90日 |
| ログ | アクセスログ・ポリシー違反ログ・監査ログ | 中 | 日次(ローテーション) | 1年(コンプライアンス要件次第) |
設定ファイル(blueprint.yaml)はGitで管理することを強く推奨します。変更履歴が自動的に保持され、任意の時点に復元できます。
3-2-1バックアップ戦略
バックアップのベストプラクティスである「3-2-1ルール」をNemoClaw環境に適用します。
3-2-1ルールとは
| ルール | 意味 | NemoClaw環境での実装例 |
|---|---|---|
| 3 | データのコピーを3つ保持 | 本番サーバー + バックアップサーバー + オフサイト |
| 2 | 2種類の異なるメディア | ローカルディスク + オブジェクトストレージ(S3・GCS) |
| 1 | 1つはオフサイト(物理的に別の場所) | 別リージョンのクラウドストレージ |
設定ファイルのバックアップ(Git + オブジェクトストレージ)
#!/bin/bash
# backup-nemoclaw-config.sh - 設定バックアップスクリプト
NEMOCLAW_DIR="/opt/nemoclaw"
BACKUP_BUCKET="s3://your-company-backup/nemoclaw/config"
DATE=$(date +%Y%m%d-%H%M%S)
# Gitコミット(変更があれば)
cd "${NEMOCLAW_DIR}"
git add blueprint.yaml policies/ mcp-servers/
git diff --cached --quiet || git commit -m "Auto backup: ${DATE}"
git push origin main
# S3へのバックアップ(暗号化付き)
tar -czf "/tmp/nemoclaw-config-${DATE}.tar.gz" \
blueprint.yaml policies/ mcp-servers/ .env.encrypted
aws s3 cp "/tmp/nemoclaw-config-${DATE}.tar.gz" \
"${BACKUP_BUCKET}/${DATE}/" \
--sse aws:kms --sse-kms-key-id "${KMS_KEY_ID}"
rm -f "/tmp/nemoclaw-config-${DATE}.tar.gz"
echo "設定バックアップ完了: ${DATE}"
このスクリプトをcronで自動実行します(変更検知で随時 + 日次フルバックアップ)。
# crontab -e
# 毎日0時に設定バックアップ
0 0 * * * /opt/nemoclaw/scripts/backup-nemoclaw-config.sh >> /var/log/nemoclaw-backup.log 2>&1 メモリ・セッションデータのバックアップ
#!/bin/bash
# backup-nemoclaw-memory.sh - メモリ・ベクトルストアのバックアップ
MEMORY_DIR="/opt/nemoclaw/data/memory"
VECTOR_DIR="/opt/nemoclaw/data/vectorstore"
BACKUP_BUCKET="s3://your-company-backup/nemoclaw/memory"
DATE=$(date +%Y%m%d)
# ベクトルストアのスナップショット(NemoClaw APIを使用)
curl -X POST "http://localhost:8765/v1/admin/memory/snapshot" \
-H "Authorization: Bearer ${NEMOCLAW_ADMIN_KEY}" \
-o "/tmp/memory-snapshot-${DATE}.bin"
# メモリディレクトリとスナップショットをS3へ
aws s3 sync "${MEMORY_DIR}" "${BACKUP_BUCKET}/${DATE}/memory/" --delete
aws s3 cp "/tmp/memory-snapshot-${DATE}.bin" \
"${BACKUP_BUCKET}/${DATE}/vectorstore-snapshot.bin" \
--sse aws:kms
echo "メモリバックアップ完了: ${DATE}" RPO・RTO設計
災害復旧計画の核心はRPO(目標復旧時点)とRTO(目標復旧時間)の設定です。NemoClaw環境の性質に合わせて適切な目標値を設定してください。
| 指標 | 定義 | スタンダード構成目安 | HA構成目安 |
|---|---|---|---|
| RPO | 障害発生時に許容できるデータ損失の最大時間 | 24時間(日次バックアップ) | 1時間未満(増分バックアップ) |
| RTO | 障害発生から復旧完了までの最大許容時間 | 4時間 | 30分未満(フェイルオーバー自動化) |
業務への影響度からRPO・RTOを逆算して設計してください。NemoClawがリアルタイムな顧客対応に使われている場合は、HA構成(Active-Standby)を検討する必要があります。
復旧手順
障害の種類別に、NemoClawの標準的な復旧手順を解説します。
設定ファイルの復旧
#!/bin/bash
# restore-nemoclaw-config.sh - 設定ファイル復旧スクリプト
RESTORE_DATE="${1:-latest}" # 引数でリストア対象日時を指定
BACKUP_BUCKET="s3://your-company-backup/nemoclaw/config"
NEMOCLAW_DIR="/opt/nemoclaw"
echo "=== NemoClaw設定復旧開始: ${RESTORE_DATE} ==="
# 1. NemoClawサービス停止
systemctl stop nemoclaw
# 2. 現在の設定をバックアップ(安全のため)
cp -r "${NEMOCLAW_DIR}" "${NEMOCLAW_DIR}.bak.$(date +%Y%m%d%H%M%S)"
# 3. S3からダウンロード
if [ "${RESTORE_DATE}" = "latest" ]; then
RESTORE_DATE=$(aws s3 ls "${BACKUP_BUCKET}/" | tail -1 | awk '{print $2}' | tr -d '/')
fi
aws s3 cp "${BACKUP_BUCKET}/${RESTORE_DATE}/" /tmp/restore/ --recursive
# 4. 展開・配置
tar -xzf "/tmp/restore/nemoclaw-config-${RESTORE_DATE}.tar.gz" -C "${NEMOCLAW_DIR}"
# 5. 構文チェック
nemoclaw validate blueprint.yaml
if [ $? -ne 0 ]; then
echo "blueprint.yaml の検証失敗。復旧を中止します。"
exit 1
fi
# 6. サービス再起動
systemctl start nemoclaw
systemctl status nemoclaw
echo "=== 設定復旧完了 ===" サーバー全体の復旧(ゼロからの再構築)
サーバーが物理的に失われた場合の復旧手順です。
- 新しいサーバーをプロビジョニング(同スペック以上)
- OSセットアップ・依存パッケージのインストール
- NemoClawのインストール(
npm install -g @nvidia/nemoclaw) - 設定ファイルの復旧(上記スクリプトを実行)
- メモリ・ベクトルストアの復旧(スナップショットのリストア)
- 動作確認(ヘルスチェック・テストセッション実行)
- DNSの切り替え(新サーバーIPへ)
# メモリ・ベクトルストアのリストア
curl -X POST "http://localhost:8765/v1/admin/memory/restore" \
-H "Authorization: Bearer ${NEMOCLAW_ADMIN_KEY}" \
-H "Content-Type: application/octet-stream" \
--data-binary @/tmp/memory-snapshot-${RESTORE_DATE}.bin
# ヘルスチェックで復旧確認
curl http://localhost:8765/v1/health DR訓練チェックリスト
バックアップは「取っているだけ」では意味がありません。定期的なDR訓練で復旧手順の有効性を確認してください。以下のチェックリストを四半期ごとに実施することを推奨します。
| フェーズ | 確認項目 | 合否基準 |
|---|---|---|
| 事前確認 | 最新バックアップが存在するか | 24時間以内のバックアップが存在 |
| 事前確認 | バックアップファイルの整合性 | チェックサム検証OK |
| 事前確認 | 復旧手順書が最新か | 直近3ヶ月以内に更新済み |
| 復旧実行 | 設定ファイルのリストア | RTO以内に完了 |
| 復旧実行 | サービス起動・ヘルスチェック | 全コンポーネントHealthy |
| 動作確認 | テストセッションでエージェントが応答するか | 正常応答を確認 |
| 動作確認 | ポリシー(サンドボックス)が機能するか | 禁止操作が拒否されるか確認 |
| 動作確認 | MCPサーバーが接続されているか | /v1/healthでconnected確認 |
| 事後 | 訓練結果・課題を記録 | 報告書作成・次回改善点を明記 |