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

时间:2016-05-16 16:49:49

标签: docker cassandra docker-compose

我有一组作为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。

请指教。感谢

1 个答案:

答案 0 :(得分:2)

正如Shibashis所提到的,可能你无法通过127.0.0.1

的docker容器到达主机

请找到代表HOST的IP。 How to get the IP address of the docker host from inside a docker container

通过更改conf\cassandra.yaml

启动cassandra实例
  • listen_address
  • rpc_address

到已识别的HOST IP。

希望它有所帮助!