swarm を有効にして Docker 1.12.2 ビルド bb80604 を使用しています
私は持っている
- 2 つのリーダー ノードと 3 つのスレーブ ノードを備えた swarm クラスター。
- スレーブ ノードとリーダー ノードのそれぞれに名前付きボリューム。
- 2 台のマスター サーバーで実行されている Elistacsearch
ボリューム作成コマンド
docker volume create -d local-persist -o mountpoint=/data/docker/swarm/elasticsearch --name esvolume
docker service create コマンドを実行して Elasticsearch の 5 つのレプリカを作成すると、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] at org.elasticsearch.node.Node.(Node.java:220) ~[elasticsearch-5.0.0.jar:5.0.0] at 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」の値を設定したい場合、ランタイムでどのように設定しますか?