Elasticsearchの起動

Elasticsearchの起動方法は、インストール方法によって異なります。

アーカイブパッケージ(.tar.gz)

Elasticsearchを.tar.gzパッケージでインストールした場合、コマンドラインからElasticsearchを起動できます。

コマンドラインからElasticsearchを実行

次のコマンドを実行して、コマンドラインからElasticsearchを起動します:

  1. ./bin/elasticsearch

Elasticsearchを初めて起動する際には、セキュリティ機能がデフォルトで有効かつ構成されています。次のセキュリティ構成が自動的に行われます:

  • 認証と認可が有効になり、elasticの組み込みスーパーユーザーのためにパスワードが生成されます。
  • TLSのための証明書と鍵が生成され、トランスポート層とHTTP層に対してTLSが有効化され、これらの鍵と証明書で構成されます。
  • Kibanaのために30分間有効な登録トークンが生成されます。
  1. `````elastic`````パスワードをシェルの環境変数として保存することをお勧めします。例:
  2. ``````sh
  3. export ELASTIC_PASSWORD="your_password"
  4. `

Elasticsearchのキーストアにパスワード保護を設定している場合、キーストアのパスワードを入力するように求められます。詳細についてはセキュア設定を参照してください。

デフォルトでは、Elasticsearchはログをコンソール(stdout)とログディレクトリ内の<cluster name>.logファイルに出力します。Elasticsearchは起動中にいくつかの情報をログに記録しますが、初期化が完了した後はフォアグラウンドで実行を続け、記録する価値のある何かが発生するまで追加のログは記録しません。Elasticsearchが実行中の間、デフォルトではポート9200でHTTPインターフェースを介して対話できます。

Elasticsearchを停止するには、Ctrl-Cを押してください。

Elasticsearchに同梱されているすべてのスクリプトは、配列をサポートするBashのバージョンを必要とし、Bashが/bin/bashに直接またはシンボリックリンクを介して利用可能であることを前提としています。

既存のクラスターにノードを登録

Elasticsearchが初めて起動すると、セキュリティの自動構成プロセスがHTTP層を0.0.0.0にバインドしますが、トランスポート層はlocalhostにのみバインドされます。この意図された動作により、追加の構成なしでデフォルトでセキュリティが有効な単一ノードクラスターを起動できます。

新しいノードを登録する前に、localhost以外のアドレスにバインドすることやブートストラップチェックを満たすことなどの追加のアクションが、通常は本番クラスターで必要です。その間に自動生成された登録トークンが期限切れになる可能性があるため、登録トークンは自動的に生成されません。

さらに、追加の構成なしでクラスターに参加できるのは同じホスト上のノードのみです。別のホストのノードをクラスターに参加させたい場合は、transport.hostサポートされている値0.0.0.0の提案された値のコメントを外すなど)または他のホストが到達できるインターフェースにバインドされたIPアドレスに設定する必要があります。詳細についてはトランスポート設定を参照してください。

クラスターに新しいノードを登録するには、クラスター内の既存のノードでelasticsearch-create-enrollment-tokenツールを使用して登録トークンを作成します。その後、--enrollment-tokenパラメータを使用して新しいノードを起動し、既存のクラスターに参加させます。

  • 1. Elasticsearchが実行されている別のターミナルで、Elasticsearchをインストールしたディレクトリに移動し、elasticsearch-create-enrollment-tokenツールを実行して新しいノードのための登録トークンを生成します。
    1. bin/elasticsearch-create-enrollment-token -s node
    登録トークンをコピーし、新しいノードをElasticsearchクラスターに登録するために使用します。
  • 2. 新しいノードのインストールディレクトリから、Elasticsearchを起動し、--enrollment-tokenパラメータで登録トークンを渡します。
    1. bin/elasticsearch --enrollment-token <enrollment-token>
    Elasticsearchは次のディレクトリに証明書と鍵を自動的に生成します:
    1. config/certs
  • 3. 登録したい新しいノードについて前のステップを繰り返します。

デーモンとして実行

Elasticsearchをデーモンとして実行するには、コマンドラインで-dを指定し、-pオプションを使用してプロセスIDをファイルに記録します:

  1. ./bin/elasticsearch -d -p pid

Elasticsearchのキーストアにパスワード保護を設定している場合、キーストアのパスワードを入力するように求められます。詳細についてはセキュア設定を参照してください。

ログメッセージは$ES_HOME/logs/ディレクトリにあります。

Elasticsearchをシャットダウンするには、pidファイルに記録されたプロセスIDを終了します:

  1. pkill -F pid

Elasticsearch .tar.gzパッケージにはsystemdモジュールが含まれていません。Elasticsearchをサービスとして管理するには、DebianまたはRPMパッケージを使用してください。

アーカイブパッケージ(.zip)

Windowsに.zipパッケージでElasticsearchをインストールした場合、コマンドラインからElasticsearchを起動できます。ユーザーの操作なしにブート時に自動的にElasticsearchを起動したい場合は、Elasticsearchをサービスとしてインストールしてください。

コマンドラインからElasticsearchを実行

次のコマンドを実行して、コマンドラインからElasticsearchを起動します:

  1. .\bin\elasticsearch.bat

Elasticsearchを初めて起動する際には、セキュリティ機能がデフォルトで有効かつ構成されています。次のセキュリティ構成が自動的に行われます:

  • 認証と認可が有効になり、elasticの組み込みスーパーユーザーのためにパスワードが生成されます。
  • TLSのための証明書と鍵が生成され、トランスポート層とHTTP層に対してTLSが有効化され、これらの鍵と証明書で構成されます。
  • Kibanaのために30分間有効な登録トークンが生成されます。
  1. `````elastic`````パスワードをシェルの環境変数として保存することをお勧めします。例:
  2. ``````sh
  3. $ELASTIC_PASSWORD = "your_password"
  4. `

Elasticsearchのキーストアにパスワード保護を設定している場合、キーストアのパスワードを入力するように求められます。詳細についてはセキュア設定を参照してください。

デフォルトでは、Elasticsearchはログをコンソール(STDOUT)とログディレクトリ内の<cluster name>.logファイルに出力します。Elasticsearchは起動中にいくつかの情報をログに記録しますが、初期化が完了した後はフォアグラウンドで実行を続け、記録する価値のある何かが発生するまで追加のログは記録しません。Elasticsearchが実行中の間、デフォルトではポート9200でHTTPインターフェースを介して対話できます。

Elasticsearchを停止するには、Ctrl-Cを押してください。

既存のクラスターにノードを登録

Elasticsearchが初めて起動すると、セキュリティの自動構成プロセスがHTTP層を0.0.0.0にバインドしますが、トランスポート層はlocalhostにのみバインドされます。この意図された動作により、追加の構成なしでデフォルトでセキュリティが有効な単一ノードクラスターを起動できます。

新しいノードを登録する前に、localhost以外のアドレスにバインドすることやブートストラップチェックを満たすことなどの追加のアクションが、通常は本番クラスターで必要です。その間に自動生成された登録トークンが期限切れになる可能性があるため、登録トークンは自動的に生成されません。

さらに、追加の構成なしでクラスターに参加できるのは同じホスト上のノードのみです。別のホストのノードをクラスターに参加させたい場合は、transport.hostサポートされている値0.0.0.0の提案された値のコメントを外すなど)または他のホストが到達できるインターフェースにバインドされたIPアドレスに設定する必要があります。詳細についてはトランスポート設定を参照してください。

クラスターに新しいノードを登録するには、クラスター内の既存のノードでelasticsearch-create-enrollment-tokenツールを使用して登録トークンを作成します。その後、--enrollment-tokenパラメータを使用して新しいノードを起動し、既存のクラスターに参加させます。

  • 1. Elasticsearchが実行されている別のターミナルで、Elasticsearchをインストールしたディレクトリに移動し、elasticsearch-create-enrollment-tokenツールを実行して新しいノードのための登録トークンを生成します。
    1. bin\elasticsearch-create-enrollment-token -s node
    登録トークンをコピーし、新しいノードをElasticsearchクラスターに登録するために使用します。
  • 2. 新しいノードのインストールディレクトリから、Elasticsearchを起動し、--enrollment-tokenパラメータで登録トークンを渡します。
    1. bin\elasticsearch --enrollment-token <enrollment-token>
    Elasticsearchは次のディレクトリに証明書と鍵を自動的に生成します:
    1. config\certs
  • 3. 登録したい新しいノードについて前のステップを繰り返します。

Debianパッケージ

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パラメータを延長することで一時的に問題を回避することもできます。

Dockerイメージ

Dockerイメージをインストールした場合、コマンドラインからElasticsearchを起動できます。開発モードまたは本番モードを使用しているかによって異なる方法があります。DockerでElasticsearchを実行を参照してください。

RPMパッケージ

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パラメータを延長することで一時的に問題を回避することもできます。