将本地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。
希望能帮助到你!