Debianパッケージを使用してElasticsearchをインストールする

ElasticsearchのDebianパッケージは、私たちのウェブサイトからダウンロードするか、APTリポジトリからダウンロードできます。このパッケージは、DebianやUbuntuなどのDebianベースのシステムにElasticsearchをインストールするために使用できます。

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

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

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

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

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

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

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

  1. wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

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

Debianでapt-transport-httpsパッケージをインストールする必要があるかもしれません:

  1. sudo apt-get install apt-transport-https

リポジトリ定義を/etc/apt/sources.list.d/elastic-8.x.listに保存します:

  1. 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

これらの手順では、いくつかの理由からadd-apt-repositoryを使用しません:

  • 1. add-apt-repositoryは、クリーンなリポジトリごとのファイルではなく、システム/etc/apt/sources.listファイルにエントリを追加します。
  • 2. add-apt-repositoryは、多くのディストリビューションのデフォルトインストールの一部ではなく、いくつかの非デフォルト依存関係が必要です。
  • 3. 古いバージョンのadd-apt-repositoryは常にdeb-srcエントリを追加し、ソースパッケージを提供しないため、エラーを引き起こします。deb-srcエントリを追加した場合、deb-src行を削除するまで、次のようなエラーが表示されます:
    1. Unable to find expected entry 'main/source/Sources' in Release file
    2. (Wrong sources.list entry or malformed file)

Elasticsearch Debianパッケージを次のコマンドでインストールできます:

  1. sudo apt-get update && sudo apt-get install elasticsearch

同じElasticsearchリポジトリに2つのエントリが存在する場合、apt-get update中に次のようなエラーが表示されます:

  1. Duplicate sources.list entry https://artifacts.elastic.co/packages/8.x/apt/ ...`

重複エントリを/etc/apt/sources.list.d/elasticsearch-8.x.listで確認するか、/etc/apt/sources.list.d/および/etc/apt/sources.listファイル内の重複エントリを見つけてください。

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

Debianパッケージを手動でダウンロードしてインストールする

Elasticsearch v8.15.2のDebianパッケージは、ウェブサイトからダウンロードして次のようにインストールできます:

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

セキュリティが有効な状態でElasticsearchを起動する

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

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

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

  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パラメータをsystemdに設定します。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ノードが実行中であることを確認するには、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`````フラグは、`````/etc/elasticsearch`````ディレクトリにグループ権限を適用し、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. Debianパッケージには、次のパラメータを設定できるシステム構成ファイル(`````/etc/default/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`````を介して構成する必要があります。詳細については、[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. ## Debianパッケージのディレクトリレイアウト
  2. Debianパッケージは、Debianベースのシステムに適切な場所に構成ファイル、ログ、およびデータディレクトリを配置します:
  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/default/elasticsearch````` | |
  9. | **conf** | トランスポート層とHTTP層のための生成されたTLSキーと証明書。 | `````/etc/elasticsearch/certs````` | |
  10. | **data** | 各インデックス/シャードのデータファイルの場所<br>ノードに割り当てられています。 | `````/var/lib/elasticsearch````` | `````path.data````` |
  11. | **jdk** | Elasticsearchを実行するために使用されるバンドルされたJava開発キット。<br>`````ES_JAVA_HOME`````環境変数を設定することで上書きできます。 | `````/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を本番環境で使用する前に、いくつかの追加設定を行う必要があります: