Debianパッケージを使用してElasticsearchをインストールする
ElasticsearchのDebianパッケージは、私たちのウェブサイトからダウンロードするか、APTリポジトリからダウンロードできます。このパッケージは、DebianやUbuntuなどのDebianベースのシステムにElasticsearchをインストールするために使用できます。
このパッケージには、無料機能とサブスクリプション機能の両方が含まれています。すべての機能を試すために30日間のトライアルを開始してください。
Elasticsearchの最新の安定版は、Elasticsearchをダウンロードページで見つけることができます。他のバージョンは、過去のリリースページで見つけることができます。
Elasticsearchには、JDKメンテナによるOpenJDKのバンドル版が含まれています(GPLv2+CE)。独自のJavaバージョンを使用するには、JVMバージョン要件を参照してください。
Elasticsearch PGPキーをインポートする
私たちは、Elasticsearch署名キー(PGPキー D88E42B4、https://pgp.mit.eduから入手可能)を使用してすべてのパッケージに署名します。フィンガープリントは次のとおりです:
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
公開署名キーをダウンロードしてインストールします:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
APTリポジトリからのインストール
Debianでapt-transport-https
パッケージをインストールする必要があるかもしれません:
sudo apt-get install apt-transport-https
リポジトリ定義を/etc/apt/sources.list.d/elastic-8.x.list
に保存します:
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
行を削除するまで、次のようなエラーが表示されます:Unable to find expected entry 'main/source/Sources' in Release file
(Wrong sources.list entry or malformed file)
Elasticsearch Debianパッケージを次のコマンドでインストールできます:
sudo apt-get update && sudo apt-get install elasticsearch
同じElasticsearchリポジトリに2つのエントリが存在する場合、apt-get update
中に次のようなエラーが表示されます:
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パッケージは、ウェブサイトからダウンロードして次のようにインストールできます:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-amd64.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-amd64.deb.sha512
shasum -a 512 -c elasticsearch-8.15.2-amd64.deb.sha512
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
コマンドを使用します。
``````sh
export ELASTIC_PASSWORD="your_password"
`
ノードを再構成して既存のクラスターに参加させる
Elasticsearchをインストールすると、インストールプロセスはデフォルトで単一ノードクラスターを構成します。代わりにノードを既存のクラスターに参加させたい場合は、新しいノードを初めて起動する前に、既存のノードで登録トークンを生成します。
- 1. 既存のクラスター内の任意のノードで、ノード登録トークンを生成します:
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
- 2. 生成された登録トークンをコピーします。これはターミナルに出力されます。
- 3. 新しいElasticsearchノードで、登録トークンを
elasticsearch-reconfigure-node
ツールのパラメータとして渡します:
Elasticsearchは現在、既存のクラスターに参加するように構成されています。/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>
- 4.
systemd
を使用して新しいノードを起動します。
システムインデックスの自動作成を有効にする
いくつかの商業機能は、Elasticsearch内で自動的にインデックスを作成します。デフォルトでは、Elasticsearchは自動インデックス作成を許可するように構成されており、追加の手順は必要ありません。ただし、Elasticsearchで自動インデックス作成を無効にした場合は、商業機能が次のインデックスを作成できるように、action.auto_create_index
をelasticsearch.yml
で構成する必要があります:
Yaml
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
LogstashやBeatsを使用している場合、action.auto_create_index
設定に追加のインデックス名が必要になる可能性が高く、正確な値はローカル構成に依存します。環境に適した正しい値が不明な場合は、*
に設定することを検討してください。これにより、すべてのインデックスの自動作成が許可されます。
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
に設定します。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
パラメータを延長することで一時的に問題を回避することもできます。
Elasticsearchが実行中であることを確認する
Elasticsearchノードが実行中であることを確認するには、9200
のポートにHTTPSリクエストを送信します:
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
呼び出しでhttps を使用することを確認してください。さもなければ、リクエストは失敗します。--cacert HTTP層の生成された http_ca.crt 証明書へのパス。 |
呼び出しは次のような応答を返します:
Js
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "8.15.2",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_flavor" : "default",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "9.11.1",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
Elasticsearchの構成
`````setgid`````フラグは、`````/etc/elasticsearch`````ディレクトリにグループ権限を適用し、Elasticsearchが含まれるファイルやサブディレクトリを読み取れるようにします。すべてのファイルとサブディレクトリは`````root:elasticsearch`````の所有権を継承します。このディレクトリまたはそのサブディレクトリからコマンドを実行するには、[elasticsearch-keystoreツール](/read/elasticsearch-8-15/755a2728b8f9a1f4.md)など、`````root:elasticsearch`````権限が必要です。
Elasticsearchはデフォルトで`````/etc/elasticsearch/elasticsearch.yml`````ファイルから構成を読み込みます。この構成ファイルの形式は、[*Elasticsearchの構成*](/read/elasticsearch-8-15/cbd51842921e98c1.md)で説明されています。
Debianパッケージには、次のパラメータを設定できるシステム構成ファイル(`````/etc/default/elasticsearch`````)もあります:
| | |
| --- | --- |
| `````ES_JAVA_HOME````` | 使用するカスタムJavaパスを設定します。 |
| `````ES_PATH_CONF````` | 構成ファイルディレクトリ(`````elasticsearch.yml`````、<br>`````jvm.options`````、および`````log4j2.properties`````ファイルを含む必要があります);デフォルトは<br>`````/etc/elasticsearch`````です。 |
| `````ES_JAVA_OPTS````` | 適用したい追加のJVMシステムプロパティ。 |
| `````RESTART_ON_UPGRADE````` | パッケージアップグレード時の再起動を構成し、デフォルトは`````false`````です。これは、手動でパッケージをインストールした後にElasticsearchインスタンスを再起動する必要があることを意味します。これは、クラスター内のアップグレードが継続的なシャード再配置を引き起こし、高いネットワークトラフィックを引き起こし、クラスターの応答時間を低下させないようにするためです。 |
`````systemd`````を使用するディストリビューションでは、システムリソース制限を`````systemd`````を介して構成する必要があります。詳細については、[Systemd構成](96b3a12ed4f7bcb8.md#systemd)を参照してください。
## クライアントをElasticsearchに接続する
Elasticsearchを初めて起動すると、HTTP層のTLSが自動的に構成されます。CA証明書が生成され、ディスクに保存されます:
``````sh
/etc/elasticsearch/certs/http_ca.crt
`
この証明書の16進エンコードされたSHA-256フィンガープリントもターミナルに出力されます。Elasticsearchに接続するクライアント(Elasticsearchクライアント、Beats、スタンドアロンのElasticエージェント、Logstashなど)は、ElasticsearchがHTTPSに使用する証明書を信頼していることを確認する必要があります。Fleet ServerおよびFleet管理のElasticエージェントは、CA証明書を信頼するように自動的に構成されています。他のクライアントは、CA証明書のフィンガープリントまたはCA証明書自体を使用して信頼を確立できます。
自動構成プロセスがすでに完了している場合でも、セキュリティ証明書のフィンガープリントを取得できます。また、CA証明書をマシンにコピーし、クライアントがそれを使用するように構成することもできます。
CAフィンガープリントを使用する
Elasticsearchが起動するときにターミナルに出力されるフィンガープリント値をコピーし、クライアントがElasticsearchに接続するときにこのフィンガープリントを使用して信頼を確立するようにクライアントを構成します。
自動構成プロセスがすでに完了している場合でも、次のコマンドを実行することでセキュリティ証明書のフィンガープリントを取得できます。パスはHTTP層の自動生成されたCA証明書へのものです。
openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt
コマンドは、フィンガープリントを含むセキュリティ証明書を返します。issuer
はElasticsearch security auto-configuration HTTP CA
である必要があります。
issuer= /CN=Elasticsearch security auto-configuration HTTP CA
SHA256 Fingerprint=<fingerprint>
CA証明書を使用する
ライブラリがフィンガープリントを検証する方法をサポートしていない場合、自動生成されたCA証明書は、各Elasticsearchノードの次のディレクトリに作成されます:
/etc/elasticsearch/certs/http_ca.crt
## Debianパッケージのディレクトリレイアウト
Debianパッケージは、Debianベースのシステムに適切な場所に構成ファイル、ログ、およびデータディレクトリを配置します:
| タイプ | 説明 | デフォルトの場所 | 設定 |
| :-- | :-- | :-- | :-- |
| **home** | Elasticsearchホームディレクトリまたは`````$ES_HOME````` | `````/usr/share/elasticsearch````` | |
| **bin** | ノードを起動するための`````elasticsearch`````を含むバイナリスクリプト<br>およびプラグインをインストールするための`````elasticsearch-plugin````` | `````/usr/share/elasticsearch/bin````` | |
| **conf** | `````elasticsearch.yml`````を含む構成ファイル | `````/etc/elasticsearch````` | `````ES_PATH_CONF````` |
| **conf** | ヒープサイズ、ファイルディスクリプタを含む環境変数。 | `````/etc/default/elasticsearch````` | |
| **conf** | トランスポート層とHTTP層のための生成されたTLSキーと証明書。 | `````/etc/elasticsearch/certs````` | |
| **data** | 各インデックス/シャードのデータファイルの場所<br>ノードに割り当てられています。 | `````/var/lib/elasticsearch````` | `````path.data````` |
| **jdk** | Elasticsearchを実行するために使用されるバンドルされたJava開発キット。<br>`````ES_JAVA_HOME`````環境変数を設定することで上書きできます。 | `````/usr/share/elasticsearch/jdk````` | |
| **logs** | ログファイルの場所。 | `````/var/log/elasticsearch````` | `````path.logs````` |
| **plugins** | プラグインファイルの場所。各プラグインはサブディレクトリに含まれます。 | `````/usr/share/elasticsearch/plugins````` | |
| **repo** | 共有ファイルシステムリポジトリの場所。複数の場所を保持できます。ファイルシステムリポジトリは、ここで指定された任意のディレクトリの任意のサブディレクトリに配置できます。 | 設定されていません | `````path.repo````` |
### セキュリティ証明書とキー
Elasticsearchをインストールすると、次の証明書とキーがElasticsearch構成ディレクトリに生成され、KibanaインスタンスをセキュアなElasticsearchクラスターに接続し、ノード間通信を暗号化するために使用されます。ファイルは参照のためにここにリストされています。
- `````http_ca.crt
- このElasticsearchクラスターのHTTP層の証明書に署名するために使用されるCA証明書。
http.p12
- このノードのHTTP層のためのキーと証明書を含むキーストア。
transport.p12
- クラスター内のすべてのノードのトランスポート層のためのキーと証明書を含むキーストア。
`````http.p12`````のパスワードを取得するには、次のコマンドを使用します:
``````sh
bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
`
``````sh
bin/elasticsearch-keystore show xpack.security.transport.ssl.keystore.secure_password
`
次のステップ
テスト用のElasticsearch環境がセットアップされました。真剣な開発を開始する前に、またはElasticsearchを本番環境で使用する前に、いくつかの追加設定を行う必要があります:
- Elasticsearchを構成する方法を学びます。
- 重要なElasticsearch設定を構成します。
- 重要なシステム設定を構成します。