2012-10-24 16 views
0

我是cassandra的新手,所以我遵循this guide關於如何讓Cassandra在EC2實例上設置。我已經完成了所有設置並準備好了,但出於某種原因,我無法通過ruby進行連接。這是我一直在努力:如何連接到ruby中的EC2 cassandra實例

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 
    # } 
    # > 

然後,當我試圖使用的客戶端,我得到這個錯誤:

client.keyspaces 
    #=> ThriftClient::NoServersAvailable: No live servers in [ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:9160]. 

我能夠通過SSH連接,所以我不知道是什麼我在這裏做錯了。

更新:

我的安全組包括:

端口:

協議:TCP

源:SG-XXXXXXXX

回答

1

連接到Cassandra服務器的「源」在哪裏?

您正在使用的安全組僅打開端口9160到組中的實例sg-xxxxxxxx。如果你試圖從其他地方連接(比如外部世界),你將不會成功。

+0

我會改變這個以便我可以連接? – Josh

+0

@Josh這就是爲什麼我要求「來源」。例如,如果您想將它打開到整個世界,您可以將源代碼更改爲:0.0.0.0/0。 – messick

+0

我將源代碼更改爲0.0.0.0/0,它工作正常! – Josh

0

有有兩件事要檢查:

  • 你有在客戶端和/或服務器上運行的防火牆嗎?
  • 您允許您的EC2安全組從您的客戶端訪問您的服務器嗎?