Elasticsearch cluster の構築 (3+ ノード、TLS、Kibana)
Elasticsearchレベル: 中級所要時間: 60~90 分3 ノード以上の Elasticsearch 8.x / 9.x cluster をゼロから構築します。Elastic リポジトリ、RAM に応じた heap、memory lock、vm.max_map_count、最初のノードでの自動セキュリティ設定 (TLS + elastic パスワード)、enrollment token による他ノードの参加、master/data ロールの共用または分離、Kibana のインストールと enrollment、共有 snapshot リポジトリと夜間の SLM ポリシーまでを扱います。完了すると、TLS とパスワードで保護され、green 状態で、Kibana を備え、毎晩 snapshot を取得する cluster ができあがります。構築済み cluster の日常運用 (shard、ディスク、ノードの追加/削除)、セキュリティ強化、snapshot/restore、バージョンアップグレードは別の Elasticsearch ガイドで扱います。
構成: Elasticsearch ノード 3 台以上 (+ 任意で Kibana サーバー)
開始前の確認
- すべてのサーバーが同一かつサポート対象の OS バージョンで、最新の状態であること。時刻が同期されていること (chrony)。時刻にずれがあると TLS 証明書や token が無効と判定されることがあります。
- 各ノードの RAM は … GB (heap は … MB になります)、CPU は 2 個以上。Elasticsearch には専用の JDK が同梱されているため、Java を別途インストールしないでください。
- … に十分な空き容量があること (ディスク使用率が 85% に達すると data ノードに新しい shard が割り当てられなくなり、90% で shard が他のノードへ移動し始めます)。SSD を推奨します。
- ホスト名と IP が固定されていること: ……=……, ………, …=……。ノード間で 9300 (transport)、クライアントからノードへ 9200 (HTTPS)…、ユーザーから Kibana へ 5601… が開放されていること。
- サーバーから artifacts.elastic.co に HTTPS で接続できること (または社内ミラーが設定されていること)。インストール可能なバージョンは、リポジトリ追加後に以下のコマンドで一覧表示されます。
- サーバーに古い Elasticsearch のインストールやデータディレクトリが残っていないこと (古い cluster のデータがあると、ノードは新しい cluster に参加できません)。
- … がすべての master ノードと data ノードで同じ NFS 共有にマウントされていること (fstab で永続化)。共有には elasticsearch ユーザーの書き込み権限が必要です。ユーザーの UID が全ノードで同じでない場合は、NFS 側で all_squash,anonuid=… を使うか UID を揃えてください。
- root/sudo 権限、メンテナンスウィンドウ、サーバーの snapshot が用意されていること。enrollment token の有効期間は 30 分です。他のノードを参加させる手順は中断せずに実施してください。
ガイドのフェーズ
- OS の準備 — ホスト名を設定する · ホスト名を設定する (Kibana) · 名前解決を設定する (/etc/hosts) · 基本ツールをインストールし時刻を同期する · カーネルパラメータを書き込む (vm.max_map_count) · sysctl 設定を適用する …
- Elastic リポジトリとソフトウェアのインストール — Elastic の GPG キーをインポートする · Elastic リポジトリを定義する · Elastic リポジトリを定義する · インストール可能なバージョンを一覧表示する · Elasticsearch をインストールする · バージョンを固定する
- Heap、メモリロック、ディレクトリ — Heap サイズを設定する · ファイルの所有者を設定する (heap.options) · systemd でメモリロックを許可する · systemd をリロードする · データディレクトリを準備する · Snapshot ディレクトリの権限を設定する
- 最初のノード: cluster を起動する — elasticsearch.yml を作成する (1 番目のノード) · ファイルの所有者を設定する (elasticsearch.yml) · サービスを起動する (1 番目のノード) · elastic ユーザーのパスワードを設定する · API アクセス用の一時的な認証情報ファイルを作成する · cluster の状態を確認する (単一ノード) …
- cluster の形成を完了する — すべてのノードが参加したことを確認する · cluster.initial_master_nodes の行を削除する · 1 番目のノードを専用 master に変更する: shard を退避する · 1 番目のノードのロールを master にしデータディレクトリを消去する · 一時的な allocation ルールを削除する
- 検証 — cluster の正常性を確認する · メモリロックと heap を確認する · master の選出と投票構成を確認する · テスト用 index で shard の配置を確認する · ログファイルを確認する
- Kibana のインストールと enrollment — Kibana をインストールする · 待ち受けアドレスを設定する · Kibana 用の enrollment token を作成する · Kibana を cluster に接続する (kibana-setup) · Kibana を複数のノードに接続する · 暗号化キーを生成する …
- Snapshot リポジトリ — リポジトリを登録し検証する · 夜間の snapshot ポリシーを定義する (SLM)
- インストール後 — アプリケーション用のユーザーとロールを作成する · クライアント用の CA 証明書を準備する · 監視とバックアップのチェックリストを適用する · 一時的な認証情報ファイルを削除する