「最新のElasticsearchをインストールしたい」
「UbuntuにElasticsearch 8をインストールしたい」
「curl: (52) Empty reply from serverというエラーが出てしまう・・・」
本記事の内容
- Elasticsearchとは?
- Elasticsearch 8のシステム要件
- Elasticsearch 8のインストール
- Elasticsearch 8の動作確認
それでは、上記に沿って解説していきます。
Elasticsearchとは?
Elasticsearchとは、分散型で無料かつオープンな検索・分析エンジンです。
Elasticsearchの詳細については、次の記事で説明しています。
上記記事は、Elasticsearch 7のインストールについて記載しています。
ただ、Elasticsearchでできることはそれほど変わりません。
そのため、Elasticsearchについての説明は上記記事を参考にしてください。
しかし、Elasticsearch 8ではセキュリティ機能が改善されています。
その影響から、Elasticsearch 7と8では動作確認の方法が大きく異なります。
その違いに中心にして、この記事では解説しています。
以上、Elasticsearchについての説明でした。
次は、Elasticsearch 8のシステム要件を確認します。
Elasticsearch 8のシステム要件
現時点(2022年3月末)での Elasticsearchの最新バージョンは、8.1.1です。
この最新バージョンは、2022年3月23日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。
- Windows
- macOS
- Linux
そして、ElasticsearchではJavaが必須です。
Java 17が指定されています。
ただし、Javaを自分でインストールする必要はありません。
Elasticsearchをインストールしたら、一緒にインストールされます。
一緒にバンドルされているということです。
公式では、バンドルされているElasticsearchのインストールが推奨されています。
以上、Elasticsearch 8のシステム要件について説明しました。
次は、Elasticsearch 8をインストールしていきましょう。
Elasticsearch 8のインストール
今回の検証では、次のOSにElasticsearchをインストールします。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
まず、パッケージを確認します。
$ sudo apt show elasticsearch N: パッケージ elasticsearch が見つかりません N: パッケージ elasticsearch が見つかりません E: パッケージが見つかりません
なにも見つかりません。
Ubuntuの公式リポジトリには、存在していないということです。
そこで、Elasticsearchの開発元が公開しているリポジトリを見に行くようにします。
そのための作業を行っていきます。
まずは、そのリポジトリ(パッケージ)の身元を確認するためにPGPキーをインストールします。
バージョン7と8では、利用するコマンドが若干異なります。
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
次に、リポジトリ定義を保存します。
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
定義を確認します。
$ sudo cat /etc/apt/sources.list.d/elastic-8.x.list deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main
パッケージの取得先が、保存されています。
では、この取得先をパッケージ管理システムに認識させましょう。
$ sudo apt-get update
上記が完了したら、Elasticsearchのパッケージを確認します。
先ほどは、何も表示されませんでした。
$ sudo apt show elasticsearch Package: elasticsearch Version: 8.1.1 Priority: optional Section: web Source: elasticsearch Maintainer: Elasticsearch Team <info@elastic.co> Installed-Size: 1,100 MB Depends: bash (>= 4.1), lsb-base (>= 4), libc6, adduser, coreutils (>= 8.4) Conflicts: elasticsearch-oss Homepage: https://www.elastic.co/ License: Elastic-License Download-Size: 516 MB APT-Sources: https://artifacts.elastic.co/packages/8.x/apt stable/main amd64 Packages Description: Distributed RESTful search engine built for the cloud Reference documentation can be found at https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html and the 'Elasticsearch: The Definitive Guide' book can be found at https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
最新版のElasticsearchのパッケージを認識できています。
あとは、aptコマンドでインストールするだけです。
$ sudo apt-get install elasticsearch
インストールには、少しだけ時間がかかります。
インストールが完了したら、次のように表示されます。
Creating elasticsearch group... OK Creating elasticsearch user... OK elasticsearch (8.1.1) を展開しています... elasticsearch (8.1.1) を設定しています ...
バージョン7までは、上記の表示で終わりでした。
しかし、バージョン8からは次のような表示が追加されています。
--------------------------- 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 : ●●●●●●● 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'.
「●●●●●●●」は、パスワードが記載されています。
控えておきましょう。
動作確認の際にも利用します。
あと、丁寧に以下の記載も追加されています。
デフォルトでは、ElasticsearchはOS起動時には起動しません。
以下のコマンドを実行すれば、OS起動時にElasticsearchが自動起動するようになります。
### 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
以上、Elasticsearch 8のインストールに関しての説明でした。
最後に、Elasticsearch 8の動作確認を行います。
Elasticsearch 8の動作確認
最初に、Elasticsearchを起動します。
sudo systemctl start elasticsearch.service
動作確認を行う前に、Elasticsearchの起動状況の確認からです。
$ sudo systemctl status elasticsearch.service ● elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-03-24 07:47:41 JST; 1s ago Docs: https://www.elastic.co Main PID: 36262 (java) Tasks: 59 (limit: 9514) Memory: 4.2G CGroup: /system.slice/elasticsearch.service ├─36262 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkad> └─36561 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
「Active: active (running)」であることを確認しましょう。
Elasticsearchの起動を確認できたら、次のコマンドを実行します。
sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200
この動作確認用のコマンドが、Elasticsearch 7とは大きく異なります。
デフォルトでは、httpは未対応になりました。
つまり、httpsのURLでないとElasticsearch にアクセスできません。
その関係上、証明書が必要となっています。
上記コマンドを実行すると、次のようにパスワードを求められます。
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200 Enter host password for user 'elastic':
「elastic」とは、Elasticsearchのrootみたいなモノです。
パスワードは、「●●●●●●●」を入力します。
「●●●●●●●」は、インストール完了後時に表示されていました。
パスワードが適切であれば、次のような結果が表示されます。
{ "name" : "ubuntu-focal", "cluster_name" : "elasticsearch", "cluster_uuid" : "jpxS2WAlTdOyMNL90rCjPQ", "version" : { "number" : "8.1.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "d0925dd6f22e07b935750420a3155db6e5c58381", "build_date" : "2022-03-17T22:01:32.658689558Z", "build_snapshot" : false, "lucene_version" : "9.0.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }
Elasticsearch 7では、次のコマンドだけで済みました。
curl http://localhost:9200
しかし、Elasticsearch 8では次のようにエラーとなります。
(設定を変更すれば、エラーではなくなる)
$ curl http://localhost:9200 curl: (52) Empty reply from server
Elasticsearch 8では、デフォルトでのセキュリティが向上していることを実感できます。
以上、Elasticsearch 8の動作確認を説明しました。