【问题标题】:cqlsh to Cassandra single node running in dockercqlsh 到 docker 中运行的 Cassandra 单节点
【发布时间】:2015-01-10 01:19:51
【问题描述】:

我正在学习 cassandra 2.1.1:

我有一个运行 cassandra 节点的 docker 容器。我能够从节点内部将 csqlsh 插入到 cassandra 节点本身。它说“127.0.0.1:4096”。我知道它是 localhost,并且与 cassandra.yml 设置中的“listen_address”有关。

当使用 boot2docker ip 地址时,它不起作用。我已经使用 -p port 4096 & 9160 启动了容器,但没有运气。我试图将“listen_address”更改为 boot2docker ip 地址,但 cqlsh 时出现同样的错误

信息:
1.cqlsh客户端和cassandra节点运行的是cassandra 2.1.1
2.我已经通过运行./cassandra在节点上启动了cassandra

有什么建议吗?

谢谢

【问题讨论】:

    标签: docker cassandra-2.0 boot2docker


    【解决方案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

    【讨论】:

      【解决方案2】:

      您应该将listen_address 设置为分配给容器的IP 地址。您可以对容器使用“boot2docker inspect”来找到它。

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

      【讨论】:

        猜你喜欢
        • 2020-10-03
        • 2020-05-13
        • 2018-02-10
        • 2016-04-11
        • 2017-08-21
        • 2018-11-08
        • 2022-10-25
        • 2019-11-13
        • 1970-01-01
        相关资源
        最近更新 更多