cqlsh到Docker中运行的Cassandra单节点

时间:2014-11-13 01:09:52

标签: docker cassandra-2.0 boot2docker

我正在学习cassandra 2.1.1:

我有一个运行cassandra节点的docker容器。我能够从节点内csqlsh到cassandra节点本身。它说" 127.0.0.1:4096"。我知道它是localhost并且与#34; listen_address"有关。在cassandra.yml设置中。

使用boot2docker ip地址时,它不起作用。我用-p端口4096& 9160但没有运气。我试图改变" listen_address"到boot2docker的ip地址,但是当cqlsh

时出现同样的错误

信息:
1. cqlsh客户端和cassandra节点正在运行cassandra 2.1.1
2.我已经通过运行./cassandra

在节点上启动了cassandra

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

发生在我身上,能够在容器内cqlsh,但无法从docker容器主机外部连接,当我意识到使用不使用9160的v2.1时:

来自cqlsh documentation

所以,你应该让clqsh客户端在9042而不是9106使用包含docker容器的主机的IP。使用docker ps和netstat -atun | grep LIST和telnet确认正确的端口处于LISTEN状态。

docker run -d -p 9042:9042 cassandra:2.2
docker run -d -p 9042:9042 poklet/cassandra
  

<强>要求

     

在Cassandra 2.1中,cqlsh实用程序使用本机协议。在使用Datastax python驱动程序的Cassandra 2.1中,默认的cqlsh监听端口是9042。

     

在Cassandra 2.0中,cqlsh实用程序使用Thrift传输。在   Cassandra 2.0.x,默认的cqlsh监听端口是9160。

Cassandra cqlsh - connection refused

答案 1 :(得分:0)

您应该将listen_address设置为分配给容器的IP地址。您可以使用&#39; boot2docker inspect&#39;对着容器。

通常,容器的IP地址将位于boot2docker建立的专用网络上,因此无法在boot2docker VM外部访问,除非您通过VM路由流量,如下所示:https://gist.github.com/bhyde/be920f1a390db5f4148e