2017-03-13 93 views
1

我希望這裏有人能夠給我提供一些我遇到的問題的輸入。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」但是在使用我的撰寫文件構建時似乎沒有任何影響。

我搜索了一下,發現了一些如何與碼頭服務創建的例子,但我似乎無法找到一個功能正常的語法。

第一次在這裏發帖,所以如果我做錯了,請溫柔。

回答

相關問題