代码之家  ›  专栏  ›  技术社区  ›  Obama

如何为远程连接配置cassandra

  •  14
  • Obama  · 技术社区  · 10 年前

    我正在尝试为windows上的远程连接配置Cassandra Datastax Community Edition,

    Cassandra Server安装在Windows 7 PC上, 使用本地CQLSH,它可以完美地连接到本地服务器。

    但当我尝试连接 使用来自同一网络中的另一台PC的CQLSH,我得到以下错误消息:

    连接错误:(“无法连接到任何服务器”,{“MYHOST”: 错误(10061,“尝试连接到[('HOST_IP',9042)]。上一个错误:否 无法建立连接,因为目标计算机主动拒绝 it“)})

    因此,我想知道如何正确配置(我应该对cassandra.yaml配置文件进行哪些更改)cassandra服务器以允许远程连接。

    提前谢谢你!

    3 回复  |  直到 8 年前
        1
  •  30
  •   ahll    8 年前

    这个怎么样:

    在卡桑德拉做这些改变。yaml配置文件:

    start_rpc: true
    
    rpc_address: 0.0.0.0
    
    broadcast_rpc_address: [node-ip]
    
    listen_address: [node-ip]
    
    seed_provider:
      - class_name: ...
        - seeds: "[node-ip]"
    

    参考: https://gist.github.com/andykuszyk/7644f334586e8ce29eaf8b93ec6418c4

        2
  •  21
  •   Kat    10 年前

    Cassandra 2.0的远程访问是通过其节省端口进行的。在Cassandra2.0.x中,默认的cqlsh侦听端口是在Cassandra中定义的9160。通过rpcport参数进行yaml。默认情况下,Cassandra 2.0.x和更早版本通过在Cassandra中将start_rpc配置为true来启用Thrift。yaml文件。

    在Cassandra 2.1中,cqlsh实用程序使用本机协议。在使用Datastax python驱动程序的Cassandra 2.1中,默认的cqlsh侦听端口是9042。

    cassandra节点应该绑定到服务器网卡的IP地址-它不应该是127.0.0.1或localhost,它是环回接口的IP,绑定到该地址将阻止直接远程访问。要配置绑定地址,请使用cassandra.yaml中的rpc_address参数。将其设置为0.0.0.0将侦听所有网络接口。

    您检查过远程机器是否可以连接到Cassandra节点吗?机器之间有防火墙吗?您可以尝试以下步骤进行测试:

    1) 确保可以从您所在的服务器连接到该IP:

    $ssh(美元)user@xxx.xxx.xx.xx

    2) 检查节点的状态,并确认其显示相同的IP:

    $nodetool状态

    3) 运行命令以连接到IP(如果未使用默认端口,则仅指定端口):

    $cqlsh xxx.xxx.xx

        3
  •  10
  •   rogerdpack    8 年前

    Kat的替代解决方案。使用Ubuntu 16.04

    1. ssh到服务器 server_user@**.**.**.**
    2. 如果正在运行,请停止cassandra:

      • 检查是否运行 ps aux | grep cassandra
      • 如果运行,将输出大量命令/标志,例如。

        ubuntu 14018 4.6 70.1 2335692 712080 pts/2 Sl+04:15 0:11 java-Xloggc:./../logs/gc。日志

        示例中的注释14018是进程id

      • 停止使用 kill <process_id> (在本例中为14018)
    3. 编辑卡桑德拉。yaml文件如下

      • rpc_address: 0.0.0.0
      • broadcast_rpc_address: **.**.**.** <-服务器的IP(不能设置为0.0.0.0)
    4. 重新启动cassandra ./bin/cassandra -f (来自卡珊德拉根内)
    5. 在本地机器上打开另一个终端&通过连接 cqlsh **.**.**.** (服务器的IP)进行测试。

    这个 ./bin/nodetool status 地址报告了我的本地主机IP(127.0.0.1),但尽管如此,cqlsh远程仍然有效。

    推荐文章