Armazenamento em nuvem Riak. Parte 1: Configurando Riak KV

Riak CS (armazenamento em nuvem) – software fácil de usar para organizar o armazenamento de objetos, executado em cima do Riak KV. Riak (KV) é um banco de dados de valores-chave NoSQL distribuído. O Riak CS foi projetado para fornecer simplicidade, disponibilidade e distribuição de armazenamento em nuvem em qualquer escala e pode ser usado para construir arquiteturas em nuvem - públicas e privadas - ou como armazenamento de infraestrutura para aplicativos e serviços altamente carregados. A API Riak CS é compatível com Amazon S3 e suporta a capacidade de receber relatórios sobre diversas situações.

Armazenamento em nuvem Riak. Parte 1: Configurando Riak KV
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 funcionam em conjunto, o que significa que cada componente deve ser configurado para funcionar com os outros componentes:

  • 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 recursos de armazenamento e API, armazena arquivos e metadados no Riak e os distribui aos usuários finais.
  • Escora - Gerencia consultas envolvendo entidades globalmente exclusivas, como buckets e usuários na instância Riak. Por exemplo, criar usuários, criar ou excluir 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 máquina física tenha energia suficiente para satisfazer as necessidades dos nós Riak e Riak CS, geralmente você verá um melhor desempenho devido à latência de rede reduzida.

Se o seu sistema consistir em vários nós, a configuração trata principalmente de estabelecer a comunicação entre os componentes. Outras configurações, como onde os arquivos de log serão armazenados, possuem valores padrão e só precisam ser alteradas caso você queira usar valores fora do padrão.

Configurando componentes do sistema. Configurando Riak KV para CS

Como o Riak CS é um aplicativo desenvolvido com base no Riak, é muito importante prestar atenção à configuração do Riak ao executar o Riak CS. Este documento é um guia de configuração do Riak e um documento de referência que descreve parâmetros de configuração importantes.

Antes da configuração, certifique-se de que o Riak KV e o Riak CS estejam instalados em cada nó do cluster. O Stanchion, por outro lado, só deve ser instalado em um nó em todo o cluster.

Armazenamento em nuvem Riak. Parte 1: Configurando Riak KV

Back-end para Riak CS

O backend padrão 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 o backend Multi padrão que vem com o Riak.

Os mesmos buckets Riak usados ​​dentro do Riak CS usam índices secundários, que agora requerem um backend LevelDB. Outras partes do sistema Riak CS podem se beneficiar do uso do backend Bticask. O uso de um backend Multi de amostra está incluído no Riak CS para aproveitar as vantagens de ambos os backends 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.

Processo interno é o que Riak usará para salvar dados. Riak KV possui vários backends em seu arsenal: Bitcask, LevelDB, Memory e Multi.

Além disso, o sistema de cálculo de armazenamento usa Riak MapReduse para agregar arquivos em buckets. Isso significa que você deve informar a todos os nós Riak onde procurar arquivos Riak CS preparados 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 porta para mensagens através de buffers de protocolo. Outras configurações podem ser alteradas, se necessário. As seções a seguir descrevem como configurar um nó Riak para operar como parte do sistema Riak CS.

Configurando o back-end do 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, Riak usa o backend 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

CONFIG.AVANÇADA

{riak_kv,
 [ %% Delete this line: 
{storage_backend, riak_kv_bitcask_backend},
 ]}

APP.CONFIG

{riak_kv, 
  [ %% Delete this line:
    {storage_backend, riak_kv_bitcask_backend},
]}

Em seguida, precisamos demonstrar a necessidade de módulos RiakCS para Riak e instruir Riak a usar o backend configurado que fornece Riak CS. Precisamos usar o arquivo advanced.config ou app.config para isso e adicionar as seguintes opções:

CONFIG.AVANÇADA

{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 do seu sistema operacional, portanto siga as instruções adequadamente. Por exemplo, a opção add_paths assume que o Riak CS está instalado em /usr/lib/riak-cs, enquanto as opções 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 esteja instalado na mesma máquina que o Riak. Caso contrário, o pacote precisará ser copiado para um host separado.

Configurando a criação de irmãos

Agora, precisamos definir o parâmetroallow_mult como 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

CONFIG.AVANÇADA

{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 irmãos necessários para o funcionamento do Riak CS. Se você se conectar 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 conforme definido.

Irmão é uma maneira de armazenar vários objetos em uma chave para que o objeto tenha valores diferentes em nós diferentes.

Nota: permitir_mult
Qualquer nó Riak que também suporte Riak CS terá Allow_mult definido como true o tempo todo. Riak CS irá redefinir o lançamento 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 na opção nodename em riak.conf. Se estiver usando o arquivo de configuração app.config, você precisará criar um arquivo chamado vm.args no mesmo diretório que app.config e especificar o nome do host usando o sinalizador -name. Recomendamos especificar nomes de nós no formato @. E então, se você tiver três nós rodando em um host 100.0.0.1, você pode chamá-los [email protegido], [email protegido]E [email protegido] ou você pode dar nomes mais específicos, como [email protegido], [email protegido] e assim por diante. O exemplo abaixo demonstra a alteração do nome do host para [email protegido], que será executado em localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Você deve nomear todos os nós antes de iniciá-los e ingressar no 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 

Observação A resposta no meu caso:

Armazenamento em nuvem Riak. Parte 1: Configurando Riak KV

Aqui você precisa esperar um pouco. Então você pode começar a testar o nó em execução.

SHELL

 riak ping

Se a resposta for pong, então Riak está em execução; se a resposta for Node não respondendo aos pings, então algo deu errado.

Observação A resposta no meu caso:

Armazenamento em nuvem Riak. Parte 1: Configurando Riak KV

Se o nó não tiver sido iniciado corretamente, consulte 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 em 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 em 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 um endereço IP 127.0.0.1 e porta 8087. Você precisará alterá-los se planeja executar o Riak e o Riak CS em um ambiente não local. Substitua 127.0.0.1 pelo endereço IP do host Riak e a porta 8087 por um endereço adequado.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

AVANÇADO.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 no arquivo riak.conf (ou o valor do parâmetro pb em 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 .config/app.config avançados).

Uma observação sobre o número da porta
Um número de porta diferente poderá ser necessário se a porta entrar em conflito com 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 em arquivos advanced.config/app.config seja pb_backlog) seja igual ou maior que o pool.request.size especificado para Riak CS em riak-cs. config (ou request_pool_size nos arquivos advanced.config/app.conf).

Se o valor de pool.request.size em Riak CS tiver sido alterado, o valor de protobuf.backlog também deverá ser atualizado em Riak.

Outras configurações do Riak

Os arquivos riak.conf e advanced.config incluem outras configurações que configuram a criação de arquivos de log e onde eles são salvos. Essas configurações possuem valores padrão e devem funcionar na maioria dos casos. Para 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 ter certeza de que os nós Riak possuem um endereço IP exclusivo, esteja você trabalhando com apenas um nó ou adicionando mais nós 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 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 do Riak aponta para o host local neste local:

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Substitua 127.0.0.1 pelo seu endereço IP ou nome de host preferido do nó Riak.

Configurações de desempenho e largura de banda

Por motivos de desempenho, recomendamos fortemente adicionar valores aos arquivos de configuração do 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

Desativando JavaScript MapReduce

Recomenda-se não usar JavaScript MapReduce legado com qualquer versão do Riak CS. Por motivos de desempenho, você deve desabilitar 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 

CONFIG.AVANÇADA

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

Manual original.

Fonte: habr.com

Adicionar um comentário