出于开发目的,我想将本地计算机连接到远程ec2上安装的couchbase。 我成功地建立了连接,但是当我尝试访问数据时,我得到了超时。
我已经搜索了问题,发现here,问题可能与couchbase返回内部IP的事实有关,而内部IP无法在AWS外部使用。
但是,我没有找到任何解决方案。任何的想法?
感谢。
This is my output:
In [19]: c = couchbase.Couchbase().connect(host='107.20.181.77',bucket='amit')
In [20]: c
Out[20]: <couchbase.connection.Connection bucket=amit, nodes=['10.185.248.101:8091'] at 0x2f20870>
In [21]: c.set("12345",{'a':100})
---------------------------------------------------------------------------
TimeoutError Traceback (most recent call last)
<ipython-input-21-4df1cb7c8c9a> in <module>()
----> 1 c.set("12345",{'a':100})
/usr/local/lib/python2.7/dist-packages/couchbase/connection.pyc in set(self, key, value, cas, ttl, format, persist_to, replicate_to)
318 """
319 return _Base.set(self, key, value, cas, ttl, format,
--> 320 replicate_to, persist_to)
321
322 def add(self, key, value, ttl=0, format=None, persist_to=0, replicate_to=0):
TimeoutError: <Key=u'12345', RC=0x17[Operation timed out], Operational Error, Results=1, C Source=(src/multiresult.c,286)>
答案 0 :(得分:3)
几乎所有云平台都存在同样的问题。节点名称或IP地址是客户端用于连接到群集节点的内容。对于通过互联网连接的应用程序,私有IP不起作用。解决方法是为节点使用公共名称或IP地址。如果您想要一些额外的效率,您仍然可以使用DNS技巧来确保本地通信仍然通过私有IP,但确保名称解析为节点之间的私有IP。没有特定于AWS的帖子,但Azure上的这个帖子可能有所帮助:http://blog.couchbase.com/step-step-production-deployment-couchbase-windows-azure-virtual-machines 希望这会有所帮助。
答案 1 :(得分:1)
遇到了同样的问题。与Cihan B一样,Couchbase解决私有IP似乎存在问题。
我试图按照本教程步骤1-7 https://blog.couchbase.com/cross-data-center-replication-step-step-guide-amazon-aws
进行操作另一种工作修复方法是停止服务器,删除配置文件并重新启动服务器。您现在可以在Web应用程序中配置IP地址。
答案 2 :(得分:0)
我遇到了同样的问题,原因是一旦你连接到它,它将返回自己的内部拓扑,所以如果你使用私有ip地址创建集群,它将返回私有ip,这意味着你可以没有在AWS之外连接它
解决它的方法是: 1)从群集中删除节点
2)重新平衡
3)使用其公共DNS名称将其添加回来(公共IP地址无法正常工作,如您所见:https://issues.couchbase.com/browse/MB-8985)
4)再次重新平衡
对所有节点重复上述操作,希望您的群集中没有太多节点...