お金をかけずにサーバーの勉強をしよう

OpenSearchインストール

2023年7月13日

メニューへ戻る

こんにちは。

このサイトも、書くものが増える度にブログ様になってきていますが、私は元々こういう語りかけのスタイルの方が書きやすいのかも知れません。

数年前に Windowsサーバーやら Linuxサーバーのログを OSSを使って画一的に収集することが流行ったことがあって、その形態は

ログ吐き元 → ログ収集サーバー → データベース → GUIツール

という感じの構成なんですが、ログ収集サーバーの代表的なものとして

がありました。

fluentdは Rubyでできていて、私は Rubyを触ったことが無かったものですから、Logstashでやってみることにしました。

Logstashは Elastic社が作っているんですが、同社のメインプロダクトが Elasticsearch という全文検索データベースなものですから、上記の仕組みで収集したログの格納先 DBとして Elasticsearch、収集したログを見る GUIとして、やはり同社の Kibanaってツールを知るに至りました。

そうして Elasticsearchを知ることとなり、それが(一応) OSSにも関わらずエラく高機能なものであることを知って、データ分析基盤としての DBとして Elasticsearchを仕事で使ってみたいと思うようになりました。


丁度その頃パブリッククラウド界隈である問題が持ち上がりました。

クラウドサービスは OSSへの貢献なしに OSSを使って荒稼ぎをしている

というもので、AWSの Elasticsearchを使った全文検索サービスの AES(Amazon Elasticsearch Service)はその槍玉に上がった一つです。
(他には MongoDBとかあった)

Amazonと Elasticはお互いに批難の応酬をして、Elastic社が Elasticsearchの商用部分のソースのライセンスを変更して、クラウドサービスでの利用に制限をかけてしまいました。

Amazonはそれに従うと思いきや、いきなり Elastic社の商用部分のソースを一切省いたものを Elasticsearchからフォーク(分離)させて「Open Distro for Elasticsearch」として、Elastic社とは袂を分かって独自路線を行くことにしたんですね。

その後「Open Distro for Elasticsearch」が名前を変えたものがこれ。
OpenSearsh

ご参考:Elastic
シンプル&寛容になったElastic License v2の導入と、オプションのSSPLの維持について

ご参考:Amazon
OpenSearchのFAQ


大分前置きが長くなりましたが、ここでは OpenSearchをインストールしてみようと思います。

本家の Elasticsearchからフォークしたとは言っても、余り変わりはないので OpenSearchが分かるなら Elasticsearchも分かるでしょう、多分。


本家の Elasticも以前は完全OSS版を配布していたんですが、ライセンス変更後しばらくして無くなってしまったか、新しいバージョンの配布を止めてしまったようで、タダでやろうとすると OpenSearchにならざるを得ない様子です。
(もしかしたら私が見つけられてないだけかも知れませんが)

ただ上記の闘いが勃発した頃も、OSS版の Elasticsearchにはユーザー管理機能がなく(有償版にはあった)、Open Distro for Elasticsearchにはあったので、後者で環境構築の練習をしていた覚えがあります。

また長くなってしまいました…。


2023年7月13日時点の OpenSearchの最新バージョンは 2.8.0です。

ここでは、Ubuntu Server 22.04.2にインストールをします。
OS全体に影響する設定が入りますので、他のものと相乗りさせずに OpenSearch専用の OSを用意するのが良いでしょう。

Ubuntu Serverのインストールについては「Ubuntu Linux Serverをインストール」と「Ubuntu Serverの初期設定」に書いています。

Ubuntu Serverにログインできるようになっているところからスタートです。


0.インストール(残念な snap編)

Ubuntuへのインストールは、以前は細々と面倒だったのですが、現在は最新版が snapのパッケージが用意されていましたのでそれを使います。

subro@UbuntuServer2204-1:~$ snap search opensearch
Name        Version  Publisher  Notes  Summary
opensearch  2.8.0    medib      -      OpenSearch makes it easy to ingest, search, visualize, and analyze your data.

「snapかぁ…また変な改変が入ってないと良いけど…」とやや複雑な心境ながら、進めて行きます。

インストールします。

subro@UbuntuServer2204-1:~$ sudo snap install opensearch
error: snap "opensearch" is not available on stable but is available to install on the following
       channels:

       candidate  snap install --candidate opensearch
       beta       snap install --beta opensearch
       edge       snap install --edge opensearch

       Please be mindful pre-release channels may include features not completely tested or
       implemented. Get more information with 'snap info opensearch'.

は?安定版(stable)では使えないとな?

という感じですが、Ubuntu 22.04は LTS(安定版)ですから対象外ってことです。
今の所は 22.10と 23.04だけが対象ですかね。

2024年4月にリリースされるであろう安定版 Ubuntu 24.04では仲間に入れて欲しいところです。

そういう訳で、snap版利用は諦めます。
しかし snapは相変わらずですねぇ。


1.ダウンロード(debパッケージ編)

次の手ですが、Debian用の debパッケージはありますのでこちらでやってみます。

ダウンロードはこちらから。
Download & Get Started

[Platform:] に [Linux]を、[Package:] に [x64 / deb] を選択し、Downloadを押します。
ダウンロードサイト

ダウンロードが完了すると [opensearch-2.8.0-linux-x64.deb]ファイルができました。
好きな方法でこのファイルを Ubuntu Serverに持っていきます。

なお、WEBブラウザのない Ubuntu Serverで直接ダウンロードするのであれば、curlコマンドを使ってこんな風にやれます。

subro@UbuntuServer2204-1:~$ curl -Os https://artifacts.opensearch.org/releases/bundle/opensearch/2.8.0/opensearch-2.8.0-linux-x64.deb

subro@UbuntuServer2204-1:~$ ls -l opensearch-2.8.0-linux-x64.deb
-rw-rw-r-- 1 subro subro 741905792  7月 13 06:48 opensearch-2.8.0-linux-x64.deb



2.インストール(debパッケージ編)

インストール手順はこちらです。
Debian Step 1: Download and install OpenSearch

ダウンロードしたパッケージをインストールします。

subro@UbuntuServer2204-1:~$ sudo dpkg -i opensearch-2.8.0-linux-x64.deb
以前に未選択のパッケージ opensearch を選択しています。
(データベースを読み込んでいます ... 現在 109722 個のファイルとディレクトリがインストールされています。)
opensearch-2.8.0-linux-x64.deb を展開する準備をしています ...
Running OpenSearch Pre-Installation Script
opensearch (2.8.0) を展開しています...
opensearch (2.8.0) を設定しています ...
Running OpenSearch Post-Installation Script
### NOT starting on installation, please execute the following statements to configure opensearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable opensearch.service
### You can start opensearch service by executing
 sudo systemctl start opensearch.service
### Create opensearch demo certificates in /etc/opensearch/
 See demo certs creation log in /var/log/opensearch/install_demo_configuration.log
libc-bin (2.35-0ubuntu3.1) のトリガを処理しています ...

インストールできました。
メッセージに出ているように、この時点ではまだ OpenSearchは起動していません。


3.OpenSearch初期設定

手順はこちら。
Debian Step 3: Set up OpenSearch in your environment

OpenSearchの設定ファイル [/etc/opensearch/opensearch.yml]を編集します。

1箇所目:Ubuntu Serverのネットワークインターフェイス全てで待ち受ける設定
#network.host: 192.168.0.1
 ↓↓↓↓↓
network.host: 0.0.0.0  ← コメントアウトの[#]を消すのを忘れずに

2箇所目:本来は複数のノードで構成するものですがここではシングルノード構成にします
     [Discovery]のセクションの最後の行に入れたいので[Gateway]セクションの上に書きました。
# ---------------------------------- Gateway -----------------------------------
 ↓↓↓↓↓
discovery.type: single-node
# ---------------------------------- Gateway -----------------------------------

今回は初期インストールですので、手順にある [plugins.security.disabled: false] の設定はしなくて構いません。

次は Java起動時のメモリ割当てを変更します。
ここは各々のサーバー環境で割り当てられるメモリ量が変わってきますので適宜自分の環境に合わせましょう。

私の Ubuntu Serverは 8GBのメモリ割当になっているので、手順の通りに 4GBを OpenSearchに割り当てることにしました。

OpenSerchの JVM設定ファイル [/etc/opensearch/jvm.options] を編集します。

-Xms1g
-Xmx1g
 ↓↓
-Xms4g  ← 起動時に確保するメモリ量
-Xmx4g  ← 最大メモリ量

設定はこれで終わりです。


4.起動

パッケージインストールにより、systemd用のサービス定義をするファイルができていますので、これの自動起動を有効にします。

subro@UbuntuServer2204-1:~$ sudo systemctl enable opensearch
Synchronizing state of opensearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable opensearch
Created symlink /etc/systemd/system/multi-user.target.wants/opensearch.service → /lib/systemd/system/opensearch.service.

有効化されました。

起動します。

subro@UbuntuServer2204-1:~$ sudo systemctl start opensearch

subro@UbuntuServer2204-1:~$ systemctl status opensearch
● opensearch.service - OpenSearch
     Loaded: loaded (/lib/systemd/system/opensearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-07-13 08:17:39 JST; 9s ago
       Docs: https://opensearch.org/
   Main PID: 1409 (java)
      Tasks: 59 (limit: 9347)
     Memory: 4.5G
        CPU: 1min 35.450s
     CGroup: /system.slice/opensearch.service
             └─1409 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.aw>

 7月 13 08:17:11 UbuntuServer2204-1 systemd[1]: Starting OpenSearch...
 7月 13 08:17:26 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: A terminally deprecated method in java.lang.System has been called
 7月 13 08:17:26 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: System::setSecurityManager has been called by org.opensearch.bootstrap.OpenSearch (file:/usr/share/opensearch/lib/opensearch>
 7月 13 08:17:26 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: Please consider reporting this to the maintainers of org.opensearch.bootstrap.OpenSearch
 7月 13 08:17:26 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: System::setSecurityManager will be removed in a future release
 7月 13 08:17:27 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: A terminally deprecated method in java.lang.System has been called
 7月 13 08:17:27 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: System::setSecurityManager has been called by org.opensearch.bootstrap.Security (file:/usr/share/opensearch/lib/opensearch-2>
 7月 13 08:17:27 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: Please consider reporting this to the maintainers of org.opensearch.bootstrap.Security
 7月 13 08:17:27 UbuntuServer2204-1 systemd-entrypoint[1409]: WARNING: System::setSecurityManager will be removed in a future release
 7月 13 08:17:39 UbuntuServer2204-1 systemd[1]: Started OpenSearch.

起動しましたけど「A terminally deprecated method in java.lang.System has been called」って非推奨のメソッドを使ってるって警告が出ていますね。

インストールの作業はこれで完了です。
TarBallでインストールしていた以前と比べて随分と楽になりました。


5.動作確認

curlコマンドでアクセスしてみましょう。
ユーザー/パスワードは [admin/admin] になっているようですね。

subro@UbuntuServer2204-1:~$ curl -X GET https://localhost:9200 -u 'admin:admin' --insecure
{
  "name" : "UbuntuServer2204-1",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "o7DHbqOIRsyeGPYmR1BgAw",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.8.0",
    "build_type" : "deb",
    "build_hash" : "db90a415ff2fd428b4f7b3f800a51dc229287cb4",
    "build_date" : "2023-06-03T06:22:11.808047829Z",
    "build_snapshot" : false,
    "lucene_version" : "9.6.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

上手く動いているようです。
これでデータの投入も検索もできるはずです。

ついでに手順にある通り、デフォルトで入っているプラグインのリストを取ってみましょう。

subro@UbuntuServer2204-1:~$ curl -X GET https://localhost:9200/_cat/plugins?v -u 'admin:admin' --insecure
name               component                            version
UbuntuServer2204-1 opensearch-alerting                  2.8.0.0
UbuntuServer2204-1 opensearch-anomaly-detection         2.8.0.0
UbuntuServer2204-1 opensearch-asynchronous-search       2.8.0.0
UbuntuServer2204-1 opensearch-cross-cluster-replication 2.8.0.0
UbuntuServer2204-1 opensearch-geospatial                2.8.0.0
UbuntuServer2204-1 opensearch-index-management          2.8.0.0
UbuntuServer2204-1 opensearch-job-scheduler             2.8.0.0
UbuntuServer2204-1 opensearch-knn                       2.8.0.0
UbuntuServer2204-1 opensearch-ml                        2.8.0.0
UbuntuServer2204-1 opensearch-neural-search             2.8.0.0
UbuntuServer2204-1 opensearch-notifications             2.8.0.0
UbuntuServer2204-1 opensearch-notifications-core        2.8.0.0
UbuntuServer2204-1 opensearch-observability             2.8.0.0
UbuntuServer2204-1 opensearch-performance-analyzer      2.8.0.0
UbuntuServer2204-1 opensearch-reports-scheduler         2.8.0.0
UbuntuServer2204-1 opensearch-security                  2.8.0.0
UbuntuServer2204-1 opensearch-security-analytics        2.8.0.0
UbuntuServer2204-1 opensearch-sql                       2.8.0.0

取れました。

日本語プラグインの kuromoji はないですね。
これだと日本語検索で問題が出るはずです。

ここから先は GUIで設定する方が楽です。
GUIツールの OpenSearch Dashboardsのインストールについては
OpenSearch Dashboardsインストール」に書いています。


思った通り、OpenSearchの本は無いようです。