【问题标题】:connecting to cassandra nodes on a datastax cluster on EC2 Ruby on Rails在 EC2 Ruby on Rails 上连接到 datastax 集群上的 cassandra 节点
【发布时间】:2014-04-25 03:13:55
【问题描述】:

我创建了一个带有 2 个 cassandra 节点、2 个搜索节点和 2 个 Analytics 节点的 datastax cassandra Enterprise 集群。

似乎一切正常,除了我无法从外部连接到它。如果我在 node0 服务器上,我可以运行 cassandra-cli 并连接到端口 9160 上的 cassandra 节点,但是当我尝试使用 datastax-rails gem 连接时,我得到“没有实时服务器”我还尝试了 datastax devCenter,它试图连接到本机端口 9042 但也没有工作。我真的很困惑,任何帮助表示赞赏。

所以经过一番挖掘,我发现了一些问题

   1. Port 9160 is connected and I can connect to it from telnet node0_ip 9160
   2. when I run rake ds:migrate, I get No live servers in node0_ip 
   3. I tried to connect to 'cassandra' gem instead from IRB and tried 
      a. client = Cassandra.new('example', 'node0_ip:9160')
      b. client.insert(:users, "5", {'screen_name' => "buttonscat4"})

     I got a similar error with ThriftClient::NoServersAvailable: No live servers but this time with all the IPs of all the nodes in the cluster

  4. I tried adding "client.disable_node_auto_discovery!" and I was able to connect and add stuff using 'cassandra' Gem. 

  5. I also found on https://github.com/cassandra-rb/cassandra/issues/171 that I need to  change your server to bind on a non-loopback address but have no idea what does that mean

现在的问题是如何

【问题讨论】:

    标签: ruby-on-rails amazon-ec2 datastax-enterprise datastax cassandra-2.0


    【解决方案1】:

    听起来您需要在端口 9160 上向外部开放您的 EC2 安全组。特别是您的 node0 正在使用的安全组。

    您可以在此处找到有关它们的更多信息:

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

    【讨论】:

    • 所以我打开了那个端口,我似乎从 telnet 连接到它,但是当我运行 rake ds:create 时,我仍然收到错误“没有实时服务器”我还应该包含我的 datastax.yml 文件设置开发:服务器:[“xx.xx.xx.xxx:9160”]键空间:“my_dse_ks”策略类:“org.apache.cassandra.locator.SimpleStrategy”策略选项:{“复制因子”:“2”}连接选项:超时:10 次重试:2 server_max_requests:1000 solr:端口:8983 路径:/solr
    • 你真的可以在你的问题中包含这个文件吗?
    【解决方案2】:

    我遇到了同样的错误,并通过使用 disable_node_auto_discovery 让它工作!

    您可以在此方法的文档中看到它说“当 cassandra 集群在与您用于连接的 IP 地址不同的 IP 地址上进行内部通信时,这主要是有用的。使用 EC2 时就是一个典型的例子托管集群。通常,集群将通过 Amazon 发布的本地 IP 地址进行通信,但任何从 EC2 外部连接的客户端都需要使用公共 IP。"

    http://rdoc.info/github/cassandra-rb/cassandra/master/Cassandra:disable_node_auto_discovery!

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 2021-02-12
      • 2019-07-16
      • 2013-02-17
      • 2013-05-21
      • 2015-11-30
      • 2015-04-18
      • 2012-12-12
      • 2016-10-15
      相关资源
      最近更新 更多