官方给出的修复建议:
1、先安装zip 工具
yum -y install zip
2、进入es安装目录。
cd /usr/share/elasticsearch
3、搜索log4j的jar包。
ls -l lib/log4j-core-*.jar
4、先备份 log4j JAR 文件
zip ./backup-log4j.zip lib/log4j-core-*.jar
5、从 log4j JAR 文件中删除易受攻击的类:
zip -d lib/log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
6、再执行一遍步骤5中的命令
如果输出为zip error: Nothing to do!,则表示该类已被删除
7、查找是否成功删除JndiLookup.class(没有jar命令)
unzip -v /usr/share/elasticsearch/lib/log4j-core-2.9.1.jar | grep ‘JndiLookup'
8、关闭分片再平衡(重新分布分片会消耗大量I/0资源)
一定要先关闭自动平衡(重要)
curl -H 'Content-Type:application/json' -XPUT 127.0.0.1:9200/_cluster/settings -d '
{
"transient" : {
"cluster.routing.allocation.enable" : "none"
}
}'
9、重启完成后查看节点是否重新加入集群,加入后开启分片再平衡
curl -H 'Content-Type:application/json' -XPUT 127.0.0.1:9200/_cluster/settings -d '
{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}'
10、检查集群健康状态,变成green之后开始进行下一个节点的操做(滚动重启)
curl 127.0.0.1:9200/_cat/health?v
会用到的命令
curl 127.0.0.1:9200/_cat/recovery?v 查看重新分片的情况
curl 127.0.0.1:9200/_cat/health?v 健康状态
curl 127.0.0.1:9200/_cat/nodes?v 查看节点
curl 127.0.0.1:9200/_nodes/stats?pretty 查看节点状态