RPMを使用してElasticsearchをインストールする

ElasticsearchのRPMは私たちのウェブサイトからダウンロードできますまたはRPMリポジトリからダウンロードできます。これは、OpenSuSE、SLES、Centos、Red Hat、Oracle EnterpriseなどのRPMベースのシステムにElasticsearchをインストールするために使用できます。

RPMインストールは、SLES 11やCentOS 5などの古いバージョンのRPMを持つディストリビューションではサポートされていません。代わりにLinuxまたはMacOSからアーカイブを使用してElasticsearchをインストールするを参照してください。

このパッケージには、無料機能とサブスクリプション機能の両方が含まれています。30日間のトライアルを開始することで、すべての機能を試すことができます。

Elasticsearchの最新の安定版はElasticsearchをダウンロードページで見つけることができます。他のバージョンは過去のリリースページで見つけることができます。

Elasticsearchには、JDKメンテナによるOpenJDKのバンドル版が含まれています(GPLv2+CE)。独自のJavaバージョンを使用するには、JVMバージョン要件を参照してください。

自分の施設でElastic Stackをセットアップする手順を示す例については、チュートリアルを試してみてください:自己管理型Elastic Stackのインストール

Elasticsearch GPGキーをインポートする

私たちはすべてのパッケージにElasticsearch署名キー(PGPキー D88E42B4 https://pgp.mit.eduから入手可能)で署名します。フィンガープリントは次のとおりです:

  1. 4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4

公開署名キーをダウンロードしてインストールします:

  1. rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

RPMリポジトリからのインストール

RedHatベースのディストリビューション用にelasticsearch.repoという名前のファイルを/etc/yum.repos.d/ディレクトリに作成するか、OpenSuSEベースのディストリビューション用に/etc/zypp/repos.d/ディレクトリに作成し、次の内容を含めます:

  1. [elasticsearch]
  2. name=Elasticsearch repository for 8.x packages
  3. baseurl=https://artifacts.elastic.co/packages/8.x/yum
  4. gpgcheck=1
  5. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
  6. enabled=0
  7. autorefresh=1
  8. type=rpm-md

これでリポジトリが使用可能になります。次のコマンドのいずれかを使用してElasticsearchをインストールできます:

  1. sudo yum install --enablerepo=elasticsearch elasticsearch
  2. sudo dnf install --enablerepo=elasticsearch elasticsearch
  3. sudo zypper modifyrepo --enable elasticsearch && \
  4. sudo zypper install elasticsearch; \
  5. sudo zypper modifyrepo --disable elasticsearch
CentOSおよび古いRed Hatベースのディストリビューションではyumを使用します。
Fedoraおよび他の新しいRed Hatディストリビューションではdnfを使用します。
OpenSUSEベースのディストリビューションではzypperを使用します。

構成されたリポジトリはデフォルトで無効になっています。これにより、システムの他の部分をアップグレードする際にelasticsearchを誤ってアップグレードする可能性が排除されます。各インストールまたはアップグレードコマンドは、上記のサンプルコマンドに示されているように、リポジトリを明示的に有効にする必要があります。

RPMを手動でダウンロードしてインストールする

Elasticsearch v8.15.2のRPMはウェブサイトからダウンロードでき、次のようにインストールできます:

  1. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-x86_64.rpm
  2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-x86_64.rpm.sha512
  3. shasum -a 512 -c elasticsearch-8.15.2-x86_64.rpm.sha512
  4. sudo rpm --install elasticsearch-8.15.2-x86_64.rpm
ダウンロードしたRPMのSHAと公開されたチェックサムを比較し、次のように出力されるはずです。
elasticsearch-{version}-x86_64.rpm: OK.

systemdベースのディストリビューションでは、インストールスクリプトがカーネルパラメータ(例:vm.max_map_count)を設定しようとします。systemd-sysctl.serviceユニットをマスクすることでこれをスキップできます。

セキュリティを有効にしてElasticsearchを起動する

Elasticsearchをインストールすると、セキュリティ機能がデフォルトで有効になり、構成されます。Elasticsearchをインストールすると、次のセキュリティ構成が自動的に行われます:

  • 認証と認可が有効になり、elastic組み込みスーパーユーザーのパスワードが生成されます。
  • TLS用の証明書とキーがトランスポート層とHTTP層のために生成され、これらのキーと証明書でTLSが有効化され、構成されます。

パスワードと証明書およびキーはターミナルに出力されます。elasticsearch-reset-passwordコマンドを使用してelasticユーザーのパスワードをリセットできます。

  1. ``````sh
  2. export ELASTIC_PASSWORD="your_password"
  3. `

ノードを再構成して既存のクラスターに参加させる

Elasticsearchをインストールすると、インストールプロセスはデフォルトで単一ノードクラスターを構成します。代わりにノードを既存のクラスターに参加させたい場合は、新しいノードを初めて起動する前に、既存のノードで登録トークンを生成します。

  • 1. 既存のクラスター内の任意のノードで、ノード登録トークンを生成します:
    1. /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
  • 2. 登録トークンをコピーします。これはターミナルに出力されます。
  • 3. 新しいElasticsearchノードで、登録トークンをelasticsearch-reconfigure-nodeツールのパラメータとして渡します:
    1. /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>
    Elasticsearchは現在、既存のクラスターに参加するように構成されています。
  • 4. systemdを使用して新しいノードを起動します

システムインデックスの自動作成を有効にする

いくつかの商業機能は、Elasticsearch内で自動的にインデックスを作成します。デフォルトでは、Elasticsearchは自動インデックス作成を許可するように構成されており、追加の手順は必要ありません。ただし、Elasticsearchで自動インデックス作成を無効にしている場合は、商業機能が次のインデックスを作成できるように、action.auto_create_indexelasticsearch.ymlで構成する必要があります:

Yaml

  1. action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

LogstashBeatsを使用している場合、action.auto_create_index設定に追加のインデックス名が必要になる可能性が高く、正確な値はローカル構成に依存します。環境に適した正しい値が不明な場合は、*に設定することを検討してください。これにより、すべてのインデックスの自動作成が許可されます。

systemdでElasticsearchを実行する

システムが起動するときにElasticsearchが自動的に起動するように構成するには、次のコマンドを実行します:

  1. sudo /bin/systemctl daemon-reload
  2. sudo /bin/systemctl enable elasticsearch.service

Elasticsearchは次のように起動および停止できます:

  1. sudo systemctl start elasticsearch.service
  2. sudo systemctl stop elasticsearch.service

これらのコマンドは、Elasticsearchが正常に起動したかどうかのフィードバックを提供しません。代わりに、この情報は/var/log/elasticsearch/にあるログファイルに書き込まれます。

Elasticsearchキーストアにパスワード保護を設定している場合は、ローカルファイルとsystemd環境変数を使用してsystemdにキーストアパスワードを提供する必要があります。このローカルファイルは存在する間は保護されるべきであり、Elasticsearchが起動して実行されると安全に削除できます。

  1. echo "keystore_password" > /path/to/my_pwd_file.tmp
  2. chmod 600 /path/to/my_pwd_file.tmp
  3. sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
  4. sudo systemctl start elasticsearch.service

デフォルトでは、Elasticsearchサービスはsystemdジャーナルに情報を記録しません。journalctlロギングを有効にするには、--quietオプションをExecStartコマンドラインからelasticsearch.serviceファイルに削除する必要があります。

  1. ジャーナルをテールするには:
  2. ``````sh
  3. sudo journalctl -f
  4. `

elasticsearchサービスのジャーナルエントリをリストするには:

  1. sudo journalctl --unit elasticsearch

指定した時間からelasticsearchサービスのジャーナルエントリをリストするには:

  1. sudo journalctl --unit elasticsearch --since "2016-10-30 18:17:16"

man journalctlまたはhttps://www.freedesktop.org/software/systemd/man/journalctl.htmlを確認して、他のコマンドラインオプションを確認してください。

古いsystemdバージョンでの起動タイムアウト

デフォルトでは、ElasticsearchはTimeoutStartSecパラメータをsystemd900sとして設定します。systemdのバージョン238以上を実行している場合、Elasticsearchは自動的に起動タイムアウトを延長でき、900秒以上かかっても起動が完了するまで繰り返し延長します。

  1. #### テキスト
  2. ``````text
  3. [2022-01-31T01:22:31,077][INFO ][o.e.n.Node ] [instance-0000000123] starting ...
  4. ...
  5. [2022-01-31T01:37:15,077][INFO ][o.e.n.Node ] [instance-0000000123] stopping ...
  6. `

ただし、systemdログは起動がタイムアウトしたと報告します:

テキスト

  1. Jan 31 01:22:30 debian systemd[1]: Starting Elasticsearch...
  2. Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Start operation timed out. Terminating.
  3. Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Main process exited, code=killed, status=15/TERM
  4. Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Failed with result 'timeout'.
  5. Jan 31 01:37:15 debian systemd[1]: Failed to start Elasticsearch.

これを避けるために、systemdを少なくともバージョン238にアップグレードしてください。また、TimeoutStartSecパラメータを延長することで一時的に問題を回避することもできます。

Elasticsearchが実行中であることを確認する

Elasticsearchノードが実行中であることを確認するには、localhostのポート9200にHTTPSリクエストを送信します:

  1. curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
呼び出しでhttpsを使用することを確認してください。そうしないと、リクエストは失敗します。
--cacert
HTTP層の生成されたhttp_ca.crt証明書へのパス。

呼び出しは次のような応答を返します:

Js

  1. {
  2. "name" : "Cp8oag6",
  3. "cluster_name" : "elasticsearch",
  4. "cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
  5. "version" : {
  6. "number" : "8.15.2",
  7. "build_type" : "tar",
  8. "build_hash" : "f27399d",
  9. "build_flavor" : "default",
  10. "build_date" : "2016-03-30T09:51:41.449Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "9.11.1",
  13. "minimum_wire_compatibility_version" : "1.2.3",
  14. "minimum_index_compatibility_version" : "1.2.3"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

Elasticsearchの構成

  1. `````setgid`````フラグは、Elasticsearchが含まれるファイルやサブディレクトリを読み取れるように、`````/etc/elasticsearch`````ディレクトリにグループ権限を適用します。すべてのファイルとサブディレクトリは`````root:elasticsearch`````の所有権を継承します。このディレクトリまたは任意のサブディレクトリからコマンドを実行するには、[elasticsearch-keystoreツール](/read/elasticsearch-8-15/755a2728b8f9a1f4.md)など、`````root:elasticsearch`````の権限が必要です。
  2. Elasticsearchはデフォルトで`````/etc/elasticsearch/elasticsearch.yml`````ファイルから構成を読み込みます。この構成ファイルの形式は、[*Elasticsearchの構成*](/read/elasticsearch-8-15/cbd51842921e98c1.md)で説明されています。
  3. RPMには、次のパラメータを設定できるシステム構成ファイル(`````/etc/sysconfig/elasticsearch`````)もあります:
  4. | | |
  5. | --- | --- |
  6. | `````ES_JAVA_HOME````` | 使用するカスタムJavaパスを設定します。 |
  7. | `````ES_PATH_CONF````` | 構成ファイルディレクトリ(`````elasticsearch.yml`````、<br>`````jvm.options`````、および`````log4j2.properties`````ファイルを含む必要があります);デフォルトは<br>`````/etc/elasticsearch`````です。 |
  8. | `````ES_JAVA_OPTS````` | 適用したい追加のJVMシステムプロパティ。 |
  9. | `````RESTART_ON_UPGRADE````` | パッケージアップグレード時の再起動を構成します。デフォルトは`````false`````です。これは、手動でパッケージをインストールした後にElasticsearchインスタンスを再起動する必要があることを意味します。この理由は、クラスター内のアップグレードが高いネットワークトラフィックを引き起こし、クラスターの応答時間を低下させることを防ぐためです。 |
  10. `````systemd`````を使用するディストリビューションでは、システムリソース制限を`````systemd`````を介して構成する必要があります。`````/etc/sysconfig/elasticsearch`````ファイルを介してではありません。詳細については、[Systemd構成](96b3a12ed4f7bcb8.md#systemd)を参照してください。
  11. ## クライアントをElasticsearchに接続する
  12. Elasticsearchを初めて起動すると、HTTP層のTLSが自動的に構成されます。CA証明書が生成され、次のディレクトリにディスクに保存されます:
  13. ``````sh
  14. /etc/elasticsearch/certs/http_ca.crt
  15. `

この証明書の16進エンコードされたSHA-256フィンガープリントもターミナルに出力されます。Elasticsearchに接続するクライアント(Elasticsearchクライアント、Beats、スタンドアロンElasticエージェント、Logstashなど)は、ElasticsearchがHTTPSに使用する証明書を信頼していることを検証する必要があります。Fleet ServerおよびFleet管理のElasticエージェントは、CA証明書を信頼するように自動的に構成されています。他のクライアントは、CA証明書のフィンガープリントまたはCA証明書自体を使用して信頼を確立できます。

自動構成プロセスがすでに完了している場合でも、セキュリティ証明書のフィンガープリントを取得できます。また、CA証明書をマシンにコピーし、クライアントがそれを使用するように構成することもできます。

CAフィンガープリントを使用する

Elasticsearchが起動するときにターミナルに出力されるフィンガープリント値をコピーし、クライアントを構成してこのフィンガープリントを使用してElasticsearchに接続するときに信頼を確立します。

自動構成プロセスがすでに完了している場合でも、次のコマンドを実行してセキュリティ証明書のフィンガープリントを取得できます。パスはHTTP層の自動生成されたCA証明書へのものです。

  1. openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt

コマンドは、フィンガープリントを含むセキュリティ証明書を返します。issuerElasticsearch security auto-configuration HTTP CAである必要があります。

  1. issuer= /CN=Elasticsearch security auto-configuration HTTP CA
  2. SHA256 Fingerprint=<fingerprint>

CA証明書を使用する

ライブラリがフィンガープリントを検証する方法をサポートしていない場合、自動生成されたCA証明書は各Elasticsearchノードの次のディレクトリに作成されます:

  1. /etc/elasticsearch/certs/http_ca.crt
  1. ## RPMのディレクトリレイアウト
  2. RPMは、RPMベースのシステムに適切な場所に構成ファイル、ログ、およびデータディレクトリを配置します:
  3. | タイプ | 説明 | デフォルトの場所 | 設定 |
  4. | :-- | :-- | :-- | :-- |
  5. | **home** | Elasticsearchホームディレクトリまたは`````$ES_HOME````` | `````/usr/share/elasticsearch````` | |
  6. | **bin** | ノードを起動するための`````elasticsearch`````を含むバイナリスクリプト<br>およびプラグインをインストールするための`````elasticsearch-plugin````` | `````/usr/share/elasticsearch/bin````` | |
  7. | **conf** | `````elasticsearch.yml`````を含む構成ファイル | `````/etc/elasticsearch````` | `````ES_PATH_CONF````` |
  8. | **conf** | ヒープサイズ、ファイルディスクリプタを含む環境変数。 | `````/etc/sysconfig/elasticsearch````` | |
  9. | **conf** | トランスポートおよびHTTP層のための生成されたTLSキーと証明書。 | `````/etc/elasticsearch/certs````` | |
  10. | **data** | 各インデックス/シャードのデータファイルの場所<br>ノードに割り当てられています。 | `````/var/lib/elasticsearch````` | `````path.data````` |
  11. | **jdk** | Elasticsearchを実行するために使用されるバンドルされたJava開発キット。<br>`````ES_JAVA_HOME`````環境変数を設定することで上書きできます<br>`````/etc/sysconfig/elasticsearch`````で。 | `````/usr/share/elasticsearch/jdk````` | |
  12. | **logs** | ログファイルの場所。 | `````/var/log/elasticsearch````` | `````path.logs````` |
  13. | **plugins** | プラグインファイルの場所。各プラグインはサブディレクトリに含まれます。 | `````/usr/share/elasticsearch/plugins````` | |
  14. | **repo** | 共有ファイルシステムリポジトリの場所。複数の場所を保持できます。ファイルシステムリポジトリは、ここで指定された任意のディレクトリの任意のサブディレクトリに配置できます。 | 構成されていません | `````path.repo````` |
  15. ### セキュリティ証明書とキー
  16. Elasticsearchをインストールすると、次の証明書とキーがElasticsearch構成ディレクトリに生成され、KibanaインスタンスをセキュアなElasticsearchクラスターに接続し、ノード間通信を暗号化するために使用されます。ファイルは参照のためにここにリストされています。
  17. - `````http_ca.crt
  • このElasticsearchクラスターのHTTP層の証明書に署名するために使用されるCA証明書。
  • http.p12
  • このノードのHTTP層のためのキーと証明書を含むキーストア。
  • transport.p12
  • クラスター内のすべてのノードのトランスポート層のためのキーと証明書を含むキーストア。
  1. `````http.p12`````のパスワードを取得するには、次のコマンドを使用します:
  2. ``````sh
  3. bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
  4. `
  1. ``````sh
  2. bin/elasticsearch-keystore show xpack.security.transport.ssl.keystore.secure_password
  3. `

次のステップ

テスト用のElasticsearch環境が設定されました。Elasticsearchで本格的な開発を開始する前に、または本番環境に移行する前に、いくつかの追加設定を行う必要があります: