- 前提条件の準備 Linuxサーバー3台(各々16GBメモリ、8コアCPU、50GBディスク)
JDK 17 環境の設定
elasticsearch-8.17.2-linux-x86_64.tar.gz インストールパッケージ
-
クラスタープランニング Elasticsearchクラスターでは、ノードが異なる役割を担います: マスターノード(Master Node):クラスター管理、ノード選挙、インデックスメタデータ管理を行います。高可用性を確保するためには少なくとも3つのマスターノードを設定することをお勧めします。 データノード(Data Node):データの保存とクエリ処理を担当します。データ量やクエリ負荷に応じて適切なハードウェアスペックを選択してください。 調整ノード(Client/Coordinating Node):クライアントからのリクエストを受け取り、適切なノードに分散します。大規模な並列クエリ処理に適しています。 専用マシンラーニングまたは検索最適化ノード:機能拡張が必要な場合、個別のリソースを割り当てることを検討してください。実際の業務負荷に基づいてノード数やハードウェア構成を計画しましょう。
-
環境設定 vi /etc/security/limits.conf に以下の行を追加:
* soft nofile 65536
* hard nofile 65536
vi /etc/sysctl.conf に以下を追加:
vm.max_map_count = 262144
sysctl -p を実行して設定を反映します。
- インストールと設定 elasticsearch-8.17.2-linux-x86_64.tar.gz を解凍します:
tar -zxvf elasticsearch-8.17.2-linux-x86_64.tar.gz
- Elasticsearchはrootユーザーでの実行を許可しないため、esユーザーを作成します。
- dataフォルダとcertsフォルダを作成します。この操作は3台のサーバーで共通です。
次に、証明書を生成します(マスターノードで実施):
# CA証明書の作成
elasticsearch/bin/elasticsearch-certutil ca
# 証明書の発行
elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
生成されたelastic-certificates.p12とelastic-stack-ca.p12をcertsフォルダに配置します。HTTP証明書を発行します:
elasticsearch/bin/elasticsearch-certutil http
プロンプトに従って3つのノード名(node1, node2, node3)と対応するIPアドレスを入力し、http.p12ファイルをcertsフォルダに配置します。
config/elasticsearch.ymlの設定例:
# クラスター名の設定
cluster.name: es-cluster
# ノード名の設定
node.name: node1
# ノードの役割
node.roles: [master, data]
# データおよびログファイルのパス設定
path.data: /elasticsearch/data
path.logs: /elasticsearch/logs
# ネットワークアクセス設定
network.host: 192.168.118.129
http.port: 9200
# 発見ホストの設定
discovery.seed_hosts:
- 192.168.118.129
- 192.168.118.131
- 192.168.118.132
# 初期マスターノードの設定
cluster.initial_master_nodes:
- node1
- node2
- node3
# セキュリティ設定
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: /java/elasticsearch/config/certs/http.p12
truststore.path: /java/elasticsearch/config/certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: /java/elasticsearch/config/certs/elastic-certificates.p12
truststore.path: /java/elasticsearch/config/certs/elastic-certificates.p12
他の2台のサーバーについても同様に証明書をコピーし、それぞれのelasticsearch.ymlを適切に設定します。node.nameとnetwork.hostをそれぞれのノードに対応させます。
最後に、ES_JAVA_HOME環境変数を設定し、esユーザーに適切な権限を付与します:
chown -R es:es /elasticsearch
それぞれのサーバーでElasticsearchを起動します:
./elasticsearch
ログには自動生成されたユーザ名とパスワードが記録されます(例:elastic)。
クラスター動作確認:
ブラウザから https://<master-ip>:9200 にアクセスし、認証情報を入力することでクラスター情報が取得できます。また、次のAPIでノード一覧を確認できます:
GET https://<master-ip>:9200/_cat/nodes
注意点:サービスからElasticsearchクラスターに接続する際には、証明書をインポートする必要があります。接続はHTTPSを使用してください。