【Ubuntu】Elasticsearch 8のインストール

【Ubuntu】Elasticsearch 8のインストール サーバー

「最新の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の動作確認を説明しました。

タイトルとURLをコピーしました