
Este artigo é uma tradução livre do manual oficial do sistema Riak CS versão 2.1.1.
No sistema de armazenamento Riak CS, três componentes trabalham juntos, o que significa que cada componente deve ser configurado para funcionar com outros componentes:
- Riak (KV) é um sistema de banco de dados que atua como um sistema final.
- O Riak CS é uma camada de armazenamento em nuvem sobre o Riak que fornece recursos de armazenamento e API, armazena arquivos e metadados no Riak e os transfere para os usuários finais.
- Stanchion - gerencia consultas envolvendo entidades globalmente exclusivas, como buckets e usuários em uma instância Riak. Por exemplo, criando usuários, criando ou excluindo buckets.
Além disso, você também pode configurar o cliente S3 para uso em mensagens com o sistema Riak CS.
Você deve planejar ter 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 única máquina física tenha energia suficiente para atender às necessidades dos nós Riak e Riak CS, geralmente você verá um melhor desempenho devido à latência de rede reduzida.
Se o seu sistema consiste em vários nós, a configuração é principalmente sobre como configurar a comunicação entre os componentes. Outras configurações, como onde os arquivos de log serão armazenados, têm valores padrão e só precisam ser alteradas se você quiser usar valores não padrão.
Configurando componentes do sistema. Configurando Riak KV para CS
Como o Riak CS é um aplicativo criado com base no Riak, é muito importante prestar atenção à configuração do Riak ao iniciar o Riak CS. Este documento é um guia de configuração do Riak e também um documento de referência para descrever parâmetros de configuração importantes.
Certifique-se de que o Riak KV e o Riak CS estejam instalados em todos os nós do cluster antes de configurar. O suporte, por outro lado, deve ser instalado apenas em um nó em todo o cluster.

Backends para Riak CS
Por padrão, o backend usado pelo Riak é o Bitcask, mas o pacote Riak CS inclui um backend especial que deve ser usado pelo cluster Riak que faz parte do sistema Riak CS. A versão regular possui um backend Multi padrão que acompanha o Riak.
Os mesmos buckets Riak usados internamente pelo Riak CS usam índices secundários que agora requerem o back-end LevelDB. Outras partes do sistema Riak CS podem se beneficiar do backend Bticask. O uso do back-end Multi exemplar está incluído no Riak CS para aproveitar as vantagens de ambos os back-ends e obter a melhor combinação de desempenho e funcionalidade. A próxima seção descreve como configurar corretamente o Riak para usar este Multi-backend.
O backend é o que Riak usará para salvar os dados. Existem vários back-ends no arsenal Riak KV: Bitcask, LevelDB, Memory e Multi.
Além disso, o sistema de computação de armazenamento usa Riak MapReduse para resumir arquivos em depósitos. Isso significa que você deve informar a todos os nós Riak onde procurar os arquivos Riak CS provisionados antes de computar 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 endereço IP e a porta para mensagens por meio de buffers de protocolo. O restante das configurações pode ser alterado, se necessário. As seções a seguir descrevem como configurar um nó Riak para operar como parte de um sistema Riak CS.
Configurando o back-end Riak
Primeiro, os arquivos de configuração riak.conf ou advanced.config / app.config são editados. Esses arquivos podem estar localizados nos diretórios / etc / riak ou / opt / riak / etc. Por padrão, o Riak usa o back-end do Bitcask. A primeira coisa que precisamos fazer é alterar o arquivo de configuração removendo a seguinte linha:
RIAK.CONF
## Delete this line:
storage_backend = bitcask
ADVANCED.CONFIG
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
APP.CONFIG
{riak_kv,
[ %% Delete this line:
{storage_backend, riak_kv_bitcask_backend},
]}
A seguir, precisamos mostrar a necessidade de módulos RiakCS para Riak e dizer a Riak para usar o backend Riak CS personalizado. Precisamos usar o arquivo advanced.config ou app.config para isso e adicionar as seguintes opções:
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
]}
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
]}
É muito importante observar que muitos desses valores dependerão de variações de diretório específicas para seu sistema operacional, portanto, siga as instruções de acordo. Por exemplo, o parâmetro add_paths pressupõe que o Riak CS está instalado em / usr / lib / riak-cs, enquanto os parâmetros data_root pressupõem que o Riak está instalado em / var / lib. (Nota. No meu caso, foi add_paths - / usr / lib64 / riak-cs /).
Esta configuração assume que o Riak CS está instalado na mesma máquina que o Riak. Caso contrário, o pacote precisa ser copiado para um host separado.
Configurando a criação de irmãos
Por enquanto, precisamos definir o parâmetro allow_mult para true. Podemos adicionar uma linha no arquivo de configuração riak.conf ou uma seção riak_core em advanced.config ou app.config.
RIAK.CONF
buckets.default.allow_mult = true
ADVANCED.CONFIG
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
APP.CONFIG
{riak_core, [
%% Other configs
{default_bucket_props, [{allow_mult, true}]},
%% Other configs
]}
Isso permitirá que Riak crie os irmãos que o Riak CS precisa para funcionar. Se você estiver se conectando ao Riak CS usando a biblioteca cliente, não se preocupe: você não terá que resolver conflitos, pois todas as operações do Riak CS são estritamente consistentes de acordo com sua definição.
Sibling é uma forma de armazenar vários objetos em uma chave para que o objeto tenha valores diferentes em nós diferentes.
Nota: allow_mult
Qualquer nó Riak que também oferece suporte a Riak CS terá o parâmetro allow_mult definido como true em todos os momentos. O Riak CS irá reiniciar a inicialização se o valor for falso.
Configurando o nome do host e o endereço IP
Cada nó Riak possui um nome que pode ser especificado em riak.conf com a opção nodename. Se você estiver usando o arquivo de configuração app.config, você precisa criar um arquivo chamado vm.args no mesmo diretório que app.config e especificar o nome do host usando o sinalizador -name. Recomendamos que você nomeie os nós no formato @. Portanto, se você tiver três nós em execução no mesmo host 100.0.0.1, pode nomeá-los riak1@100.0.0.1, riak2@100.0.0.1 e riak3@100.0.0.1, ou pode nomeá-los 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 host para riak1@127.0.0.1, que funcionará no host local.
RIAK.CONF
nodename = riak1@127.0.0.1
VM.ARGS
-name riak1@127.0.0.1
Você deve nomear todos os nós antes de iniciar e adicioná-los ao cluster.
Teste de afinação
Agora que todas as configurações de nó necessárias foram concluídas, podemos tentar iniciar o Riak:
SHELL
riak start
Aproximadamente. A resposta no meu caso:

aqui você tem que esperar um pouco. Então você pode começar a testar o nó em execução.
CONCHA
riak ping
Se a resposta for pong, o Riak está em execução: se a resposta for Node não respondendo aos pings, algo deu errado.
Aproximadamente. A resposta no meu caso:

se o nó não iniciar corretamente, verifique o log erlang.log.1 no diretório / log do nó se o problema puder ser identificado. Um dos erros mais comuns é invalid_storage_backend. O que indica que o caminho para a biblioteca Riak CS em advanced.config ou app.config está incorreto (ou Riak CS não está instalado no servidor). Apesar desse erro, certifique-se de não ter alterado de riak_cs_kv_multi_backend para riak_kv_multi_backend.
Configurando o Riak para usar buffers de protocolo
As configurações do buffer do protocolo Riak estão localizadas na seção riak.conf ou riak_api nos arquivos advanced.config ou app.config, que estão localizados no diretório / etc / riak /. Por padrão, o host tem um endereço IP de 127.0.0.1 e uma porta de 8087. Você precisa alterá-los se planeja executar o Riak e o Riak CS fora de seu ambiente local. Substitua 127.0.0.1 pelo endereço IP do host Riak e a porta 8087 por um adequado.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001
ADVANCED.CONF
{riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
APP.CONFIG
riak_api, [
%% Other configs
{pb, ["10.0.2.10", 10001]},
%% Other configs
]}
Nota: O valor do parâmetro listener.protobuf.internal em riak.conf (ou o valor do parâmetro pb no arquivo advanced.conf / app.config) deve corresponder aos valores de riak_host em Riak CS riak-cs.config e Stanchion stanchion.conf (ou riak_host respectivamente em arquivos advanced.config / app.config).
Nota sobre o número da porta Você
pode precisar de um número de porta diferente se a porta entrar em conflito com as portas usadas por outro aplicativo ou se você estiver usando um balanceador de carga ou servidor proxy.
Também é recomendado que os usuários garantam que o tamanho do Riak protobuf.backlog (ou pb_backlog nos arquivos advanced.config / app.config) seja igual ou maior que o pool.request.size especificado para o Riak CS em riak-cs.config (ou request_pool_size em arquivos advanced.config / app.conf).
Se o valor de pool.request.size no Riak CS foi alterado, o valor de protobuf.backlog no Riak também deve ser atualizado.
Outras configurações Riak
Os arquivos riak.conf e advanced.config incluem outras configurações que definem como os arquivos de log são gerados e onde são salvos. Essas configurações têm valores padrão e devem funcionar na maioria dos casos. Para obter mais informações, recomendamos a leitura de nossa documentação sobre arquivos de configuração.
Configurando um endereço IP para Riak
Ao configurar um endereço IP para Riak, você deve garantir que os nós Riak tenham um endereço IP exclusivo, esteja você trabalhando com apenas um nó ou adicionando mais nós ao sistema. O endereço IP de Riak está contido em riak.conf ou - se você estiver usando o arquivo app.config - no arquivo de configuração vm.args, que está localizado no diretório / etc / riak (ou / opt / riak / etc / em outros sistemas operacionais )
Inicialmente, a linha que contém o endereço IP de Riak aponta para o host local neste local:
RIAK.CONF
nodename = riak@127.0.0.1
VM.ARGS
-name riak@127.0.0.1
Substitua 127.0.0.1 pelo seu endereço IP preferido ou nome de host do host Riak.
Configurações de desempenho e largura de banda
Por motivos de desempenho, é altamente recomendável adicionar valores aos arquivos de configuração riak riak.conf ou vm.args localizados no diretório / etc / riak / ou / opt / riak / etc.
RIAK.CONF
erlang.max_ports = 65536
VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536
Desativar JavaScript MapReduce
Recomenda-se não usar JavaScript MapReduce obsoleto em conjunto com qualquer versão do Riak CS. Por motivos de desempenho, você deve desativar a máquina virtual que executa operações JavaScript MapReduce definindo no arquivo de configuração riak.conf ou na seção riak_kv de 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, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}
APP.CONFIG
{riak_kv, [
%% Other configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Other configs
]}
Em seguida, precisamos configurar os componentes restantes do sistema Riak CS.
Links
Riak Cloud Storage. Parte 1. Configurando o Riak KV
Riak Cloud Storage. Parte 2. Configurando o componente
Riak CS Riak Cloud Storage. Parte 3. Stanchion, Proxy e Balanceamento de Carga, Manual Original do Cliente S3
.