バックグラウンド
log4jの下位バージョンに重大な抜け穴があるため、別のコンポーネントに付属するlog4jを指定されたバージョン(2.17.1)にアップグレードする必要があります.最近、ES-7.8.0のlog4jバージョンがアップグレードされたので、ここに記録します. .
手順
1. jar パッケージをアップグレードし、 Apache の公式 Web サイトにアクセスして、対応するバージョンをダウンロードします。
2. 最初にサーバー上の ES サービスを終了し、プロセス番号 -9 を強制終了します。
3. 次のように、find コマンドを使用して、ES インストール ディレクトリで log4j jar パッケージを検索します。
[xxw@123456 es]$ find ./elasticsearch-7.8.0/ -name 'log4j*.jar'
./elasticsearch-7.8.0/modules/x-pack-identity-provider/log4j-slf4j-impl-2.11.1.jar
./elasticsearch-7.8.0/modules/x-pack-security/log4j-slf4j-impl-2.11.1.jar
./elasticsearch-7.8.0/modules/x-pack-core/log4j-1.2-api-2.11.1.jar
./elasticsearch-7.8.0/lib/log4j-core-2.11.1.jar
./elasticsearch-7.8.0/lib/log4j-api-2.11.1.jar
4. これらの jar パッケージを一時バックアップ ディレクトリに移動します (これらのファイルは、事故が発生した場合にロールバックできます)。
5. それに応じて新しい jar パッケージを置き換えます。ここでは、次のように 2.11.1 をバージョン 2.17.1 に置き換えます。
cp log4j-slf4j-impl-2.17.1.jar ./elasticsearch-7.8.0/modules/x-pack-identity-provider/
cp log4j-slf4j-impl-2.17.1.jar ./elasticsearch-7.8.0/modules/x-pack-security/
cp log4j-1.2-api-2.17.1.jar ./elasticsearch-7.8.0/modules/x-pack-core/
cp log4j-core-2.17.1.jar ./elasticsearch-7.8.0/lib/
cp log4j-api-2.17.1.jar ./elasticsearch-7.8.0/lib/
6. 置換後、次のように find コマンドを使用して、置換が完了したかどうかを確認します。
[xxw@123456 es]$ find ./elasticsearch-7.8.0/ -name 'log4j*.jar'
./elasticsearch-7.8.0/modules/x-pack-identity-provider/log4j-slf4j-impl-2.17.1.jar
./elasticsearch-7.8.0/modules/x-pack-security/log4j-slf4j-impl-2.17.1.jar
./elasticsearch-7.8.0/modules/x-pack-core/log4j-1.2-api-2.17.1.jar
./elasticsearch-7.8.0/lib/log4j-core-2.17.1.jar
./elasticsearch-7.8.0/lib/log4j-api-2.17.1.jar
7. 最後に、ES サービスを再起動し、ES サービスが正常に動作しているかどうかを確認します。
ES を開始するには、次の 2 つの方法があります。
- ウィンドウ開始: ./elasticsearch-7.8.0/bin/elasticsearch
- バックグラウンド開始: ./elasticsearch-7.8.0/bin/elasticsearch -d
プロセス検証の表示: jps または ps -ef|grep elasticsearch
送信リクエストの検証: curl http://ホスト IP: 構成ポート番号/
[xxx@123456 es]$ curl http://10.129.40.16:9200/
{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "iHwx-eIsTxinhm4sY-S7_A",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date" : "2020-06-14T19:35:50.234439Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
発生した問題
1. 次のように、find コマンドを使用してエラーを報告します。
[xxw@123456 es]$ find ./elasticsearch-7.8.0/ -name "log4j*.jar"
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
解決策: 複数のファイルを検索する場合は、二重引用符ではなく単一引用符を使用する必要があります。
2. 公式 Web サイトで必要な 2.17.1 jar パッケージが見つかりませんか?