Docker群集和elasticsearch,使用约束将服务绑定到特定节点

我希望这里有人能够给我一些问题,我有一些input。

我有一个3节点的Docker群集,想运行ELK堆栈,但我不知道如何存储我的数据。

version: '3' services: master01: image: elasticsearch:5.2.2 ports: - 9200:9200 - 9300:9300 networks: - es volumes: - /es/data:/usr/share/elasticsearch/data command: > elasticsearch -E network.host=_eth0_ -E node.master=true -E discovery.zen.ping.unicast.hosts=es_master01,es_master02,es_master03 -E discovery.zen.minimum_master_nodes=3 -E cluster.name=ElasticCluster -E node.name=es_master01 -E transport.tcp.port=9300 -E http.port=9200 -E node.max_local_storage_nodes=3 deploy: replicas: 1 master02: image: elasticsearch:5.2.2 ports: - 9201:9200 - 9301:9300 networks: - es volumes: - /es/data:/usr/share/elasticsearch/data command: > elasticsearch -E network.host=_eth0_ -E node.master=true -E discovery.zen.ping.unicast.hosts=es_master01,es_master02,es_master03 -E discovery.zen.minimum_master_nodes=3 -E cluster.name=ElasticCluster -E node.name=es_master02 -E transport.tcp.port=9300 -E http.port=9200 -E node.max_local_storage_nodes=3 deploy: replicas: 1 master03: image: elasticsearch:5.2.2 ports: - 9202:9200 - 9302:9300 networks: - es volumes: - /es/data:/usr/share/elasticsearch/data command: > elasticsearch -E network.host=_eth0_ -E node.master=true -E discovery.zen.ping.unicast.hosts=es_master01,es_master02,es_master03 -E discovery.zen.minimum_master_nodes=3 -E cluster.name=ElasticCluster -E node.name=es_master03 -E transport.tcp.port=9300 -E http.port=9200 -E node.max_local_storage_nodes=3 deploy: replicas: 1 logstash: image: logstash:5.2.2 ports: - 5000:5000 networks: - es command: > logstash -e 'input { tcp { port => 5000 } } output { elasticsearch { hosts => "master01:9200" } }' deploy: replicas: 1 kibana: image: kibana:5.2.2 ports: - 5601:5601 environment: SERVER_NAME: "kibana" SERVER_HOST: "0" ELASTICSEARCH_URL: "http://elastic:changeme@master01:9200" ELASTICSEARCH_USERNAME: "elastic" ELASTICSEARCH_PASSWORD: "changeme" XPACK_SECURITY_ENABLED: "true" XPACK_MONITORING_ENABLED: "true" networks: - es depends_on: - master01 deploy: replicas: 1 networks: es: driver: overlay 

它实际上工作,除了我的master01,02,03是随机创build的事实,并可以在3个节点随机移动,这意味着他们将复制到新节点,当他们无法find它后重新制作一个新节点。 随着时间的推移这意味着我的数据存在x3。

我还没有能够正确地使用约束将3个弹性服务绑定到一个节点上,而且我无法真正地在search时发现任何工作。

我试过使用环境:“约束:节点== node1”,但似乎没有任何build设使用我的撰写文件时的任何影响。

我search了一下,发现了一些例子,如何做与docker服务创build ,但我似乎无法find一个正常的语法。

第一次在这里发布,所以如果我做错了,请温柔。

我可能自己find了解决办法。

http://embaby.com/blog/using-glusterfs-docker-swarm-cluster/

Gluster可能是完美的解决scheme,如果能解决我的问题,我会在明天发布结果。