我希望這裏有人能夠給我提供一些我遇到的問題的輸入。Docker swarm集羣和elasticsearch,使用約束將服務綁定到特定節點
我有一個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:[email protected]: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隨機創建的,可以隨意左右的3個節點意味着它們將自己的數據時,它們不能複製到新的節點上移動的事實,除了工作在重新創建節點後找到它。 隨着時間的推移,這意味着我的數據存在x3。
我還沒有能夠正確地使用約束來將3個彈性服務綁定到每個節點上,並且我無法真正地在搜索時發現任何工作。
我試過使用環境:「constraint:node == node1」但是在使用我的撰寫文件構建時似乎沒有任何影響。
我搜索了一下,發現了一些如何與碼頭服務創建的例子,但我似乎無法找到一個功能正常的語法。
第一次在這裏發帖,所以如果我做錯了,請溫柔。