今回はCentOS9にElasticSearchをインストールした時の、実行結果を紹介します。
サーバ1台、シングルノードクラスタで設定しています。
環境
利用する環境は以下の通りです。
OS | CentOS Stream release 9 |
ElasticSearch | elasticsearch-8.15.3-1 |
インストール手順
Step1. Javaのインストール
Elasticsearchは Java を必要としますが、最新バージョンでは統合されたJavaが含まれているため、別途インストールする必要はないようです。
Step2. Elasticsearchリポジトリの追加
ElasticSearchをインストールするためのリポジトリを追加します。
以下のコマンドを実行します。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-8.x]
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=1
autorefresh=1
type=rpm-md
EOF
実行結果は以下の通りです。
[root@localhost ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@localhost ~]#
[root@localhost ~]# cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-8.x]
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=1
autorefresh=1
type=rpm-md
EOF
[elasticsearch-8.x]
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=1
autorefresh=1
type=rpm-md
[root@localhost ~]#
[root@localhost ~]# yum repolist
repo id repo の名前
appstream CentOS Stream 9 - AppStream
baseos CentOS Stream 9 - BaseOS
elasticsearch-8.x Elasticsearch repository for 8.x packages
extras-common CentOS Stream 9 - Extras packages
mysql-8.4-lts-community MySQL 8.4 LTS Community Server
mysql-connectors-community MySQL Connectors Community
mysql-tools-8.4-lts-community MySQL Tools 8.4 LTS Community
rundeck rundeck
[root@localhost ~]#
Step3. Elasticsearchのインストール
ElasticSearchをインストールします。
以下のコマンドを実行します。
dnf install elasticsearch
実行結果は以下の通りです。
[root@localhost ~]# dnf install elasticsearch
CentOS Stream 9 - BaseOS 4.1 MB/s | 9.4 MB 00:02
CentOS Stream 9 - AppStream 6.1 MB/s | 19 MB 00:03
CentOS Stream 9 - Extras packages 38 kB/s | 19 kB 00:00
Elasticsearch repository for 8.x packages 4.5 MB/s | 74 MB 00:16
MySQL 8.4 LTS Community Server 2.7 MB/s | 642 kB 00:00
MySQL Connectors Community 479 kB/s | 68 kB 00:00
MySQL Tools 8.4 LTS Community 610 kB/s | 296 kB 00:00
rundeck 736 kB/s | 2.8 MB 00:03
依存関係が解決しました。
====================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
====================================================================================================================
インストール:
elasticsearch aarch64 8.15.3-1 elasticsearch-8.x 436 M
トランザクションの概要
====================================================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 436 M
インストール後のサイズ: 705 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
elasticsearch-8.15.3-aarch64.rpm 8.1 MB/s | 436 MB 00:53
--------------------------------------------------------------------------------------------------------------------
合計 8.1 MB/s | 436 MB 00:53
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
scriptletの実行中: elasticsearch-8.15.3-1.aarch64 1/1
Creating elasticsearch group... OK
Creating elasticsearch user... OK
インストール中 : elasticsearch-8.15.3-1.aarch64 1/1
scriptletの実行中: elasticsearch-8.15.3-1.aarch64 1/1
--------------------------- Security autoconfiguration information ------------------------------
Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.
The generated password for the elastic built-in superuser is : [elasticユーザのパスワードが表示されます]
If this node should join an existing cluster, you can reconfigure this with
'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'
after creating an enrollment token on your existing cluster.
You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.
Generate an enrollment token for Kibana instances with
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.
Generate an enrollment token for Elasticsearch nodes with
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.
-------------------------------------------------------------------------------------------------
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
/usr/lib/tmpfiles.d/elasticsearch.conf:1: Line references path below legacy directory /var/run/, updating /var/run/elasticsearch → /run/elasticsearch; please update the tmpfiles.d/ drop-in file accordingly.
検証中 : elasticsearch-8.15.3-1.aarch64 1/1
インストール済み:
elasticsearch-8.15.3-1.aarch64
完了しました!
[root@localhost ~]#
Step4. Elasticsearchの起動と自動起動の有効化
ElasticSearchのサービスを起動、自動起動の有効化を実施します。
以下のコマンドを実行します。
systemctl enable --now elasticsearch
実行結果は以下の通りです。
[root@localhost ~]# systemctl status elasticsearch
○ elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; preset: disabled)
Active: inactive (dead)
Docs: https://www.elastic.co
[root@localhost ~]#
[root@localhost ~]# systemctl enable --now elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /usr/lib/systemd/system/elasticsearch.service.
[root@localhost ~]#
[root@localhost ~]# systemctl status elasticsearch -l
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; preset: disabled)
Active: active (running) since Sat 2024-10-26 22:03:06 JST; 1min 1s ago
Docs: https://www.elastic.co
Main PID: 122363 (java)
Tasks: 81 (limit: 22571)
Memory: 2.1G
CPU: 32.576s
CGroup: /system.slice/elasticsearch.service
├─122363 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=server -Dcli.script=/usr/share/elasticsearch/bin/elasticsearch -Dcli.libs=lib>・・・
├─122422 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -Djava.security.manager=allow -XX:+AlwaysPreT>・・・
└─122444 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-aarch64/bin/controller
10月 26 22:02:21 localhost.localdomain systemd[1]: Starting Elasticsearch...
10月 26 22:02:24 localhost.localdomain systemd-entrypoint[122363]: 10 26, 2024 10:02:24 午後 sun.util.locale.provider.LocaleProviderAdapter <clinit>
10月 26 22:02:24 localhost.localdomain systemd-entrypoint[122363]: WARNING: COMPAT locale provider will be removed in a future release
10月 26 22:03:06 localhost.localdomain systemd[1]: Started Elasticsearch.
[root@localhost ~]#
Step5. ファイアーウォール設定 ※必要に応じて設定
firewalldサービスが起動していて、9200/tcp、9300/tcpポートが許可されていない場合は、許可設定の追加が必要です。
以下のコマンドを実行します。
firewall-cmd --add-port={9200/tcp,9300/tcp}
firewall-cmd --runtime-to-permanent
実行結果は以下の通りです。
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --add-port={9200/tcp,9300/tcp}
success
[root@localhost ~]# firewall-cmd --runtime-to-permanent
success
[root@localhost ~]#
[root@localhost ~]# firewall-cmd --list-all
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'trusted' (see --get-active-zones)
You most likely need to use --zone=trusted option.
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client ssh
ports: 9200/tcp 9300/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]#
Step6. 設定ファイル/etc/elasticsearch/elasticsearch.yml修正
ElasticSearchの設定ファイル(/etc/elasticsearch/elasticsearch.yml)を修正します。
デフォルトの設定から修正した箇所は以下の通りです。
[root@localhost elasticsearch]# pwd
/etc/elasticsearch
[root@localhost elasticsearch]#
[root@localhost elasticsearch]# diff elasticsearch.yml.org elasticsearch.yml
17a18
> cluster.name: my-test-cluster
23a25
> node.name: node-1
56a59
> network.host: [サーバのIPアドレス]
109c113
< cluster.initial_master_nodes: ["localhost"]
---
> cluster.initial_master_nodes: ["node-1"]
[root@localhost elasticsearch]#
設定項目 | 説明 |
---|---|
cluster.name | クラスター名を指定します。 同じクラスター名を持つノードでクラスターが構成されます。 |
node.name | ノードの一意な名前を設定します。 デフォルトではホスト名が使用されます。 |
network.host | ElasticSearchへアクセスできるネットワークアドレスを指定します。 デフォルトは自分自身のみアクセスできる設定となります。 |
cluster.initial_master_nodes | クラスター初期化時のマスターノード候補を指定します。 複数ノードでクラスターを構成する場合に特に重要で、スプリットブレイン問題を防ぐために必要な設定です。 |
設定ファイルの修正が完了したら、設定反映のためサービス再起動を行います。
systemctl restart elasticsearch
動作確認
ElasticSearchにアクセスできるか確認します。
以下のコマンドを実行します。
HTTPリクエストを受け付けるデフォルトのポート番号は9200になります。
curl -u elastic --cacert /etc/elasticsearch/certs/http_ca.crt https://127.0.0.1:9200
実行結果は以下の通りです。
elasticユーザはElasticSearchの管理ユーザです。パスワードはElasticSearchインストール時に自動的に生成されており、標準出力で表示されるため、そちらを入力します。
実行結果から、正常に結果が返ってきたことが確認できました。
[root@localhost elasticsearch]# curl -u elastic --cacert /etc/elasticsearch/certs/http_ca.crt https://127.0.0.1:9200
Enter host password for user 'elastic':
{
"name" : "node-1",
"cluster_name" : "my-test-cluster",
"cluster_uuid" : "ai1-d5_aSPKvJavuxzCpHA",
"version" : {
"number" : "8.15.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "f97532e680b555c3a05e73a74c28afb666923018",
"build_date" : "2024-10-09T22:08:00.328917561Z",
"build_snapshot" : false,
"lucene_version" : "9.11.1",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
[root@localhost elasticsearch]#
セキュリティの観点から、elasticユーザのパスワードは、初期パスワードから変更することが望ましいです。
elasticユーザーは強力な管理者権限を持つため、セキュリティを考慮して強力なパスワードを設定することが重要です。また、運用環境では定期的にパスワードを変更することをおすすめします。
まとめ
今回は、ElasticSearchをインストールし、シングル構成で設定した内容を共有しました。
ご参考になれば、幸いです。
以上になります。ありがとうございました。
参考
https://www.server-world.info/query?os=CentOS_Stream_9&p=elasticstack8&f=1
https://qiita.com/Esfahan/items/3c07bfbb57c7098e9531
https://kazuhira-r.hatenablog.com/entry/2019/11/17/234315
https://qiita.com/mkyz08/items/583c5d731a308fa89723
https://dev.classmethod.jp/articles/elasticsearch-starter4/
https://engineering.mercari.com/blog/entry/20220311-97aec2a2f8/
コメント