【问题标题】:DataStax Devcenter fails to connect to the remote cassandra databaseDataStax Devcenter 无法连接到远程 cassandra 数据库
【发布时间】:2018-06-06 12:11:20
【问题描述】:

操作系统:CentOS 6.4(服务器)

我已在我的服务器中成功安装 (yum install dsc20) cassandra 数据库层,并且可以使用 CQL SHel (cqlsh) 连接到它。但我需要使用 DataStax 的 DevCenter 软件远程运行查询。所以我将它(DevCenter)安装在一个单独的工作站中。 (CentOS 6.4 - 桌面)并尝试添加新连接以连接到 cassandra db。

所以我将主机的“CentOS 6.4 - 服务器”(其中运行 cassandra 数据库)的 IP 和端口设为 9160。但是在测试连接时它失败了。

我还尝试关闭服务器中的防火墙,(/etc/init.d/iptables stop)。但运气不好。

我确定这可能是由于一些我无法弄清楚的错误配置造成的。我会很感激,如果有人可以给我一个解决方案,因为我正在研究这个并没有找到答案。非常感谢您。

【问题讨论】:

  • cassandra.yaml 中配置的rpc_address 选项是什么?如果它仅在本地主机上侦听,则外部客户端将无法连接。
  • 是的,它被配置为“本地主机”。但我试着给'0.0.0.0'。但没有运气。任何想法?感谢您的回复。
  • 改成0.0.0.0(即监听所有接口)之后,你配置防火墙了吗?
  • 配置防火墙的意思是:我只是简单地把它关了(/etc/init.d/iptables stop),所以是的。
  • 是不是和端口有关?在新的连接向导中默认显示一个端口为 9042。但在命令行中,$ cqlsh 说:“在 localhost:9160 连接到测试集群。”所以我尝试使用“9160”这个端口。但仍然没有运气..任何帮助将不胜感激!

标签: cassandra


【解决方案1】:

在 DataStax Java 驱动程序之上构建的 DataStax DevCenter 具有相同的 connectivity requirements as the driver。即:

  1. start_native_transport: true
  2. rpc_address:客户端可访问的 IP 或主机名
  3. 集群中的机器接受端口 9042 上的连接(native_transport_port 配置选项)

如果 rpc_address 设置为私有 IP 或 0.0.0.0,DevCenter 将不知道要连接到哪个节点。

如果您的集群有多个节点并且这些节点使用rpc_address: 0.0.0.0,即使您使用几个节点的 IP 配置 DevCenter,它仍然会在发现集群中的其他节点时遇到问题。

cassandra.yaml 中有一条关于使用rpc_address: 0.0.0.0 的评论/警告:

注意,与上面的 ListenAddress 不同,它允许指定 0.0.0.0 如果您想在所有接口上收听,则在这里,但这会破坏客户端 依赖于节点自动发现。

注意:未来 DevCenter 可能会忽略/过滤配置有 rpc_address: 0.0.0.0 的集群中的节点。

【讨论】:

    【解决方案2】:

    试试这个..它对我有用!

    在安装了 DevCenter 的机器上运行以下命令

    $> ssh -L 9042:localhost:9042 <username>@<ip-address-cassandra-db> -N
    

    运行此命令后会提示输入密码

    现在在您的 DevCenter > Contact Hosts 中,提供“127.0.0.1”并测试连接。宾果游戏,你看到了魔法......

    【讨论】:

    • 很好的答案。不需要服务器配置
    【解决方案3】:

    在 cassandra.yaml 中,我设置了

    1. listen_address:本地主机
    2. rpc_address: 1.2.3.4
    3. broadcast_rpc_address: 1.2.3.4

    做了之后

    sudo service cassandra 重启

    DevCenter 能够成功连接。

    修改后cqlsh没有地址就无法启动:

    cqlsh 1.2.3.4

    您可以设置环境变量 $CQLSH_HOST=1.2.3.4。然后只需键入 cqlsh

    【讨论】:

      【解决方案4】:

      如果有人在本地使用 docker,它可以运行这个命令。

      docker run --name cassandra -p 127.0.0.1:9042:9042 -p 127.0.0.1:9160:9160 
      -e CASSANDRA_LISTEN_ADDRESS=localhost 
      -e CASSANDRA_BROADCAST_ADDRESS=localhost
      -e CASSANDRA_RPC_ADDRESS=localhost -d cassandra
      

      【讨论】:

        猜你喜欢
        • 2014-07-28
        • 2014-07-16
        • 2017-12-26
        • 2019-08-31
        • 2019-05-18
        • 2015-07-10
        • 2015-01-27
        • 2015-08-16
        • 2015-01-03
        相关资源
        最近更新 更多