2016-02-05 93 views
2

我正在看着一種關於Cassandra的PluralSight的舊視頻並將工作鏈接到下面的方法。但是,它不適用於當前的docker版本。這是我如何鏈接不同的節點。例如:Cassandra節點在Docker中沒有鏈接

docker run --name=n1 -d tobert/cassandra 
docker run --name n2 -d tobert/cassandra -seeds 172.17.0.7 

172.17.0.7是IP地址,當我運行命令

docker inspect -f '{{ .NetworkSettings.IPAddress}}' n1 

但是,只有一個節點被允許在一個時間似乎運行。當我運行命令

docker ps 

docker exec -it n1 nodetool status 

只有容器中的一個運行。當我嘗試檢查一個容器的IP地址時,它將返回空。是否有另一種方法來鏈接docker中的cassandra節點?

+0

通過相同的課程,我碰到了完全相同的問題。在Windows 10上運行 – Dashu

回答

0

您可以通過--link標誌鏈接泊塢窗容器:

docker run --name n1 tobert/cassandra 
docker run --name n2 --link n1:cassandra tobert/cassandra -seeds cassandra 

Communication across links,從搬運工文檔,包含詳細的解釋如何使用--link標誌。


我也運行你的命令,它在我的機器上工作。

下面是命令的輸出:docker exec -it n1 nodetool status

Datacenter: datacenter1 
======================= 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address  Load  Tokens Owns (effective) Host ID        Rack 
UN 172.17.0.3 72 KB  256  100.0%   f0a34a45-5f7a-46ff-8fe6-1cf5ff36a3e3 rack1 
UN 172.17.0.2 51.46 KB 256  100.0%   8036177e-515c-42b1-9263-3b815c25bde6 rack1 

此外,當-seed參數是錯誤的(不存在的IP地址)第二容器正在等待一段時間,〜30秒後終止與exeception:

ERROR [main] 2016-02-07 19:12:11,081 CassandraDaemon.java:541 - Exception encountered during startup 
java.lang.RuntimeException: Unable to gossip with any seeds 
    at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1307) ~[apache-cassandra-2.1.7.jar:2.1.7] 
    at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:533) ~[apache-cassandra-2.1.7.jar:2.1.7] 

所以我覺得N2是不能訪問N1 - 請仔細檢查您的N1的IP地址(檢查你的日誌N2運行:docker exec xxxx tail -f /data/log/system.log -n 100,其中xxxx - N2容器ID)。

如果您對Cassandra版本沒有任何特殊要求,您可以查看官方存儲庫中的圖片:https://hub.docker.com/_/cassandra/

1

設法解決這個問題。 這似乎是由「Docker快速入門終端」創建的碼頭工機器的問題。也許與1024的默認內存有關?

重塑機解決了這個問題對我來說

docker-machine rm default 
docker-machine create -d virtualbox --virtualbox-memory=4096 default 
1

是,大暑是正確的,你需要比默認內存的詳細運行多個實例卡桑德拉。在這裏看到類似的Twitter線程:https://twitter.com/perksc/status/641159044225466368

-seeds參數特定於此Cassandra泊塢窗容器的入口點,並有助於Cassandra自己的羣集(請參閱此處的Github項目:https://github.com/tobert/cassandra-docker)。使用此功能,您不需要使用Docker自己的容器鏈接來建立羣集。

(我是Pluralsight課程的作者。有趣的是,該課程還不到一年的時間,但從那時起,Docker已經發生了很大變化!)