Riak CS (Armazenamento em Nuvem) – um software fácil de usar para organizar armazenamento de objetos, funcionando sobre o Riak KV. Riak (KV) é um banco de dados NoSQL distribuído do tipo "chave-valor". O Riak CS é projetado para garantir simplicidade, disponibilidade e distribuição de armazenamento em nuvem em qualquer escala, e pode ser usado para construir arquiteturas em nuvem – tanto públicas quanto privadas – ou como um armazenamento de infraestrutura para aplicações e serviços de alta carga. A API do Riak CS é compatível com Amazon S3 e suporta a capacidade de relatórios sobre várias situações.

Este artigo é uma tradução livre do guia oficial para o sistema Riak CS versão 2.1.1
No sistema de armazenamento Riak CS, três componentes funcionam em conjunto, o que significa a necessidade de configurar cada componente para trabalhar com os outros:
- Riak (KV) – um sistema de banco de dados que atua como um sistema final.
- Riak CS – uma camada de armazenamento em nuvem sobre o Riak, que fornece armazenamento e capacidades de API, armazenando arquivos e metadados no Riak, e transmitindo-os depois para os usuários finais.
- Stanchion – gerencia solicitações envolvendo entidades globalmente únicas, como buckets e usuários em uma instância do Riak. Por exemplo, criação de usuários, criação ou exclusão de buckets.
Além disso, você também pode configurar um cliente S3 para usar na comunicação com o sistema Riak CS.
Você deve planejar a presença de um nó Riak para cada nó Riak CS em seu sistema. Os nós Riak e Riak CS podem ser executados em máquinas físicas diferentes, mas na maioria dos casos, é preferível executar um nó Riak e um nó Riak CS na mesma máquina física. Supondo que uma máquina física tenha potência suficiente para atender às necessidades de ambos os nós Riak e Riak CS, geralmente você verá melhor desempenho devido à redução das latências de rede.
Se o seu sistema consiste em vários nós, a configuração consiste principalmente em ajustar a comunicação entre os componentes. Outras configurações, como onde os arquivos de log serão armazenados, têm valores padrão e precisam ser alteradas apenas se você desejar usar valores personalizados.
Configuração dos componentes do sistema. Configuração do Riak KV para CS
Como o Riak CS é um aplicativo desenvolvido sobre o Riak, é muito importante prestar atenção à sua configuração do Riak ao iniciar o Riak CS. Este documento serve como um guia para a configuração do Riak, bem como um documento de referência sobre os parâmetros de configuração importantes.
Antes de configurar, certifique-se de que o Riak KV e o Riak CS estejam instalados em cada nó do seu cluster. O Stanchion, por outro lado, deve ser instalado apenas em um nó em todo o cluster.

Backends para Riak CS
Por padrão, o backend utilizado pelo Riak é o Bitcask, mas o pacote do Riak CS inclui um backend especial que deve ser usado pelo cluster do Riak, que é parte do sistema Riak CS. Na versão padrão, há um backend Multi que vem com o Riak.
Os mesmos buckets do Riak, que são usados dentro do Riak CS, utilizam índices secundários, que agora requerem o backend LevelDB. Outras partes do sistema Riak CS podem se beneficiar usando o backend Bticask. O uso do backend Multi robusto é incluído no Riak CS para aproveitar as vantagens de ambos os backends, visando a melhor combinação de desempenho e funcionalidade. A próxima seção descreve como configurar corretamente o Riak para usar esse Multi-backend.
Backend — é o que o Riak usará para armazenar dados. O Riak KV possui vários backends: Bitcask, LevelDB, Memory e Multi.
Além disso, o sistema de cálculo de armazenamento utiliza o Riak MapReduce para somar arquivos nos buckets. Isso significa que você deve informar todos os nós do Riak onde procurar os arquivos preparados do Riak CS antes de calcular o armazenamento.
Vários outros parâmetros devem ser alterados para configurar o nó Riak como parte do sistema Riak CS, como o endereço IP e o IP e porta para a troca de mensagens via Protocol Buffers. As outras configurações podem ser alteradas, se necessário. As próximas seções descrevem como configurar o nó Riak para operar como parte do sistema Riak CS.
Configuração do backend Riak
Primeiro, os arquivos de configuração riak.conf ou advanced.config/app.config precisam ser editados. Esses arquivos podem estar localizados nos diretórios /etc/riak ou /opt/riak/etc. Por padrão, o Riak utiliza o backend Bitcask. A primeira coisa que precisamos fazer é modificar o arquivo de configuração removendo a seguinte linha:
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Exclua esta linha:
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Exclua esta linha:
{storage_backend, riak_kv_bitcask_backend},
]}Em seguida, precisamos indicar a necessidade dos módulos RiakCS para o Riak e informar ao Riak para usar o backend configurado que suporta o Riak CS. Precisamos usar o arquivo advanced.config ou app.config e adicionar as seguintes opções:
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Outras configurações
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<>, 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"}
]}
]},
%% Outras configurações
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Outras configurações
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<>, 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"}
]}
]},
%% Outras configurações
]}É muito importante notar que muitos desses valores dependerão das variações dos diretórios específicos do seu sistema operacional, portanto, siga as instruções de acordo com eles. Por exemplo, o parâmetro add_paths assume que o Riak CS está instalado em /usr/lib/riak-cs, enquanto os parâmetros data_root assumem que o Riak está instalado em /var/lib. (Nota: No meu caso, foi add_paths — /usr/lib64/riak-cs/).
Esta configuração pressupõe que o Riak CS está instalado na mesma máquina que o Riak. Se não estiver, o pacote precisa ser copiado para um host separado.
Configuração de criação de siblings
Agora, precisamos configurar o parâmetro allow_mult como true. Podemos adicionar a linha ao arquivo de configuração riak.conf, ou à seção riak_core no advanced.config ou app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Outras configurações
{default_bucket_props, [{allow_mult, true}]},
%% Outras configurações
]}APP.CONFIG
{riak_core, [
%% Outras configurações
{default_bucket_props, [{allow_mult, true}]},
%% Outras configurações
]}Isso permitirá que o Riak crie siblings, que são necessários para o funcionamento do Riak CS. Se você estiver conectado ao Riak CS usando a biblioteca cliente, não se preocupe: você não precisará resolver conflitos, pois todas as operações do Riak CS são estritamente consensuais de acordo com sua definição.
Sibling é um meio de armazenar vários objetos em uma chave para que o objeto tenha diferentes valores em diferentes nós.
Nota: allow_mult
Qualquer nó Riak que também suporte Riak CS sempre terá o parâmetro allow_mult definido como true. O Riak CS irá reiniciar se o valor for false.
Configuração do nome do nó e endereço IP
Cada nó Riak tem um nome que pode ser especificado no riak.conf na opção nodename. Se você estiver usando o arquivo de configuração app.config, precisará criar um arquivo chamado vm.args no mesmo diretório onde está o app.config e especificar o nome do nó usando a flag -name. Recomendamos nomear os nós no formato @. Assim, se você tiver três nós em execução em um único host 100.0.0.1, você pode nomeá-los como riak1@100.0.0.1, riak2@100.0.0.1, e riak3@100.0.0.1 ou pode dar nomes mais específicos, como test_cluster1@100.0.0.1, user_data3@100.0.0.1 e assim por diante. O exemplo abaixo demonstra como alterar o nome do nó para riak1@127.0.0.1, que irá funcionar no host local.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Você deve definir nomes para todos os nós antes de inicializá-los e adicioná-los ao cluster.
Teste de configuração
Agora que todas as configurações necessárias do nó foram concluídas, podemos tentar iniciar o Riak:
SHELL
riak start Obs. A resposta no meu caso foi:

Aqui é preciso esperar um pouco. Depois disso, você pode iniciar o teste do nó em execução.
SHELL
riak pingSe a resposta for pong, significa que o Riak está em execução: se a resposta for Node not responding to pings, isso indica que algo deu errado.
Obs. A resposta no meu caso foi:

Se o nó foi iniciado incorretamente, verifique o log erlang.log.1 no diretório /log do nó, se for possível identificar o problema. Um dos erros mais comuns é invalid_storage_backend. Isso indica que o caminho para a biblioteca Riak CS em advanced.config ou app.config está incorreto (ou que o Riak CS não está instalado no servidor). Apesar desse erro, certifique-se de que você não alterou de riak_cs_kv_multi_backend para riak_kv_multi_backend.
Configuração do Riak para usar buffers de protocolo (protocol buffers)
As configurações dos buffers de protocolo do Riak estão no riak.conf ou na seção riak_api nos arquivos advanced.config ou app.config, que estão localizados no diretório /etc/riak/. Por padrão, o host tem endereço IP 127.0.0.1 e porta 8087. Você precisa alterá-los se estiver planejando executar o Riak e o Riak CS fora de um ambiente local. Substitua o endereço IP 127.0.0.1 do nó Riak e a porta 8087 pelo apropriado.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Outras configurações
{pb, ["10.0.2.10", 10001]},
%% Outras configurações
]}APP.CONFIG
riak_api, [
%% Outras configurações
{pb, ["10.0.2.10", 10001]},
%% Outras configurações
]}Nota:O valor do parâmetro listener.protobuf.internal no arquivo riak.conf (ou o valor do parâmetro pb nos arquivos advanced.conf / app.config) deve corresponder aos valores para riak_host nos arquivos riak-cs.config e stanchion.conf (ou riak_host, respectivamente, nos arquivos advanced.config/app.config).
Nota sobre o número da porta
Pode ser necessário um número de porta diferente se a porta conflitar com as portas utilizadas por outro aplicativo ou se você estiver usando um balanceador de carga ou um proxy.
Também recomenda-se que os usuários verifiquem se o tamanho do Riak protobuf.backlog (ou nos arquivos advanced.config/app.config, isso é pb_backlog) é igual ou maior que o tamanho pool.request.size especificado para Riak CS no riak-cs.config (ou request_pool_size nos arquivos advanced.config/app.config).
Se o valor de pool.request.size no Riak CS for alterado, o valor de protobuf.backlog também deve ser atualizado no Riak.
Outras configurações do Riak
Os arquivos riak.conf e advanced.config incluem outras configurações que ajustam a criação de arquivos de log e os caminhos para onde são salvos. Essas configurações têm valores padrão e devem funcionar na maioria dos casos. Para mais informações, recomendamos consultar nossa documentação sobre arquivos de configuração.
Configuração do endereço IP para o Riak
Ao configurar endereços IP o Riak, você deve garantir que os nós do Riak tenham um endereço IP exclusivo, seja trabalhando com um único nó ou adicionando nós adicionais ao sistema. O endereço IP do Riak está contido em riak.conf ou — se você estiver usando o arquivo app.config — no arquivo de configuração vm.args, que se encontra na mesma diretório em /etc/riak (ou em /opt/riak/etc em outros sistemas operacionais).
Inicialmente, a linha contendo o endereço IP do Riak aponta para o localhost neste local:
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Substitua 127.0.0.1 pelo endereço IP preferido ou nome do host do nó Riak.
Configurações de desempenho e largura de banda
Devido a razões de desempenho, recomendamos fortemente adicionar valores nos arquivos de configuração do Riak riak.conf ou vm.args, localizados em /etc/riak/ ou /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Desativar o MapReduce em JavaScript
Recomenda-se não usar o MapReduce em JavaScript obsoleto com qualquer versão do Riak CS. Por motivos de desempenho, você deve desativar a máquina virtual que executa operações de JavaScript MapReduce configurando no arquivo de configuração riak.conf, ou na seção riak_kv do advanced.conf ou app.config:
RIAK.CONF
javascript.map_pool_size = 0
javascript.reduce_pool_size = 0
javascript.hook_pool_size = 0 ADVANCED.CONFIG
{riak_kv, [
%% Outras configurações
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Outras configurações
]}APP.CONFIG
{riak_kv, [
%% Outras configurações
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Outras configurações
]}Em seguida, precisamos configurar os restantes componentes do sistema Riak CS.
Fonte: habr.com
