Elasticsearch のスナップショットとリストア (fs / S3 リポジトリ、SLM)
Elasticsearchレベル: 中級所要時間: 45–90 分インストール済みの Elasticsearch 8.x / 9.x クラスタにスナップショット (バックアップ) の仕組みを構築し、復旧手順を説明します。対象は、共有ファイルシステム (NFS + path.repo) または S3 (keystore) リポジトリ、rolling restart による有効化と検証、手動スナップショット (indices、include_global_state、feature_states)、SLM によるスケジュール済みスナップショットと保持 (expire_after/min_count/max_count)、新しい名前または閉じたインデックスへのリストア、feature state のリストア、監視、同じリポジトリを読み取り専用で登録して別クラスタへ移行する手順です。最終的に、毎日自動で取得され、リストアできることを確認済みのスナップショットが得られます。Elasticsearch で有効なバックアップはスナップショットだけです。同一クラスタ内での mapping/シャード変更には reindex を、単一インデックスをすばやく戻すには運用ガイドのシナリオを使います。
構成: Elasticsearch 8.x / 9.x クラスタ (1–N ノード) + 共有ディレクトリ (NFS) または S3 互換オブジェクトストレージ
開始前の確認
- クラスタが正常 (green) で、elastic (または manage + snapshot 権限を持つユーザー) のパスワードが手元にあること。リポジトリ設定ではノードの再起動が必要なため、クラスタが 1 ノードの喪失に耐えられること (レプリカが割り当て済み) を確認します。
- すべてのノードに HTTP CA ファイル (…) があること。API 呼び出しはこの CA で検証されます。
- … がすべてのマスターノードとデータノードで同じ共有 (NFS) にマウントされ、fstab で永続化されていること。elasticsearch ユーザーの UID/GID はすべてのノードで同じにするか、共有を all_squash,anonuid=…,anongid=… で単一ユーザーにマッピングする必要があります。そうしないとノード同士が互いの書き込んだファイルを読めません。共有されていないローカルディレクトリは、複数ノードのクラスタではリポジトリ検証でエラーになります。
- … バケットが作成済みで、アクセスキー (access key / secret key) にこのバケットに対する s3:ListBucket、s3:GetObject、s3:PutObject、s3:DeleteObject、s3:AbortMultipartUpload、s3:ListMultipartUploadParts、s3:ListBucketMultipartUploads 権限があること。ノードから … に HTTPS で接続できること。
- 共有に十分な空き容量があること。最初のスナップショットはインデックスのディスク上のサイズ分の容量を使い、以降は変更されたセグメントだけを追加します (増分)。
- バージョンのルールを理解していること。スナップショットは同じかより新しいバージョンのクラスタにリストアでき、古いバージョンにはリストアできません。インデックスは、作成されたメジャーバージョンの次のメジャーバージョンまでしかリストアできません (8.x で作成したインデックスは 9.x に戻せますが、7.x で作成したインデックスは 9.x に通常のインデックスとしてリストアできません)。
- すべてのノードで root 権限があり、rolling restart 用のメンテナンスウィンドウがあること。
ガイドのフェーズ
- API アクセス (全ノード) — API 用の一時認証情報ファイル · クラスタと既存のリポジトリを確認する
- 共有ファイルシステムの準備 (全ノード) — NFS 共有をマウントする · ディレクトリの権限を設定し、書き込みをテストする · path.repo 設定を追加する
- S3 の認証情報とクライアント設定 (全ノード) — S3 アクセスキーを keystore に追加する · S3 クライアント設定を追加する
- リポジトリを登録して検証する — リポジトリを登録する · リポジトリを検証する
- 手動スナップショット — テスト用インデックスを作成する · スナップショットを取得する · スナップショットの状態を監視する
- SLM による自動スナップショット — SLM ポリシーを作成する · ポリシーを今すぐ実行する · SLM の状態と統計を確認する · 保持処理を手動で実行する
- リストア — インデックスを新しい名前でリストアする · リストアを監視し、ドキュメント数を比較する · リストアしたコピーを削除する · インデックスを閉じてインプレースでリストアする · feature state をリストアする
- 別クラスタへの移行 — 移行先クラスタの準備 · リポジトリを読み取り専用で登録する · 移行先クラスタでインデックスをリストアする · 移行先の認証情報ファイルを削除する
- 監視とメンテナンス — スナップショットの健全性を監視する · リポジトリのクリーンアップ · 認証情報ファイルを削除する · 定期的なリストア訓練