我有一组作为docker容器运行的微服务。一个微服务说A想要连接到我的笔记本电脑本地运行的cassnadra。为了做到这一点,我有以下配置
来自服务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.
现在,当我的容器出现并尝试连接到我的机器上托管的这个正在运行的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。
请指教。感谢
答案 0 :(得分:2)
正如Shibashis所提到的,可能你无法通过127.0.0.1
请找到代表HOST的IP。 How to get the IP address of the docker host from inside a docker container
通过更改conf\cassandra.yaml
到已识别的HOST IP。
希望它有所帮助!