Fessのバックアップ復元で確認したい更新日時・暗号鍵・ログ出力

Fessの開発版に、古いバックアップによる設定の上書きを避ける変更と、クロール用認証パスワードを暗号化して保存する変更が入りました。ログのバックアップが途中で打ち切られた場合の警告も追加されています。サーバー移行では、ファイルを取得できたかだけでなく、復元対象と暗号鍵を確認する必要があります。

更新日時によって復元対象を選ぶ

管理画面のバックアップから.bulkをアップロードした場合、数値のupdatedTimeを持つドキュメントは、保存済みの同じIDが存在しない、保存済みの更新日時がない、またはバックアップの方が新しい場合に書き込まれます。同じ日時や古い内容はスキップします。この動作に新しい有効化設定はありません。

同梱スケジュールジョブのupdatedTimeは15.8と15.9でともに0です。15.8のバックアップを新しい15.9環境へ復元するときも、既にある15.9の標準ジョブを残し、旧Groovy版のジョブへ戻してしまう問題を避けます。利用者が編集したジョブや追加したジョブは、その更新日時と復元先の状態で結果が変わります。

updatedTimeがない、または数値ではないドキュメントは通常どおり取り込みます。また実装上、更新日時の取得・比較で例外が発生した場合も取り込みを続けます。全設定の巻き戻しを防ぐ仕組みや、指定日時への完全復旧を保証する仕組みではありません。スキップの記録はfess.logのINFOレベルなので、ログレベルによっては表示されません。

認証パスワードと暗号鍵を引き継ぐ

Web認証・ファイル認証のpasswordは、保存時にapp.cipher.keyを使って暗号化されます。設定バックアップのfess_basic_config.bulkとfess_config.bulkにも暗号化値が入り、まだ平文で保存されている旧設定もバックアップ出力時に暗号化します。既存の平文設定を一括で書き換える移行処理ではなく、設定を保存し直した時に保存形式が変わります。空のパスワードや既に暗号化された値はそのまま扱います。

移行先では、元のfess_config.propertiesのapp.cipher.keyを安全に引き継いでください。異なる鍵では認証パスワードや暗号化済みクロールパラメーターを復号できず、クロールが失敗します。新しい復号エラーには、設定の種類・IDやパラメーター名と、鍵を確認する案内が入ります。ただし問題の設定だけを自動で隔離してクロールを続ける変更ではありません。

以前の版で作成した平文パスワード入りバックアップも読み込めます。暗号化対象は認証のパスワードなどであり、バックアップ全体ではありません。その他の値は平文で含まれるため、.bulkと暗号鍵の両方を機密情報として管理します。

ログのバックアップはHTTP 200でも完全とは限らない

検索・クリック・お気に入り・チャット・ユーザー情報のログ出力は、CPU負荷が高い状態が続くと途中で打ち切られます。関連する初期値はadaptive.load.control=50、index.backup.log.load.timeout=60000(ミリ秒)です。

今回の変更では、出力名、書き込んだ行数、これらの設定名をWARNで知らせます。ダウンロードのHTTPステータスは200のままで、ファイル形式も変わりません。最終行を書いた直後にも判定するため、警告だけから欠落件数は決められません。

バックアップ後はfess.logを確認し、途中終了の警告があれば低負荷の時間帯に再取得して行数などを確認してください。負荷しきい値や待機時間を変更する場合は、バックアップ処理が検索サービスへ与える負荷も確認します。

移行前に揃えるもの

15.9以降でユーザータグを使う環境では、tag_typeを含むfess_config.bulkも取得します。fess_basic_config.bulkにはユーザータグ、クロール情報、障害URL、ジョブログ、サムネイルキューなどが含まれません。辞書ファイルも管理画面のバックアップとは別に保管してください。

ログの*.ndjsonはダウンロードできますが、管理画面のアップロードによる復元対象ではありません。またインデックス出力のindex.export.exclude.fieldsは開発版でcache,tagが初期値です。用途の異なる設定バックアップ、ログ出力、文書インデックス出力を区別し、試験環境で復元後のジョブと認証付きクロールを確認してから移行します。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です