Riak - 尝试使用 Python 客户端库连接到 Riak 集群时连接被拒绝

Riak - Connection Refused while trying to connect to Riak cluster using Python client library

我是 Riak 新手。我按照以下说明在本地计算机上从源代码安装了 Riak 2.1.1:https://docs.basho.com/riak/latest/ops/building/installing/mac-osx/

然后我启动了三个节点并 ping 所有三个节点并收到 'pong' 作为响应。

我加入然后加入三个节点创建集群。检查集群成员状态:

dev1/bin/riak-admin member-status
================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid      34.4%      --      'dev1@127.0.0.1'
valid      32.8%      --      'dev2@127.0.0.1'
valid      32.8%      --      'dev3@127.0.0.1'
-------------------------------------------------------------------------------
Valid:3 / Leaving:0 / Exiting:0 / Joining:0 / Down:0

我查看了rel/riak/etc/目录下的riak.config文件,发现设置了以下内容:

## listener.http.<name> is an IP address and TCP port that the Riak
## HTTP interface will bind.
## 
## Default: 127.0.0.1:8098
## 
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
listener.http.internal = 127.0.0.1:8098

## listener.protobuf.<name> is an IP address and TCP port that the Riak
## Protocol Buffers interface will bind.
## 
## Default: 127.0.0.1:8087
## 
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
listener.protobuf.internal = 127.0.0.1:8087

然后我使用 pip 安装了 Riak python 客户端。我在 http://riak-python-client.readthedocs.org/en/2.1.0/client.html.

关注 Riak python 客户端文档

以下是我的Python脚本:

import riak

client = riak.RiakClient(pb_port=8087,protocol='pbc')

print 'finished'

user_bucket = client.bucket('user')

val1 = 1
key1 = user_bucket.new('one', data=val1)
key1.store()

print 'finished2'

但是,运行 python 脚本给出了以下错误:

/Library/Python/2.7/site-packages/riak/security.py:35: UserWarning: Found OpenSSL 0.9.8zd 8 Jan 2015 version, but expected at least OpenSSL 1.0.1g.  Security may not support TLS 1.2.
  warnings.warn(msg, UserWarning)
finished
Traceback (most recent call last):
  File "/Users/me/Documents/project/RiakDataLoader/src/DataLoader.py", line 11, in <module>
    **key1.store()**
  File "/Library/Python/2.7/site-packages/riak/riak_object.py", line 286, in store
    timeout=timeout)
  File "/Library/Python/2.7/site-packages/riak/client/transport.py", line 196, in wrapper
    return self._with_retries(pool, thunk)
  File "/Library/Python/2.7/site-packages/riak/client/transport.py", line 151, in _with_retries
    raise e.args[0]
socket.error: [Errno 61] Connection refused

在我 运行 python 脚本之前,我所有的节点都是 运行。

然后我使用 http 端口在终端上尝试了以下命令:

$ curl -XPUT http://127.0.0.1:8098/buckets/welcome/keys/german  -H 'Content-Type: text/plain'  -d 'herzlich willkommen'
curl: (7) Failed to connect to 127.0.0.1 port 8098: Connection refused

此连接被拒绝错误的原因可能是什么?几个小时以来一直在追逐这个问题。任何帮助将不胜感激!

由于您使用多个开发节点,因此配置文件将位于 dev 目录下,例如 dev/dev1/etc/riak.conf。您需要检查那里以查看每个节点的协议缓冲区侦听器正在使用哪些端口。rel 目录下的配置仅适用于 运行 机器上的单个节点。

您好,我遇到了类似的问题,但找不到直接的解决方案。

当你在不离开集群的情况下执行 riak stop 时,ring 目录中存在一些需要删除的文件,因为 riak start/sudo service riak start 命令会触发从 ring 信息中读取。

riak ring 目录的默认位置是/var/lib/riak/ring/ 删除此处的文件并执行 riak start.

请注意,如果有问题的节点是集群的主节点,您将必须 -

  1. 对主节点执行上述所有操作(停止清洁环)和 -
  2. 使用 riak-admin cluster leave
  3. 从集群中删除节点
  4. 使用 riak stop
  5. 停止 riak 节点
  6. 如上删除ring目录
  7. 做一个riak start
  8. 按照规则使用riak-admin
  9. 再次设置集群

这些在非生产情况下是可行的。