
本文是Riak CS系统版本2.1.1的官方手册的免费翻译,
在Riak CS存储系统中,三个组件相互配合工作,这意味着必须将每个组件配置为与其他组件一起工作:
- Riak(KV)是充当终端系统的数据库系统。
- Riak CS是Riak之上的云存储层,提供存储和API功能,将文件和元数据存储在Riak中,然后将其传输给最终用户。
- Stanchion-管理涉及全局唯一实体(例如Riak实例中的存储桶和用户)的查询。例如,创建用户,创建或删除存储桶。
此外,您还可以配置S3客户端,以用于与Riak CS系统进行消息传递。
您应该计划在系统上为每个Riak CS节点都拥有一个Riak节点。 Riak和Riak CS节点可以在不同的物理计算机上运行,但是在大多数情况下,最好在同一台物理计算机上运行一个Riak节点和一个Riak CS节点。假设一台物理计算机具有足够的能力来满足Riak和Riak CS节点的需求,由于减少了网络延迟,通常将看到更好的性能。
如果系统由多个节点组成,则配置主要是关于在组件之间建立通信。其他设置(例如日志文件的存储位置)具有默认值,仅在要使用非标准值时才需要更改。
配置系统组件。为CS设置Riak KV
由于Riak CS是基于Riak构建的应用程序,因此在启动Riak CS时请注意Riak配置非常重要。本文档既是Riak配置指南,也是用于描述重要配置参数的参考文档。
在配置之前,请确保Riak KV和Riak CS已安装在群集中的每个节点上。另一方面,Stanchion应该仅安装在整个集群的一个节点上。

Riak CS的后端
默认情况下,Riak使用的后端是Bitcask,但是Riak CS软件包包括一个特殊的后端,该后端必须由Riak CS系统中的Riak群集使用。普通版具有Riak随附的标准Multi后端。
Riak CS内部使用的相同Riak存储桶使用的二级索引现在需要LevelDB后端。 Riak CS系统的其他部分可以从Bticask后端中受益。 Riak CS中包括示例性多后端的使用,以利用这两个后端来实现性能和功能的最佳组合。下一节将介绍如何正确配置Riak以使用此多后端。
Riak将使用后端来保存数据。Riak KV的军火库有多个后端:Bitcask,LevelDB,Memory和Multi。
此外,存储计算系统使用Riak MapReduse将文件汇总到存储桶中。这意味着您必须在计算存储之前告诉所有Riak节点要在哪里查找配置的Riak CS文件。
为了将Riak主机配置为Riak CS系统的一部分,必须更改其他几个参数,例如用于通过协议缓冲区进行消息传递的IP地址和IP地址以及端口。必要时可以更改其余设置。以下各节描述如何配置Riak节点以作为Riak CS系统的一部分进行操作。
设置Riak后端
首先,编辑riak.conf或advanced.config / app.config配置文件。这些文件可以位于/ etc / riak或/ opt / riak / etc目录中。默认情况下,Riak使用Bitcask后端。我们需要做的第一件事是通过删除以下行来更改配置文件:
RIAK.CONF
## Delete this line:
storage_backend = bitcask
高级配置
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
应用程序配置
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
接下来,我们需要说明Riak需要RiakCS模块,并告诉Riak使用定制的Riak CS后端。为此,我们需要使用advanced.config或app.config文件,并添加以下选项:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Other configs
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
{multi_backend_default, be_default},
{multi_backend, [
{be_default, riak_kv_eleveldb_backend, [
{data_root, "/var/lib/riak/leveldb"}
]},
{be_blocks, riak_kv_bitcask_backend, [
{data_root, "/var/lib/riak/bitcask"}
]}
]},
%% Other configs
]}
应用程序配置
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Other configs
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
{multi_backend_default, be_default},
{multi_backend, [
{be_default, riak_kv_eleveldb_backend, [
{data_root, "/var/lib/riak/leveldb"}
]},
{be_blocks, riak_kv_bitcask_backend, [
{data_root, "/var/lib/riak/bitcask"}
]}
]},
%% Other configs
]}
重要的是要注意,其中许多值将取决于您的操作系统特定的目录版本,因此请按照说明进行操作。例如,add_paths参数假定Riak CS安装在/ usr / lib / riak-cs中,而data_root选项假定Riak安装在/ var / lib中。(注意。在我的情况下,它是add_paths-/ usr / lib64 / riak-cs /)。
此配置假定Riak CS与Riak安装在同一台计算机上。如果不是,则需要将包复制到单独的主机。
建立兄弟姐妹的创建
现在,我们需要将allow_mult参数设置为true。我们可以在riak.conf配置文件中添加一行,或在advanced.config或app.config中的riak_core部分添加。
RIAK.CONF
buckets.default.allow_mult = true
高级配置
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
应用程序配置
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
这将使Riak能够创建Riak CS需要起作用的兄弟姐妹。如果要使用客户端库连接到Riak CS,则不必担心:您不必解决冲突,因为所有Riak CS操作均根据其定义严格一致。
同级是一种将多个对象存储在一个键中的方法,以便该对象在不同节点上具有不同的值。
注意:allow_mult
任何也支持Riak CS的Riak节点都将始终将allow_mult参数设置为true。如果值为false,Riak CS将重置启动。
设置主机名和IP地址
每个Riak节点的名称都可以在riak.conf中使用nodename选项指定。如果使用的是app.config配置文件,则需要在与app.config相同的目录中创建一个名为vm.args的文件,并使用-name标志指定主机名。我们建议您以@格式命名节点。因此,如果在同一主机100.0.0.1上有三个正在运行的节点,则可以将它们命名为riak1 @ 100.0.0.1,riak2 @ 100.0.0.1和riak3@100.0.0.1,也可以更具体地命名它们,例如test_cluster1@100.0。 .0.1,user_data3 @ 100.0.0.1等。下面的示例演示将主机名更改为riak1@127.0.0.1,该名称将在本地主机上工作。
RI
nodename = riak1@127.0.0.1
虚拟机
-name riak1@127.0.0.1
您必须先命名所有节点,然后再将它们添加到集群中。
调音测试
现在,所有必需的节点设置都已完成,我们可以尝试启动Riak:
SHELL
riak start
大约 在我的情况下,答案是:
在这里您必须稍等片刻。然后,您可以开始测试正在运行的节点。
贝壳
riak ping
如果响应是pong,则表明Riak正在运行:如果响应是Node不响应ping,则出了点问题。
大约 在我的情况下,答案是:
如果节点无法正确启动,请在该节点的/ log目录中查看erlang.log.1日志。最常见的错误之一是invalid_storage_backend。这表明Advanced.config或app.config中Riak CS库的路径不正确(或服务器上未安装Riak CS)。尽管有此错误,请确保您没有从riak_cs_kv_multi_backend更改为riak_kv_multi_backend。
配置Riak以使用协议缓冲区
Riak协议缓冲区设置位于advanced.config或app.config文件的riak.conf或riak_api节中,这些文件位于/ etc / riak /目录中。默认情况下,主机的IP地址为127.0.0.1,端口为8087。如果计划在本地环境之外运行Riak和Riak CS,则需要更改这些主机。用适当的Riak主机IP和端口8087替换127.0.0.1。
RI
listener.protobuf.internal = 10.0.2.10:10001
高级配置
{riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
应用程序配置
riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
注意: riak.conf中的listener.protobuf.internal参数的值(或advanced.conf / app.config中的pb参数的值)文件必须与Riak CS riak-cs.config和Stanchion stanchion.conf(或riak_host)中riak_host的值匹配在advanced.config / app.config中)。
有关端口号的注意事项
如果该端口与另一个应用程序使用的端口冲突,或者您正在使用负载平衡器或代理服务器,则可能需要使用其他端口号。
还建议用户确保Riak protobuf.backlog(或advanced.config / app.config文件中的pb_backlog)的大小等于或大于riak-cs.config中为Riak CS指定的pool.request.size。在advanced.config / app.conf文件中的request_pool_size)。
如果Riak CS中的pool.request.size的值已更改,那么Riak中的protobuf.backlog的值也必须更新。
其他Riak设置
riak.conf和advanced.config文件包括其他设置,这些设置配置日志文件的生成方式和保存位置。这些设置具有默认值,并且在大多数情况下应该可以使用。有关更多信息,建议您阅读有关配置文件的文档。
设置Riak的IP地址
为Riak配置IP地址时,无论您是仅使用一个节点还是要向系统添加更多节点,都必须确保Riak节点具有唯一的IP地址。Riak的IP地址包含在riak.conf中,或者-如果您使用的是app.config文件-则位于vm.args配置文件中,该文件位于/ etc / riak目录(或其他操作系统上的/ opt / riak / etc / )。
最初,包含Riak的IP地址的行在此点指向本地主机:
RIAK.CONF
nodename = riak@127.0.0.1
虚拟机
-name riak@127.0.0.1
将127.0.0.1替换为Riak主机的首选IP地址或主机名。
性能和带宽设置
出于性能原因,我们强烈建议向/ etc / riak /或/ opt / riak / etc目录中的riak配置文件riak.conf或vm.args添加值。
RI
erlang.max_ports = 65536
虚拟机
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536
禁用JavaScript MapReduce
建议不要将已弃用的JavaScript MapReduce与任何版本的Riak CS结合使用。出于性能原因,您必须通过在riak.conf配置文件或advanced.conf或app.config的riak_kv部分中进行设置来禁用执行JavaScript MapReduce操作的虚拟机:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0
高级配置
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}
应用程序配置
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}
接下来,我们需要配置Riak CS系统的其余组件。
链接
Riak云存储。第1部分。配置Riak KV
Riak云存储。第2部分。配置Riak CS
Riak云存储组件。第3部分。固定,代理和负载平衡,S3客户端
原始手册。