コンテンツにスキップ

別サーバーへの移設

バックアップはこのデプロイを復元するものです。設定バンドルが運ぶのは構成です。別サーバーへの 移設はその 3 つめ —— 同じ暗号鍵、同じアカウント、同じアラート履歴を持ったまま、デプロイ丸ごとを別の サーバーへ移します。

画面は 1 つです。Settings ▸ 別サーバーへ移設。移設先のアドレスとログインするアカウントを入れて ボタンを押し、進んでいくのを見ているだけです。移設先に Docker が無ければ、Yagra が入れます。

運ぶもの: 暗号鍵(と、その隣にあるセッション鍵・バス鍵)、PostgreSQL のデータベース全体 —— ノード・グループ・しきい値・ユーザー・アラート履歴・監査ログ ——、メトリクス、このデプロイの .env と構成ファイル(独自の上書きも含む)。チェックを付ければイベントとフローのストア、そして 3 つの Yagra イメージも運びます。

運ばないもの: Redis(データベースの写しです)、ディスク上の証明書ファイル(初回起動時に データベースの行から作り直します)、core のログファイル、ポーラーの送信バッファ。

版は移設元が動かしていたものに固定されます。上げるのは移設後に、移設先自身の Settings ▸ Upgrade で。

  • x86-64 の Linux。sh・tar・SSH デーモンがあること。
  • Docker と docker compose v2 プラグイン —— または sudo とインターネット接続。公式スクリプトで Yagra が導入します。
  • Yagra のものが何も無いこと。 復元は、すでに Yagra のボリュームやコンテナを持つホストを拒みます。 既存のデプロイを置き換えることも、混ぜることも、アップグレードすることもありません。

作られるファイルには、暗号鍵とデータベースが一緒に入ります。手にした人は、そのデプロイが保存している SNMP コミュニティ・機器のログイン情報・API トークン・通知の秘密を、すべて読めます。暗号鍵そのものと 同じ扱いにしてください。移設が終わったら、経由したすべての機械から削除します。

そのため、この画面は Admin 限定で、3 つの権限を同時に要求します。書庫の作成もダウンロードも監査ログに 残ります。

移設先への SSH を Yagra に渡したくない場合は、代わりに書庫を作るを押してダウンロードし、移設先で 3 つのコマンドを打ちます。

Terminal window
mkdir yagra && cd yagra
tar -xzf ~/yagra-relocation-<stamp>.tar.gz
./yagra-relocate.sh

この経路では Docker は先に入っている必要があります。それ以外は同じで、成功を宣言する前にスクリプトが 行う確認も同じです。

機構が代わりに決められないことが 5 つあります。

  1. 移設元を止める。 止めるまでは 2 つのデプロイが同じ機器をポーリングし、通知も 2 回来ます。
  2. 拠点を繋ぎ直す。 分散ポーラーを運用していてアドレスが変わったなら必要です。ここが一番長い 工程です —— 下を見てください。
  3. OIDC のリダイレクト URI は移設元を指したままです。
  4. 機器が syslog・SNMP トラップ・フローを移設元へ送っているなら、向け直します。
  5. ファイアウォールが移設先で動いているなら、WebUI のポートを開けます。

WebUI の証明書は移設元のものなので、差し替えるまでブラウザが警告します。

遠隔ポーラーは移設に付いてきません。どのポーラーも、自分の .env に書かれたアドレスへ dial し、 自分の手元にある証明書を pin します。移設先はそのどちらも変えられません —— 拠点への唯一の通り道は バスであり、アドレスが変われば、まさにそれが動かなくなるからです。

移設先の WebUI で、この順に行います。

  1. Settings ▸ Pollers ▸ 証明書を再発行… に新しいアドレスを入れます。証明書は保存されますが、 バスは古いものを配り続けます(証明書を読むのは起動時だけです)。画面もそう表示します。

  2. 反映させる。 受け入れを停止を押し、続けて遠隔ポーラーを受け入れるを新しいアドレスで 押します。そのたびに監視が短く止まります。ここを飛ばすと、拠点にはバスが配っていない証明書が渡り、 接続に失敗したまま中央からは何も見えません。

  3. 各拠点の配布物を発行し直す。 新しいアドレスを指定します。いま使われている証明書と新しい トークンが入り、前のトークンは無効になります。

  4. 拠点で入れる。 すでにあるディレクトリの上に展開し、ポーラーを作り直します。

    Terminal window
    cd ~/yagra-poller
    tar -xzf ~/yagra-poller-<id>.tar.gz -C ~/yagra-poller
    docker compose -p yagra-poller -f docker-compose.poller.yml up -d --force-recreate

各ポーラーは 10 秒ほどで戻ってきます。online はポーリングしていることではありません。 Settings ▸ Pollers の Working set と Results の列が動くまで見てください。

切り戻しはありませんし、必要でもありません。移設は、移設先に動くデプロイを作るか、何も作らないかの どちらかです —— 拒否したときは何も書いておらず、途中で失敗したときは作られたものを消してやり直すだけ です。

秘密がちゃんと渡ったかは、いつでも移設先に聞けます。

Terminal window
docker compose -p yagra -f docker-compose.deploy.yml exec -T core yagra-core verify-secrets

JSON が 1 行返ります。封印済みの秘密がいくつあり、そのうちいくつを手元の鍵で開けたか。この 2 つに差が あることは、復元が唯一隠しうる失敗です —— それ以外は次のポーリングまで健全に見えてしまうからです。