连接到 Apache Cassandra 的 DataStax Distribution 的容器

Posted

技术标签:

【中文标题】连接到 Apache Cassandra 的 DataStax Distribution 的容器【英文标题】:Connection to container of DataStax Distribution of Apache Cassandra 【发布时间】:2020-01-30 12:47:21 【问题描述】:

我创建了 Apache Cassandra (DDAC) 的 DataStax Distribution 的 Docker 容器:

docker pull datastax/ddac
docker run -e DS_LICENSE=accept --name ddac -d datastax/ddac

docker ps


通过 Datastax DevCenter 连接到节点时出现错误:

尝试通过 7000 和 7199 端口连接时出现相同的错误。


如何连接部署在 docker 容器中的 DDAC 节点?


更新

为了以防万一,我禁用了 Windows 防火墙。 使用docker run -e DS_LICENSE=accept --name ddac -p 9042:9042 -d datastax/ddac 得到同样的错误:

无法访问指定的主机。已尝试的所有主机 查询失败(尝试:localhost/0:0:0:0:0:0:0:1:9042 (com.datastax.driver.core.exceptions.TransportException: [localhost/0:0:0:0:0:0:0:1] 频道已关闭), 本地主机/127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [localhost/127.0.0.1] 频道已关闭)) [localhost/0:0:0:0:0:0:0:1] 频道已关闭 [localhost/127.0.0.1] 频道已关闭

【问题讨论】:

这是另一个错误 - 现在 DDAC 已正确公开...我认为 DevCenter 与较新的 Cassandra 版本不兼容 - 它不再维护。 【参考方案1】:

这是因为容器有自己的 IP,您需要连接到它 - 您可以使用

获取容器的 IP
docker inspect -f 'range .NetworkSettings.Networks.IPAddressend' ddac

或在主机上公开 Cassandra 端口,以便您可以通过 localhost 进行连接 - 这是通过 docker run-p 标志完成的:

docker run -e DS_LICENSE=accept --name ddac --rm -p 9042:9042 -d datastax/ddac

【讨论】:

以上是关于连接到 Apache Cassandra 的 DataStax Distribution 的容器的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 EC2 上的 cassandra 服务器?

Python 无法通过 Docker 连接到 Cassandra

Cassandra - Dev中心无法连接到Cassandra集群的所有3个节点

无法连接到 python 上的 cassandra(使用 cassandra-driver

Cassandra - 开发中心无法连接到 Cassandra 集群的所有 3 个节点

使用 java 模拟多个用户连接到 Cassandra