如何使用Docker for Windows从主机连接到Cassandra

我期待设置一个开发testing环境,虽然我有东西主要安装,我很难从主机(运行Visual Studio)连接到Docker中的Cassandra集群(使用Docker for Windows)。 我猜我只是搞乱configuration设置和/或缺less一个设置; 但不能确定如何使这个工作(它对单个节点工作;只是不是多个节点,这是我想要的)

我有什么设置:

docker run –name tnode1 -d -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_BROADCAST_ADDRESS = 10.0.75.2 -e CASSANDRA_ENDPOINT_SNITCH = GossipingPropertyFileSnitch cassandra

我也试过用-p开关

docker run –name tnode1 -d -p 9042:9042 -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_BROADCAST_ADDRESS = 10.0.75.2 -e CASSANDRA_ENDPOINT_SNITCH = GossipingPropertyFileSnitch cassandra

这似乎工作,如果我把数据在这个,然后从Visual Studio连接到10.0.75.2,一切正常,如我所料。 问题来了,当我去添加另一个节点。

我已经尝试了很多方法,但是似乎都是以第二个音符开始,然后退出并且永不join集群。 如果我在设置tnode1时忽略了CASSANDRA_BORADCAST_ADDRESS,那么群集可以正常工作,但我无法从Visual Studio中获得它。

第二节点(一般信息)

docker inspect -f'{{.NetworkSettings.IPAddress}}'tnode1返回172.17.0.2 docker exe -it tnode1 nodetool status的地址为10.0.75.2

第二个节点(尝试1)

docker run –name tnode2 -d -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_SEEDS = 172.17.0.2 ca ssandra结果:运行nodetool状态不显示tnode2 …运行docker ps -a显示“已退出(3)30秒前”状态

第二个节点(尝试2)

docker run –name tnode2 -d -e CASSANDRA_CLUSTER_NAME = tcluster -e CASSANDRA_DC = TDC1 -e CASSANDRA_RACK = TRAC1 -e CASSANDRA_SEEDS = 10.0.75.2 ca ssandra结果:运行nodetool状态不显示tnode2 …正在运行docker ps -a显示“退出(3)28秒前”状态

好像种子值没有连接,然后新节点因此停止。 再次,如果我拿出广播地址,然后节点创build工作,但我不能从主机连接; 我试图在tnode1创build时添加监听器地址和-p参数,但结果相似。

任何援助将不胜感激。

以下组成集群定义适用于我,我可以从Docker主机连接到cqlsh并运行testingcql 。

每次启动新节点时,内存将从默认的1.5G下调,由于Docker虚拟机内存不足,前一个节点会退出。

version: "2.1" services: cassandra-1: image: cassandra environment: CASSANDRA_CLUSTER_NAME: tcluster CASSANDRA_DC: TDC1 MAX_HEAP_SIZE: 600M HEAP_NEWSIZE: 100M ports: - '9042:9042' - '9160:9160' networks: cassclus: ipv4_address: 10.0.75.11 cassandra-2: image: cassandra environment: CASSANDRA_CLUSTER_NAME: tcluster CASSANDRA_DC: TDC1 CASSANDRA_SEEDS: 10.0.75.11 MAX_HEAP_SIZE: 600M HEAP_NEWSIZE: 100M networks: cassclus: ipv4_address: 10.0.75.12 cassandra-3: image: cassandra environment: CASSANDRA_CLUSTER_NAME: tcluster CASSANDRA_DC: TDC1 CASSANDRA_SEEDS: 10.0.75.11 MAX_HEAP_SIZE: 600M HEAP_NEWSIZE: 100M networks: cassclus: ipv4_address: 10.0.75.13 networks: cassclus: driver: bridge ipam: driver: default config: - subnet: 10.0.75.0/24 gateway: 10.0.75.1