3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Elasticsearchクラスタ検証(4): Elasticsearch 8.xのクラスタ化(HTTPS対応)

Last updated at Posted at 2022-08-11
[前回] Elasticsearchクラスタ検証(3): Elasticsearch 8.xのクラスタ化(HTTPS未対応)

はじめに

前回は、HTTPS未対応の3ノードElasticsearchクラスタを構築しました。
今回は、まっさらからHTTPS対応の3ノードElasticsearchクラスタを構築します。

  • node1: AlmaLinux8-1
  • node2: AlmaLinux8-2
  • node3: AlmaLinux8-3

node1で、以下実施(管理者権限)

ファイアウォール設定

  • ノード間通信を可能にするため、ポート9200、9300へのアクセス許可
# firewall-cmd --add-port={9200,9300}/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-port
9200/tcp 9300/tcp

/etc/hostsに3ノードのIPアドレスを追加

172.21.192.11 node1
172.21.192.12 node2
172.21.192.13 node3

Elasticsearchを削除

まっさらからElasticsearchをインストールするため、
Elasticsearchを停止してから削除します。

# systemctl stop elasticsearch
# dnf remove elasticsearch --enablerepo=elasticsearch -y
# rm -rf /var/lib/elasticsearch
# rm -rf /etc/elasticsearch
# rm -rf /usr/share/elasticsearch

Elasticsearchをインストール

  • EslasticsearchリポジトリのGPG keyをインポート
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  • rpm repositoryを登録
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
  • RPMパッケージをインストール
# dnf check-update --enablerepo=elasticsearch
# dnf install elasticsearch --enablerepo=elasticsearch -y

Elasticsearchをサービスとして有効化

# systemctl enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

Elasticsearchの設定ファイルを編集

/etc/elasticsearch/elasticsearch.ymlに、下記項目を設定し保存

  • クラスタ名
    • cluster.name: mycluster
  • クラスタ参加ノード
    • discovery.seed_hosts: ["node1", "node2", "node3"]
  • Elasticsearchサービスに他のノードからアクセス可能に
    • network.host: 0.0.0.0
  • index自動作成設定を最終行に追加
    • action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

Elasticsearchを起動し、elasticユーザーのパスワードをリセット

  • Elasticsearchを起動
# systemctl start elasticsearch
  • elasticユーザーのパスワードをリセット
# /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Re-enter password for [elastic]:
Password for the [elastic] user successfully reset.
  • Elasticsearchにhttpsアクセスし、ステータス確認
# curl -k -u elastic https://localhost:9200
Enter host password for user 'elastic':
{
  "name" : "node1",
  "cluster_name" : "mycluster",
  "cluster_uuid" : "FyfnAcg5TI-OGB6VWfUysg",
  "version" : {
    "number" : "8.3.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "801fed82df74dbe537f89b71b098ccaff88d2c56",
    "build_date" : "2022-07-23T19:30:09.227964828Z",
    "build_snapshot" : false,
    "lucene_version" : "9.2.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

node1のみで構成されたクラスタに、他のノード登録用トークンを作成

# /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
eyJ2ZXI...(中略)...cifQ==

作成された登録トークンを控える

node2で、以下実施(管理者権限)

ファイアウォール設定

  • ノード間通信を可能にするため、ポート9200、9300へのアクセス許可
# firewall-cmd --add-port={9200,9300}/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-port
9200/tcp 9300/tcp

/etc/hostsに3ノードのIPアドレスを追加

172.21.192.11 node1
172.21.192.12 node2
172.21.192.13 node3

Elasticsearchを削除

まっさらからElasticsearchをインストールするため、
Elasticsearchを停止してから削除します。

※ 既に起動されているノードをクラスタに登録できません。登録時に以下のエラーが発生します。

ERROR: Skipping security auto configuration because it appears that the node is not starting up for the first time. The node might already be part of a cluster and this auto setup utility is designed to configure Security for new clusters only.
# systemctl stop elasticsearch
# dnf remove elasticsearch --enablerepo=elasticsearch -y
# rm -rf /var/lib/elasticsearch
# rm -rf /etc/elasticsearch
# rm -rf /usr/share/elasticsearch

Elasticsearchをインストール

  • EslasticsearchリポジトリのGPG keyをインポート
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  • rpm repositoryを登録
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
  • RPMパッケージをインストール
# dnf check-update --enablerepo=elasticsearch
# dnf install elasticsearch --enablerepo=elasticsearch -y

Elasticsearchをサービスとして有効化

# systemctl enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.

node1で作成した登録トークンを使用し、node2をクラスタに登録

# /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXI...(中略)...cifQ==

This node will be reconfigured to join an existing cluster, using the enrollment token that you provided.
This operation will overwrite the existing configuration. Specifically:
  - Security auto configuration will be removed from elasticsearch.yml
  - The [certs] config directory will be removed
  - Security auto configuration related secure settings will be removed from the elasticsearch.keystore
Do you want to continue with the reconfiguration process [y/N]y

Elasticsearchの設定ファイルを編集

/etc/elasticsearch/elasticsearch.ymlに、下記項目を設定し保存

  • クラスタ名
    • cluster.name: mycluster
  • Elasticsearchサービスに他のノードからアクセス可能に
    • network.host: 0.0.0.0
  • index自動作成設定を最終行に追加
    • action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

Elasticsearchを起動

# systemctl start elasticsearch
  • Elasticsearchへhttpsアクセスし、ステータス確認
# curl -k -u elastic https://localhost:9200
Enter host password for user 'elastic':
{
  "name" : "node2",
  "cluster_name" : "mycluster",
  "cluster_uuid" : "FyfnAcg5TI-OGB6VWfUysg",
  "version" : {
    "number" : "8.3.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "801fed82df74dbe537f89b71b098ccaff88d2c56",
    "build_date" : "2022-07-23T19:30:09.227964828Z",
    "build_snapshot" : false,
    "lucene_version" : "9.2.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

node3でnode2と同じ手順を実施(管理者権限)

(略)

いずれかのノードで、クラスタのステータスを確認


# curl -k -u elastic https://localhost:9200/_cat/nodes?v
Enter host password for user 'elastic':
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
172.21.192.12           19          95   0    0.15    0.09     0.07 cdfhilmrstw -      node2
172.21.192.13           40          95   1    0.37    0.19     0.07 cdfhilmrstw -      node3
172.21.192.11           44          91   1    0.00    0.00     0.00 cdfhilmrstw *      node1

クラスタにノードが三つ存在し、node1がmasterになっています。

おわりに

HTTPS対応の3ノードElasticsearchクラスタを構築しました。
次回も続きます。お楽しみに。

[次回] Elasticsearchクラスタ検証(5): Elasticsearchシステム構成の基本
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?