The ES mesos framework works fine when deployed with the Docker host networking mode.
Nevertheless, I am using Weave and would like to use the Docker Bridge networking mode for the following reasons:
To consume the ES service like any regular MS service, using the Consul registered name
Load balance the load across the ES nodes, with Consul
Use the network isolation capabilities (VXLAN) from Weave
Do not open ports on the mesos slave nodes - security constrain.
So far, I am struggling to get the scheduler running in bridge networking mode. From the log, it seems that the ES scheduler has some issues to communicate with Zookeeper, see the log extract:
[INFO] 2017-04-03 12:03:25,249 org.apache.mesos.elasticsearch.scheduler.state.ClusterState getTaskList - Unable to get key for cluster state due to invalid frameworkID.
java.io.IOException: Unable to get zNode
at org.apache.mesos.elasticsearch.scheduler.state.SerializableZookeeperState.get(SerializableZookeeperState.java:51)
From the container, I am able to use the zkCli client to communicate with Zookeeper.
Hello,
The ES mesos framework works fine when deployed with the Docker host networking mode. Nevertheless, I am using Weave and would like to use the Docker Bridge networking mode for the following reasons:
So far, I am struggling to get the scheduler running in bridge networking mode. From the log, it seems that the ES scheduler has some issues to communicate with Zookeeper, see the log extract:
From the container, I am able to use the zkCli client to communicate with Zookeeper.
I have gathered some topics where this issue has been reported: https://github.com/mesos/elasticsearch/issues/416 (last post) https://github.com/mesos/elasticsearch/issues/560 https://groups.google.com/forum/#!topic/mesos-elasticsearch/_miOCpKg6Bo
I would love to heard from you what would be the best approach, first to run ES-scheduler with Docker Bridge mode, then the ES-executors.