将本地cassandra集群与docker容器连接起来

我有一组作为docker集装箱运行的微服务。 一个微服务说,A想连接到我的笔记本电脑本地运行的cassnadra。 为了做到这一点,我有以下configuration

服务A的yaml文件的片段

cassandra: hosts: [127.0.0.1] keyspace: "My keyspace" protocol_version: 3 ports: 9042 

另一方面,我通过调用./bin/cassandra来运行cassandra。 然后我连接到本地的cqlsh,其输出如下

 Connected to Test Cluster at 127.0.0.1:9042. [cqlsh 5.0.1 | Cassandra 3.0.6 | CQL spec 3.4.0 | Native protocol v4] Use HELP for help. 

现在当我的容器出现并尝试连接到我的机器上托pipe的这个正在运行的cassandra时,它说连接被拒绝。 请参阅下面的跟踪

 File "cassandra/cluster.py", line 2076, in cassandra.cluster.ControlConnection._reconnect_internal (cassandra/cluster.c:36914) cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'127.0.0.1': ConnectionRefusedError(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")}) [start] application exit with code 1, killing container 

更多信息我正在使用apache-cassandra-3.0.6。

请指教。 谢谢

正如Shibashis所提到的,可能你不能通过Docker容器与127.0.0.1

请find表示为HOST的IP。 如何从Docker容器中获取Docker主机的IP地址

通过改变conf\cassandra.yaml启动cassandra实例

  • listen_address
  • rpc_address

到被识别的HOST IP。

希望能帮助到你!