我正在使用启用 swarm 的 Docker 1.12.2 build bb80604
我有
- 具有 2 个领导者和 3 个从属节点的 swarm 集群。
- 从节点和领导节点上的每个命名卷。
- Elistacsearch 在 2 个主服务器上运行
卷创建命令
docker volume create -d local-persist -o mountpoint=/data/docker/swarm/elasticsearch --name esvolume
现在,当我运行 docker service create 命令创建 5 个 Elasticsearch 副本时,3 个节点启动(每个从属服务器上 1 个),而其余 2 个副本失败
docker service create --replicas 5 --name esdata \
--restart-max-attempts 5 --network myesnetwork \
-e CLUSTER_NAME=swarmescluster \
-e MASTER_NODES=esmaster \
--mount type=volume,src=esvolume,dst=/var/lib/elasticsearch \
--mount type=volume,src=esvolume,dst=/var/log/elasticsearch \
myimagename
失败的错误是
引起:java.lang.IllegalStateException:获取节点锁失败,试过[[/var/lib/elasticsearch/swarmescluster]]带锁 ID [0];也许这些位置不可写或在没有增加 [node.max_local_storage_nodes] 的情况下启动了多个节点(原为 [1])?在 org.elasticsearch.env.NodeEnvironment.(NodeEnvironment.java:259) ~[elasticsearch-5.0.0.jar:5.0.0] 在 org.elasticsearch.node.Node.(Node.java:240) ~[elasticsearch- 5.0.0.jar:5.0.0] 在 org.elasticsearch.node.Node.(Node.java:220) ~[elasticsearch-5.0.0.jar:5.0.0] 在 org.elasticsearch.bootstrap.Bootstrap $5。 (Bootstrap.java:191) ~[elasticsearch-5.0.0.jar:5.0.0] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:191) ~[elasticsearch-5.0.0.jar:5.0. 0] 在 org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286) ~[elasticsearch-5.0.0.jar:5.0.0]
问题
- 如何配置副本以写入相同的路径或动态路径(我需要持久数据)
- 如果我想在创建副本时设置“node.max_local_storage_nodes”的值,我如何在运行时执行它?