我使用Docker 1.12.2构建bb80604并启用了swarm

我有

  • 具有2个领导者和3个从属节点的群集群 .
    在slave和leader节点上的每个上都有

  • 命名卷 .

  • 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:无法获取节点锁,尝试使用lock id [0]尝试[[/ var / lib / elasticsearch / swarmescluster]];也许这些位置不可写或多个节点启动而没有增加[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] org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:191)〜[elasticsearch-5.0.0.jar:5.0 . 0] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286)〜[elasticsearch-5.0.0.jar:5.0.0]

Questions

  • 如何配置副本以写入相同路径或动态路径(我需要持久数据)

  • 如果我想在创建副本时设置'node.max_local_storage_nodes'的值,我怎么做运行时?