Erlang 为什么Riak只在一个节点上存储我的所有文档?n_val等于3

Erlang 为什么Riak只在一个节点上存储我的所有文档?n_val等于3,erlang,riak,Erlang,Riak,我已经在EC2服务器上使用Riak 2.0pre11构建了一个5节点集群。安装Riak,使其正常工作,然后使用bash脚本在另外4台服务器上重复相同的操作。在这一点上,我使用了riak管理集群连接riak@node1.example.com在节点2到5上形成群集 我使用Python Riak客户端编写了一个脚本,将10000个文档发送到Riak。工作正常,我可以编写另一个脚本来检索工作正常的文档。除了指定protobufs的使用之外,我在存储密钥时没有指定任何其他选项。我通过与node1的连接存

我已经在EC2服务器上使用Riak 2.0pre11构建了一个5节点集群。安装Riak,使其正常工作,然后使用bash脚本在另外4台服务器上重复相同的操作。在这一点上,我使用了
riak管理集群连接riak@node1.example.com
在节点2到5上形成群集

我使用Python Riak客户端编写了一个脚本,将10000个文档发送到Riak。工作正常,我可以编写另一个脚本来检索工作正常的文档。除了指定protobufs的使用之外,我在存储密钥时没有指定任何其他选项。我通过与node1的连接存储了所有文档

然而,Riak似乎将所有3个副本存储在同一个节点上,换句话说,node1上使用的存储大约是原始HTML文档的3倍

连接到节点1的脚本,即存储所有文档的位置。我将脚本更改为连接到节点2,并发送了10000多条消息,这些消息也都在节点1中结束。我使用命令
du-h/data/riak/bitcask
来验证对象的总存储大小。在节点2到4上,只有少量K,这是空Bitcask数据存储的开销

对于每个文档,我都指定了与此类似的键

http://www.example.com/blogstore/007529.html4787somehash4787947:2014-03-12T19:14:32.887951Z
所有键的第一部分都相同(测试),只有.html名称和ISO 8601时间戳不同。我是否可能以某种方式破坏了完美的散列函数

基本上我使用了默认配置。有什么不对劲吗?由于Riak 2.0使用不同的配置格式,以下是旧格式的Riak core生成配置的一个片段:

{riak_core,
 [{enable_consensus,false},
  {platform_log_dir,"/var/log/riak"},
  {platform_lib_dir,"/usr/lib/riak/lib"},
  {platform_etc_dir,"/etc/riak"},
  {platform_data_dir,"/var/lib/riak"},
  {platform_bin_dir,"/usr/sbin"},
  {dtrace_support,false},
  {handoff_port,8099},
  {ring_state_dir,"/datapool/riak/ring"},
  {handoff_concurrency,2},
  {ring_creation_size,64},
  {default_bucket_props,
      [{n_val,3},
       {last_write_wins,false},
       {allow_mult,true},
       {basic_quorum,false},
       {notfound_ok,true},
       {rw,quorum},
       {dw,quorum},
       {pw,0},
       {w,quorum},
       {r,quorum},
       {pr,0}]}]}

如果bitcask目录仅在单个节点上增长,则听起来这些节点可能没有通信。请运行
riak admin member status
以验证群集中的所有节点都处于活动状态


在加入集群的所有节点上发出
riak admin cluster join
命令后,还需要运行
riak admin cluster plan
以验证计划是否正确,然后再使用
riak admin cluster commit
提交计划。这些命令。

如果Bitcask目录仅在其中一个节点上增长,则听起来节点可能未正确连接。在节点上,
riak管理成员状态
的输出是什么?除了执行
riak管理集群加入
,您是否也运行了
riak admin cluster plan
以查看该计划并
riak admin cluster commit
使其生效?我刚刚使用了
riak admin status
并看到有4个其他节点列为已连接。但是我没有提交,这听起来确实是关键。我必须通过远程ssh或类似Ansible的东西使管理操作自动化。我会再次打开集群并检查它。@Christian,提交确实是个问题。事后看来,集群变化显然需要分阶段、计划和实施。如果你把你的评论改成一个答案,我会接受它作为正确的答案。