2017-02-20 54 views
1

我對於Docker玩起來相當新穎,所以希望這都是我的錯,但我正在嘗試使用Docker Compose獲得多主機Apache Cassandra戒指設置。Multi host cassandra Docker-compose文件問題

我有以下搬運工-compose.yml文件

version: '2' 

services: 

    cassandra-1: 
     hostname: cassandra-1 
     image: cassandra:latest 
     command: /bin/bash -c "sleep 1 && echo ' -- Pausing to let system catch up ... -->' && /docker-entrypoint.sh cassandra -f" 
     expose: 
     - 7000 
     - 7001 
     - 7199 
     - 9042 
     - 9160 
     # volumes: # uncomment if you desire mounts, also uncomment cluster.sh 
     # - ./data/cassandra-1:/var/lib/cassandra:rw 

    cassandra-2: 
     hostname: cassandra-2 
     image: cassandra:latest 
     command: /bin/bash -c "sleep 20 && echo ' -- Pausing to let system catch up ... -->' && /docker-entrypoint.sh cassandra -f" 
     environment: 
     - CASSANDRA_SEEDS=cassandra-1 
     links: 
     - cassandra-1:cassandra-1 
     expose: 
     - 7000 
     - 7001 
     - 7199 
     - 9042 
     - 9160 
     # volumes: # uncomment if you desire mounts, also uncomment cluster.sh 
     # - ./data/cassandra-2:/var/lib/cassandra:rw 

本示例試圖在另一容器中,開始第一卡桑德拉節點(卡桑德拉-1),然後一個第二節點(卡桑德拉-2)這應該是能夠使用1節點作爲標準卡桑德拉環境變量種子節點「CASSANDRA_SEEDS」

然而,當我運行它,我得到這種異常

cassandra-2_1 | WARN 07:00:35 Seed provider couldn't lookup host cassandra-1 
cassandra-2_1 | Exception (org.apache.cassandra.exceptions.ConfigurationException) encountered during startup: The 
provider lists no seeds. 
cassandra-2_1 | The seed provider lists no seeds. 
cassandra-2_1 | ERROR 07:00:35 Exception encountered during startup: The seed provider lists no seeds. 
cass2_cassandra-2_1 exited with code 3 

從哪裏開始第二卡桑德拉節點(卡桑德拉-2)的嘗試總是失敗,同時也結束了在第一

cass1_cassandra-1_1 exited with code 137 

殺死如果我的泊塢窗,compose.yaml文件分割成兩個部分,第一個cassandra節點的起始位置在一個文件中。並且只需使用碼頭工具啓動該節點即可構成即可。

也請注意,當我拿2個獨立泊塢窗,compose.yml文件路徑,一爲「卡桑德拉-1」,另一個是「卡桑德拉-2」我AM確保2號文件使用「external_links」而不是「鏈接」。但結果是一樣的

任何人都有更多的碼頭經驗告訴我,我哪裏出錯了。

我已經在網上搜索了其他的例子,每個人似乎都和我一樣。但我的行不通。

感覺完全迷失了方向,請大家幫忙

回答

1

這似乎只是Docker for Windows的一個問題。我試圖在Mac上的原始文件,它工作得很好

1

你確定第一個節點完成啓動第二個節點試圖加入羣集之前?

根據我的經驗,第一個節點完成啓動僅需20秒。在加入羣集之前,使第二個節點休眠60秒。

command: /bin/bash -c "echo ' -- Pausing to let system catch up ...' && sleep 60 && /docker-entrypoint.sh cassandra -f" 

此外,在上述命令我換echosleep這使得更多的意義,因爲你仔細觀看端子輸出。的cassandra-1

日誌應該由你的終端上執行該命令顯示類似

INFO 21:21:06 Node /172.18.0.2 state jump to NORMAL 
INFO 21:23:04 Handshaking version with /172.18.0.4 
INFO 21:23:07 Node /172.18.0.4 is now part of the cluster 
INFO 21:23:07 InetAddress /172.18.0.4 is now UP 

非常集裝箱日誌:

docker logs [OPTIONS] CONTAINER_ID 

通過執行docker ps查找容器ID。

如果仍然無法正常工作,請嘗試將mem_limit: 1024m添加到兩個Cassandra容器定義中。由於內存資源有限,啓動可能會失敗。

+0

可悲的是它沒有任何區別。同樣的錯誤。我在Windows上運行Docker,我將這個文件交給了docker的Linux用戶,他們說這只是工作。 GRRRR – sacha