Elasticsearchの起動
Elasticsearchの起動方法は、インストール方法によって異なります。
アーカイブパッケージ(.tar.gz)
Elasticsearchを.tar.gz
パッケージでインストールした場合、コマンドラインからElasticsearchを起動できます。
コマンドラインからElasticsearchを実行
次のコマンドを実行して、コマンドラインからElasticsearchを起動します:
./bin/elasticsearch
Elasticsearchを初めて起動する際には、セキュリティ機能がデフォルトで有効かつ構成されています。次のセキュリティ構成が自動的に行われます:
- 認証と認可が有効になり、
elastic
の組み込みスーパーユーザーのためにパスワードが生成されます。 - TLSのための証明書と鍵が生成され、トランスポート層とHTTP層に対してTLSが有効化され、これらの鍵と証明書で構成されます。
- Kibanaのために30分間有効な登録トークンが生成されます。
`````elastic`````パスワードをシェルの環境変数として保存することをお勧めします。例:
``````sh
export ELASTIC_PASSWORD="your_password"
`
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
ツールを実行して新しいノードのための登録トークンを生成します。
登録トークンをコピーし、新しいノードをElasticsearchクラスターに登録するために使用します。bin/elasticsearch-create-enrollment-token -s node
- 2. 新しいノードのインストールディレクトリから、Elasticsearchを起動し、
--enrollment-token
パラメータで登録トークンを渡します。
Elasticsearchは次のディレクトリに証明書と鍵を自動的に生成します:bin/elasticsearch --enrollment-token <enrollment-token>
config/certs
- 3. 登録したい新しいノードについて前のステップを繰り返します。
デーモンとして実行
Elasticsearchをデーモンとして実行するには、コマンドラインで-d
を指定し、-p
オプションを使用してプロセスIDをファイルに記録します:
./bin/elasticsearch -d -p pid
Elasticsearchのキーストアにパスワード保護を設定している場合、キーストアのパスワードを入力するように求められます。詳細についてはセキュア設定を参照してください。
ログメッセージは$ES_HOME/logs/
ディレクトリにあります。
Elasticsearchをシャットダウンするには、pid
ファイルに記録されたプロセスIDを終了します:
pkill -F pid
Elasticsearch .tar.gz
パッケージにはsystemd
モジュールが含まれていません。Elasticsearchをサービスとして管理するには、DebianまたはRPMパッケージを使用してください。
アーカイブパッケージ(.zip)
Windowsに.zip
パッケージでElasticsearchをインストールした場合、コマンドラインからElasticsearchを起動できます。ユーザーの操作なしにブート時に自動的にElasticsearchを起動したい場合は、Elasticsearchをサービスとしてインストールしてください。
コマンドラインからElasticsearchを実行
次のコマンドを実行して、コマンドラインからElasticsearchを起動します:
.\bin\elasticsearch.bat
Elasticsearchを初めて起動する際には、セキュリティ機能がデフォルトで有効かつ構成されています。次のセキュリティ構成が自動的に行われます:
- 認証と認可が有効になり、
elastic
の組み込みスーパーユーザーのためにパスワードが生成されます。 - TLSのための証明書と鍵が生成され、トランスポート層とHTTP層に対してTLSが有効化され、これらの鍵と証明書で構成されます。
- Kibanaのために30分間有効な登録トークンが生成されます。
`````elastic`````パスワードをシェルの環境変数として保存することをお勧めします。例:
``````sh
$ELASTIC_PASSWORD = "your_password"
`
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
ツールを実行して新しいノードのための登録トークンを生成します。
登録トークンをコピーし、新しいノードをElasticsearchクラスターに登録するために使用します。bin\elasticsearch-create-enrollment-token -s node
- 2. 新しいノードのインストールディレクトリから、Elasticsearchを起動し、
--enrollment-token
パラメータで登録トークンを渡します。
Elasticsearchは次のディレクトリに証明書と鍵を自動的に生成します:bin\elasticsearch --enrollment-token <enrollment-token>
config\certs
- 3. 登録したい新しいノードについて前のステップを繰り返します。
Debianパッケージ
systemdでのElasticsearchの実行
システムが起動する際にElasticsearchを自動的に起動するように構成するには、次のコマンドを実行します:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
Elasticsearchは次のように起動および停止できます:
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
これらのコマンドは、Elasticsearchが正常に起動したかどうかのフィードバックを提供しません。代わりに、この情報は/var/log/elasticsearch/
にあるログファイルに書き込まれます。
Elasticsearchのキーストアにパスワード保護を設定している場合、ローカルファイルとsystemd環境変数を使用してsystemd
にキーストアのパスワードを提供する必要があります。このローカルファイルは存在している間は保護されるべきであり、Elasticsearchが起動して実行されているときに安全に削除できます。
echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service
デフォルトでは、Elasticsearchサービスはsystemd
ジャーナルに情報を記録しません。journalctl
ロギングを有効にするには、--quiet
オプションをExecStart
コマンドラインのelasticsearch.service
ファイルから削除する必要があります。
ジャーナルを表示するには:
``````sh
sudo journalctl -f
`
elasticsearchサービスのジャーナルエントリをリストするには:
sudo journalctl --unit elasticsearch
指定した時間からelasticsearchサービスのジャーナルエントリをリストするには:
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
に900s
に設定します。systemd
のバージョン238以上を実行している場合、Elasticsearchは自動的に起動タイムアウトを延長でき、900秒以上かかる場合でも起動が完了するまで繰り返し延長します。
#### テキスト
``````text
[2022-01-31T01:22:31,077][INFO ][o.e.n.Node ] [instance-0000000123] starting ...
...
[2022-01-31T01:37:15,077][INFO ][o.e.n.Node ] [instance-0000000123] stopping ...
`
しかし、systemd
のログは起動がタイムアウトしたと報告します:
テキスト
Jan 31 01:22:30 debian systemd[1]: Starting Elasticsearch...
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Start operation timed out. Terminating.
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Main process exited, code=killed, status=15/TERM
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Failed with result 'timeout'.
Jan 31 01:37:15 debian systemd[1]: Failed to start Elasticsearch.
これを避けるために、systemd
を少なくともバージョン238にアップグレードしてください。また、TimeoutStartSec
パラメータを延長することで一時的に問題を回避することもできます。
Dockerイメージ
Dockerイメージをインストールした場合、コマンドラインからElasticsearchを起動できます。開発モードまたは本番モードを使用しているかによって異なる方法があります。DockerでElasticsearchを実行を参照してください。
RPMパッケージ
systemdでのElasticsearchの実行
システムが起動する際にElasticsearchを自動的に起動するように構成するには、次のコマンドを実行します:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
Elasticsearchは次のように起動および停止できます:
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
これらのコマンドは、Elasticsearchが正常に起動したかどうかのフィードバックを提供しません。代わりに、この情報は/var/log/elasticsearch/
にあるログファイルに書き込まれます。
Elasticsearchのキーストアにパスワード保護を設定している場合、ローカルファイルとsystemd環境変数を使用してsystemd
にキーストアのパスワードを提供する必要があります。このローカルファイルは存在している間は保護されるべきであり、Elasticsearchが起動して実行されているときに安全に削除できます。
echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service
デフォルトでは、Elasticsearchサービスはsystemd
ジャーナルに情報を記録しません。journalctl
ロギングを有効にするには、--quiet
オプションをExecStart
コマンドラインのelasticsearch.service
ファイルから削除する必要があります。
ジャーナルを表示するには:
``````sh
sudo journalctl -f
`
elasticsearchサービスのジャーナルエントリをリストするには:
sudo journalctl --unit elasticsearch
指定した時間からelasticsearchサービスのジャーナルエントリをリストするには:
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
に900s
に設定します。systemd
のバージョン238以上を実行している場合、Elasticsearchは自動的に起動タイムアウトを延長でき、900秒以上かかる場合でも起動が完了するまで繰り返し延長します。
#### テキスト
``````text
[2022-01-31T01:22:31,077][INFO ][o.e.n.Node ] [instance-0000000123] starting ...
...
[2022-01-31T01:37:15,077][INFO ][o.e.n.Node ] [instance-0000000123] stopping ...
`
しかし、systemd
のログは起動がタイムアウトしたと報告します:
テキスト
Jan 31 01:22:30 debian systemd[1]: Starting Elasticsearch...
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Start operation timed out. Terminating.
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Main process exited, code=killed, status=15/TERM
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Failed with result 'timeout'.
Jan 31 01:37:15 debian systemd[1]: Failed to start Elasticsearch.
これを避けるために、systemd
を少なくともバージョン238にアップグレードしてください。また、TimeoutStartSec
パラメータを延長することで一時的に問題を回避することもできます。