0

在我们使用 Ruby 1.9.3(从 1.8.7)升级到 Rails 3.2.8 后,我们的 Couchbase 客户端无法再访问我们的 AWS 集群(Couchbase 1.8 社区版)。

1.9.3p194 :011 > c = Couchbase.new("http://ec2-184-169-237-63.us-west-1.compute.amazonaws.com:8091")
=> #<Couchbase::Bucket:0x007fe12d9e6c98 "http://ec2-184-169-237-63.us-west-1.compute.amazonaws.com:8091/pools/default/buckets/default/" default_format=:document, default_flags=0x0, quiet=false, connected=true, timeout=2500000> 

1.9.3p194 :012 > c.get("hello")
Couchbase::Error::Timeout: failed to get value (key="hello", error=0x16)
    from (irb):12:in `get'
    from (irb):12
    from /Users/playmeshinc/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.8/lib/rails/commands/console.rb:47:in `start'
    from /Users/playmeshinc/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.8/lib/rails/commands/console.rb:8:in `start'
    from /Users/playmeshinc/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.8/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

在管理面板上,我们甚至看不到任何请求到达服务器。

但是,如果我们在端口 11211 上使用 memcache 协议,则一切正常。如果我们在本地 couchbase 集群 (OSX) 上尝试相同的代码和相同的调用,一切正常。

知道可能发生了什么吗?是因为 Ruby Couchbase 客户端与 AWS 或 Ruby 1.9.3 不兼容吗?

4

2 回答 2

2

实际上我想通了,那是因为 AWS 上的 moxi 客户端会返回外部机器无法访问的内部 ip,这就是为什么当我从外部测试时它超时的原因。

于 2012-08-25T23:25:05.097 回答
0

Gem 绝对兼容 EC2 和 1.9.3。您使用的是什么版本的 couchbase gem?什么版本的libcouchbase?听起来罪魁祸首可能是 rvm 或其他东西。我建议尝试 gem 卸载,然后重新安装。还要确保 libcouchbase 是最新的。

于 2012-08-24T23:46:01.393 回答