我试图从我的弹性映像将版本从5.6升级到6.8.0,但是当我运行ddev start
时,ES容器没有启动。
elasticsearch服务的DDEV日志
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=1
[2020-02-28T21:32:29,269][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.0.jar:6.8.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.0.jar:6.8.0]
Caused by: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
另外,我不能使用mem_limit
参数,因为我使用的是最新的3.0版本。docker-compose.elasticsearch.yaml
:
version: '3.6'
services:
elasticsearch:
container_name: ddev-${DDEV_SITENAME}-elasticsearch
hostname: ${DDEV_SITENAME}-elasticsearch
image: elasticsearch:6.8.0
ports:
- "9200"
- "9300"
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- VIRTUAL_HOST=$DDEV_HOSTNAME
- HTTP_EXPOSE=9200
ulimits:
memlock:
soft: -1
hard: -1
labels:
com.ddev.site-name: ${DDEV_SITENAME}
com.ddev.approot: $DDEV_APPROOT
volumes:
- elasticsearch:/usr/share/elasticsearch/data
- ".:/mnt/ddev_config"
web:
links:
- elasticsearch:elasticsearch
volumes:
elasticsearch:
name: "${DDEV_SITENAME}-elasticsearch"
我做错了什么,或者还缺少了什么?
更新
我已经根据这里发布的一个解决方案尝试了以下解决方案
version: '3.6'
services:
elasticsearch:
container_name: ddev-${DDEV_SITENAME}-elasticsearch
hostname: ${DDEV_SITENAME}-elasticsearch
image: elasticsearch:6.8.0
ports:
- "9200"
- "9300"
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xmx1024m -Xms1024m"
- VIRTUAL_HOST=$DDEV_HOSTNAME
- HTTP_EXPOSE=9200
- node.max_local_storage_nodes=3
ulimits:
memlock:
soft: -1
hard: -1
labels:
com.ddev.site-name: ${DDEV_SITENAME}
com.ddev.approot: $DDEV_APPROOT
volumes:
- elasticsearch:/usr/share/elasticsearch/data
- ".:/mnt/ddev_config"
web:
links:
- elasticsearch:elasticsearch
volumes:
elasticsearch:
name: "${DDEV_SITENAME}-elasticsearch"
但现在,抛出以下错误:
3条答案
按热度按时间chhqkbe11#
我刚刚在我的ubuntu AWS示例上安装ES 7. 6时遇到了同样的问题,该示例已经安装了另一个ES版本。如果你仔细看看你的错误消息的结尾,它提到:
原因:java.lang.IllegalStateException:无法获取节点锁,尝试/usr/share/elasticsearch/data,锁ID为[0];可能这些位置不可写,或者在未增加[node.max_local_storage_nodes](was [1])的情况下启动了多个节点?
有关此设置的更多详细信息,请参阅官方ES文档。
要解决此问题,需要在elasticsearch.yml文件中将
node.max_local_storage_nodes
设置为大于1。有关该错误的更多信息,请参阅
org.elasticsearch.env.NodeEnvironment#NodeEnvironment
方法中的Elasticsearch源代码。oknrviil2#
我也有同样的问题,对我有效的解决方案是完全删除承载elasticsearch数据的卷。它将删除node.lock和整个索引,但您可以重新创建它。
fnvucqvd3#
对我有用的是更改卷名,在下面的
docker-compose.elasticsearch.yaml
中标记volumes.elasticsearch6
(两次):