Elasticsearch 密钥库错误:升级时设备或资源繁忙

问题描述 投票:0回答:1

我有一个在版本 8.13.4 上运行的多节点 Elasticsearch 集群。 该集群需要 Slack 集成和 AD/LDAP 集成,因此它还具有 elasticsearch.keystore 文件绑定挂载。该集群是使用 docker compose 在 Docker 化环境中设置的。

将集群升级到8.14.2时,我们遇到以下错误

e1 |线程“main”中的异常 java.nio.file.FileSystemException:/usr/share/elasticsearch/config/elasticsearch.keystore.tmp -> /usr/share/elasticsearch/config/elasticsearch.keystore:设备或资源繁忙 e1 | 在 java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100) e1 | 在 java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) e1 | 在 java.base/sun.nio.fs.UnixFileSystem.move(UnixFileSystem.java:882) e1 | 在 java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:309) e1 | 在 java.base/java.nio.file.Files.move(Files.java:1430) e1 | 在 org.elasticsearch.common.settings.KeyStoreWrapper.save(KeyStoreWrapper.java:519) e1 | 在 org.elasticsearch.common.settings.KeyStoreWrapper.save(KeyStoreWrapper.java:433) e1 | 在 org.elasticsearch.common.settings.KeyStoreWrapper.upgrade(KeyStoreWrapper.java:307) e1 | 在 org.elasticsearch.common.settings.KeyStoreWrapper.bootstrap(KeyStoreWrapper.java:237) e1 | 在 org.elasticsearch.server.cli.KeyStoreLoader.bootstrap(KeyStoreLoader.java:37) e1 | 在 org.elasticsearch.server.cli.ServerCli.execute(ServerCli.java:88) e1 | 在 org.elasticsearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:54) e1 | 在 org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:85) e1 | 在 org.elasticsearch.cli.Command.main(Command.java:50) e1 | 在 org.elasticsearch.launcher.CliToolLauncher.main(CliToolLauncher.java:64) e1 退出,代码为 1

问题似乎与绑定挂载elasticsearch.keystore 文件有关。这里提到了这个问题

弹性文档

根据此,如果我们直接挂载配置目录,它还会要求其他配置文件,这是我们想要避免的。

此问题的解决方法应该是什么?

docker elasticsearch kibana elastic-stack elk
1个回答
0
投票

我刚刚从 8.13.4 升级到 8.15.2 时遇到了这个问题。答案是密钥库内部格式需要升级,这通常会在 Elasticsearch 启动时透明地发生。因为您是直接挂载密钥库文件(在我的例子中也是

:ro
),所以无法进行这种透明升级。

在此过程中,您可能运行过命令行,就像这样,对吧?:

docker run -it --rm -v /my/config/dir:/usr/share/elasticsearch/config docker.elastic.co/elasticsearch/elasticsearch:<version> bin/elasticsearch-keystore create

要解决此问题,您需要运行类似的命令:

docker run -it --rm -v /my/config/dir:/usr/share/elasticsearch/config docker.elastic.co/elasticsearch/elasticsearch:<version> bin/elasticsearch-keystore upgrade

完成此操作后,直接挂载到

elasticsearch.keystore
文件应该会再次正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.