Riak Cloud Storage. Parte 1. Configurando o Riak KV

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.

Riak Cloud Storage. Parte 1. Configurando o Riak KV
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.

Riak Cloud Storage. Parte 1. Configurando o Riak KV

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 = bitcask

ADVANCED.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 = true

ADVANCED.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.1

Você 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:

Riak Cloud Storage. Parte 1. Configurando o Riak KV

Aqui é preciso esperar um pouco. Depois disso, você pode iniciar o teste do nó em execução.

SHELL

 riak ping

Se 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:

Riak Cloud Storage. Parte 1. Configurando o Riak KV

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:10001

ADVANCED.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.1

VM.ARGS

 -name riak@127.0.0.1

Substitua 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 = 65536

VM.ARGS

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

Desativar 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.

Original do guia.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster