Elasticsearchクラスターの構築

  1. 前提条件の準備 Linuxサーバー3台(各々16GBメモリ、8コアCPU、50GBディスク)

JDK 17 環境の設定

elasticsearch-8.17.2-linux-x86_64.tar.gz インストールパッケージ

  1. クラスタープランニング Elasticsearchクラスターでは、ノードが異なる役割を担います: マスターノード(Master Node):クラスター管理、ノード選挙、インデックスメタデータ管理を行います。高可用性を確保するためには少なくとも3つのマスターノードを設定することをお勧めします。 データノード(Data Node):データの保存とクエリ処理を担当します。データ量やクエリ負荷に応じて適切なハードウェアスペックを選択してください。 調整ノード(Client/Coordinating Node):クライアントからのリクエストを受け取り、適切なノードに分散します。大規模な並列クエリ処理に適しています。 専用マシンラーニングまたは検索最適化ノード:機能拡張が必要な場合、個別のリソースを割り当てることを検討してください。実際の業務負荷に基づいてノード数やハードウェア構成を計画しましょう。

  2. 環境設定 vi /etc/security/limits.conf に以下の行を追加:

* soft nofile 65536  
* hard nofile 65536

vi /etc/sysctl.conf に以下を追加:

vm.max_map_count = 262144

sysctl -p を実行して設定を反映します。

  1. インストールと設定 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.namenetwork.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を使用してください。

タグ: Elasticsearch linux JDK

6月26日 22:29 投稿