2016-02-05 88 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已经发生了很大变化!)