[前回] 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クラスタを構築しました。
次回も続きます。お楽しみに。