Erlang 为什么Riak只在一个节点上存储我的所有文档?n_val等于3
我已经在EC2服务器上使用Riak 2.0pre11构建了一个5节点集群。安装Riak,使其正常工作,然后使用bash脚本在另外4台服务器上重复相同的操作。在这一点上,我使用了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的连接存
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,提交确实是个问题。事后看来,集群变化显然需要分阶段、计划和实施。如果你把你的评论改成一个答案,我会接受它作为正确的答案。