Riak 云存储。 第 1 部分:设置 Riak KV

Riak CS(云存储) – 用于组织对象存储的易于使用的软件,在 Riak KV 之上运行。 Riak(KV)是一个分布式NoSQL键值数据库。 Riak CS 旨在提供任何规模的云存储的简单性、可用性和分布式,可用于构建公共和私有云架构,或作为高负载应用程序和服务的基础设施存储。 Riak CS API 与 Amazon S3 兼容,支持接收各种情况的报告。

Riak 云存储。 第 1 部分:设置 Riak KV
本文为Riak CS系统2.1.1版本官方手册免费翻译

在 Riak CS 存储系统中,三个组件相互配合工作,这意味着每个组件都必须配置为与其他组件一起工作:

  • 里亚克 (KV) – 充当终端系统的数据库系统。
  • 里亚克CS - Riak之上的云存储层,提供存储和API功能,将文件和元数据存储在Riak中,然后将它们分发给最终用户。
  • 支柱 - 管理涉及 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 已安装在集群中的每个节点上。 另一方面,Stachion 只能安装在整个集群中的一个节点上。

Riak 云存储。 第 1 部分:设置 Riak KV

Riak CS 的后端

Riak 使用的默认后端是 Bitcask,但 Riak CS 软件包包含一个特殊后端,作为 Riak CS 系统一部分的 Riak 集群必须使用该后端。 普通版本具有 Riak 附带的标准 Multi 后端。

Riak CS 中使用的相同 Riak 存储桶使用二级索引,现在需要 LevelDB 后端。 Riak CS 系统的其他部分可以从使用 Bticask 后端中受益。 Riak CS 中包含了示例 Multi 后端的使用,以利用这两个后端来实现性能和功能的最佳组合。 下一节将介绍如何正确配置 Riak 以使用此多后端。

后端 Riak 将使用它来保存数据。 Riak KV 的武器库中有多个后端:Bitcask、LevelDB、Memory 和 Multi。

此外,存储计算系统使用Riak MapReduse将文件聚合到桶中。 这意味着您必须在计算存储之前告诉所有 Riak 节点在哪里查找准备好的 Riak CS 文件。

必须更改其他几个参数才能将 Riak 节点配置为 Riak CS 系统的一部分,例如 IP 地址以及通过 Protocol Buffers 进行消息传递的 IP 地址和端口。 如有必要,可以更改其他设置。 以下部分描述如何配置 Riak 节点作为 Riak CS 系统的一部分运行。

设置 Riak 后端

首先,编辑riak.conf或advanced.config/app.config配置文件。 这些文件可以位于 /etc/riak 或 /opt/riak/etc 目录中。 默认情况下,Riak 使用 Bitcask 后端。 我们需要做的第一件事是通过删除以下行来更改配置文件:

里亚克会议

## 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文件并添加以下选项:

高级配置

{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部分。

里亚克会议

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 上运行了三个节点,您可以将它们称为 [电子邮件保护], [电子邮件保护][电子邮件保护] 或者您可以给出更具体的名称,例如 [电子邮件保护], [电子邮件保护] 等等。 下面的示例演示了将主机名更改为 [电子邮件保护],它将在本地主机上运行。

里亚克会议

 nodename = [email protected] 

虚拟机ARGS

 -name [email protected]

您必须在启动所有节点并加入集群之前命名它们。

设置测试

现在所有必要的节点设置都已完成,我们可以尝试启动 Riak:

SHELL

 riak start 

笔记我的案例的答案是:

Riak 云存储。 第 1 部分:设置 Riak KV

这里你需要稍等一下。 然后就可以开始测试运行的节点了。

SHELL

 riak ping

如果响应是 pong,则 Riak 正在运行;如果响应是 Node 未响应 ping,则表示出现问题。

笔记我的案例的答案是:

Riak 云存储。 第 1 部分:设置 Riak KV

如果节点没有正常启动,查看节点/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 协议缓冲区设置位于 riak.conf 或 advance.config 或 app.config 文件的 riak_api 部分中,这些文件位于 /etc/riak/ 目录中。 默认情况下,主机的 IP 地址为 127.0.0.1,端口为 8087。如果您计划在非本地环境中运行 Riak 和 Riak CS,则需要更改这些设置。 将 127.0.0.1 替换为 Riak 主机 IP 地址,将端口 8087 替换为合适的地址。

里亚克会议

 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中riak_host的值匹配并且Stanchion stanchion.conf(或高级 .config/app.config 中的 riak_host)文件。

关于端口号的注释
如果端口与其他应用程序使用的端口冲突或者您正在使用负载平衡器或代理服务器,则可能需要不同的端口号。

还建议用户确保 Riak protobuf.backlog 大小(或在 advance.config/app.config 文件中为 pb_backlog)等于或大于 riak-cs 中为 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 地址的行指向此位置的本地主机:

里亚克会议

 nodename = [email protected]

虚拟机ARGS

 -name [email protected]

将 127.0.0.1 替换为您首选的 Riak 节点 IP 地址或主机名。

性能和带宽设置

出于性能原因,我们强烈建议向位于 /etc/riak/ 或 /opt/riak/etc 目录中的 Riak 配置文件 riak.conf 或 vm.args 添加值。

里亚克会议

 erlang.max_ports = 65536

虚拟机ARGS

## This setting should already be present for recent Riak installs.
 -env ERL_MAX_PORTS 65536

禁用 JavaScript MapReduce

建议不要将旧版 JavaScript MapReduce 与任何版本的 Riak CS 一起使用。 出于性能原因,您应该通过在 riak.conf 配置文件中或者在 advance.conf 或 app.config 的 riak_kv 部分中进行设置来禁用执行 JavaScript MapReduce 操作的虚拟机:

里亚克会议

 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 系统的其余组件。

原厂说明书。

来源: habr.com

添加评论