带有Python的Docker Cassandra提供连接错误

时间:2018-11-11 15:49:33

标签: python-3.x docker cassandra

我安装了Docker并运行了第一个Cassandra节点,并使用Cqlsh运行了一些命令,并且运行良好。我安装了python驱动程序,然后在运行以下命令时收到以下错误。我看到了很多堆栈问题,没有多少人能够回答。请说出您的想法。我一直想使用cassandra,但是从来没有想过解决这个问题的好方法。谢谢

>>> from cassandra.cluster import Cluster
>>> cluster=Cluster()
>>> keyspace='north'
>>> session=Cluster(['192.168.1.xx']).connect()

错误

cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'192.168.1.xx': ConnectionRefusedError(111, "Tried connecting to [('192.168.1.xx', 9042)]. Last error: Connection refused")})

当我尝试用创建的cassandra节点替换IP地址时,在我的情况下为'node1'会给我这个错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "cassandra/cluster.py", line 826, in cassandra.cluster.Cluster.__init__
  File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -5] No address associated with hostname

2 个答案:

答案 0 :(得分:0)

您提供的IP地址无效:192.168.1.xx

您需要提供群集中至少一个节点的IP地址(或有效主机名)。

答案 1 :(得分:0)

我实际上是通过提供位于docker内部的容器Ip地址来解决此问题的。我很困惑我应该给哪个地址。但是之后运行此命令。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id. 

我不知道我需要指定具有集群节点的容器ID。所以我一直都在提供机器的IP地址。