DBAtlas · データベース運用アトラス

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 証明書を準備する · 監視とバックアップのチェックリストを適用する · 一時的な認証情報ファイルを削除する
環境に合わせた手順プランを開く →