如何在ruby中连接到EC2 cassandra实例

如何在ruby中连接到EC2 cassandra实例,ruby,amazon-ec2,cassandra,Ruby,Amazon Ec2,Cassandra,我是cassandra的新手,所以我接着介绍了如何在EC2实例上设置cassandra。我已经做好了一切准备,但由于某些原因,我无法从ruby连接。以下是我一直在尝试的: require 'cassandra' client = Cassandra.new('PERSON', 'ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:9160') # => # <Cassandra:0x100cda3b0 # @auto_di

我是cassandra的新手,所以我接着介绍了如何在EC2实例上设置cassandra。我已经做好了一切准备,但由于某些原因,我无法从ruby连接。以下是我一直在尝试的:

 require 'cassandra'
 client = Cassandra.new('PERSON', 'ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:9160')
   # =>
   #  <Cassandra:0x100cda3b0
   #    @auto_discover_nodes = true,
   #    @column_name_class = {},
   #    @column_name_maker = {},
   #    @is_super = {},
   #    @sub_column_name_class = {},
   #    @sub_column_name_maker = {},
   #    attr_accessor :keyspace = "PERSON",
   #    attr_reader :servers = [
   #      [0] "ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:9160"
   #    ],
   #    attr_reader :thrift_client_class = ThriftClient < AbstractThriftClient,
   #    attr_reader :thrift_client_options = {
   #      :transport_wrapper => Thrift::FramedTransport < Thrift::BaseTransport,
   #      :thrift_client_class => ThriftClient < AbstractThriftClient,
   #      :protocol => Thrift::BinaryProtocolAccelerated < Thrift::BinaryProtocol
   #    }
   #  >
我可以通过SSH连接,所以我不确定我在这里做错了什么

更新:

我的安全组包括:

端口:9160

协议:tcp


来源:sg-xxxxxxxx

有两件事需要检查:

  • 您是否在客户端和/或服务器上运行防火墙
  • 是否允许在EC2安全组中从客户端访问服务器
连接到Cassandra服务器的“源”在哪里


您正在使用的安全组仅向组中的实例打开端口9160。如果您试图从其他任何地方(如外部世界)连接,您将不会成功。

我会将此更改为什么,以便连接?@Josh这就是我请求“来源”的原因。例如,如果你想向全世界开放它,你可以将源代码改为:0.0.0.0/0。@Josh,太好了。然而,我建议阅读AWS安全组的文档,并朝着更严格的方向努力。现在,地球上的每个人都可以像你一样访问这个服务器。当我准备好把任何真实的数据放进去的时候,我会回去,现在,我只是在玩它。
client.keyspaces
  #=> ThriftClient::NoServersAvailable: No live servers in [ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:9160].