Almacenamento na nube Riak. Parte 1: Configuración de Riak KV

Riak CS (almacenamento na nube) – software fácil de usar para organizar o almacenamento de obxectos, que se executa sobre Riak KV. Riak (KV) é unha base de datos de clave-valor NoSQL distribuída. Riak CS está deseñado para proporcionar sinxeleza, dispoñibilidade e distribución de almacenamento na nube de calquera escala, e pódese usar para construír arquitecturas de nube -tanto públicas como privadas- ou como almacenamento de infraestrutura para aplicacións e servizos moi cargados. A API de Riak CS é compatible con Amazon S3 e admite a capacidade de recibir informes sobre varias situacións.

Almacenamento na nube Riak. Parte 1: Configuración de Riak KV
Este artigo é unha tradución gratuíta do manual oficial da versión 2.1.1 do sistema Riak CS

No sistema de almacenamento Riak CS, tres compoñentes funcionan en conxunto, o que significa que cada compoñente debe estar configurado para funcionar cos outros compoñentes:

  • Riak (KV) – un sistema de base de datos que actúa como sistema final.
  • Riak CS - Unha capa de almacenamento na nube encima de Riak que ofrece capacidades de almacenamento e API, almacena ficheiros e metadatos en Riak e, a continuación, distribúeos aos usuarios finais.
  • Candelabro - Xestiona consultas que inclúen entidades únicas a nivel mundial, como baldes e usuarios na instancia de Riak. Por exemplo, creando usuarios, creando ou eliminando depósitos.

Ademais, tamén pode configurar o cliente S3 para o seu uso na mensaxería co sistema Riak CS.

Debería ter un nodo Riak para cada nodo Riak CS no seu sistema. Os nodos Riak e Riak CS pódense executar en máquinas físicas diferentes, pero na maioría dos casos é preferible executar un nodo Riak e un nodo Riak CS na mesma máquina física. Asumindo que unha máquina física ten potencia suficiente para satisfacer as necesidades dos nodos Riak e Riak CS, xeralmente verá un mellor rendemento debido á reducida latencia da rede.

Se o seu sistema consta de varios nodos, a configuración consiste principalmente en configurar a comunicación entre os compoñentes. Outras opcións de configuración, como onde se almacenarán os ficheiros de rexistro, teñen valores predeterminados e só deben cambiarse se quere usar valores non estándar.

Configuración dos compoñentes do sistema. Configurando Riak KV para CS

Dado que Riak CS é unha aplicación construída sobre Riak, é moi importante prestar atención á súa configuración de Riak ao executar Riak CS. Este documento é unha guía de configuración de Riak e un documento de referencia que describe parámetros de configuración importantes.

Antes da configuración, asegúrese de que Riak KV e Riak CS estean instalados en todos os nodos do seu clúster. Stanchion, por outra banda, só debería instalarse nun nodo de todo o clúster.

Almacenamento na nube Riak. Parte 1: Configuración de Riak KV

Backends para Riak CS

O backend predeterminado usado por Riak é Bitcask, pero o paquete Riak CS inclúe un backend especial que debe ser usado polo clúster Riak que forma parte do sistema Riak CS. A versión normal ten o backend estándar Multi que vén con Riak.

Os mesmos cubos de Riak usados ​​dentro de Riak CS usan índices secundarios, que agora requiren un backend de LevelDB. Outras partes do sistema Riak CS poden beneficiarse do uso do backend de Bticask. O uso dun backend multi de mostra inclúese en Riak CS para aproveitar estes dous backends para conseguir a mellor combinación de rendemento e funcionalidade. A seguinte sección describe como configurar correctamente Riak para usar este Multi-backend.

Backend é o que usará Riak para gardar datos. Riak KV ten varios backends no seu arsenal: Bitcask, LevelDB, Memory e Multi.

Ademais, o sistema de cálculo de almacenamento usa Riak MapReduse para agregar ficheiros en depósitos. Isto significa que debes dicir a todos os nodos Riak onde buscar os ficheiros Riak CS preparados antes de calcular o almacenamento.

Hai que cambiar outros parámetros para configurar o nodo Riak como parte do sistema Riak CS, como o enderezo IP e o enderezo IP e o porto para a mensaxería a través dos búfers de protocolo. Outras opcións pódense cambiar se é necesario. As seguintes seccións describen como configurar un nodo Riak para que funcione como parte do sistema Riak CS.

Configurando o backend de Riak

En primeiro lugar, edítanse os ficheiros de configuración riak.conf ou advanced.config/app.config. Estes ficheiros pódense localizar nos directorios /etc/riak ou /opt/riak/etc. Por defecto, Riak usa o backend de Bitcask. O primeiro que debemos facer é cambiar o ficheiro de configuración eliminando a seguinte liña:

RAK.CONF

## Delete this line:
storage_backend = bitcask

AVANZADO.CONFIG

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

CONFIG. APLICACIÓN

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

A continuación, necesitamos demostrar a necesidade de módulos RiakCS para Riak e indicarlle a Riak que use o backend configurado que proporciona Riak CS. Para iso necesitamos usar o ficheiro advanced.config ou app.config e engadir as seguintes opcións:

AVANZADO.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
]}

CONFIG. APLICACIÓN

{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
]}

É moi importante ter en conta que moitos destes valores dependerán das variacións do directorio específicas do seu sistema operativo, polo que siga as instrucións en consecuencia. Por exemplo, a opción add_paths asume que Riak CS está instalado en /usr/lib/riak-cs, mentres que as opcións data_root supoñen que Riak está instalado en /var/lib. (Nota: no meu caso era add_paths - /usr/lib64/riak-cs/).

Esta configuración supón que Riak CS está instalado na mesma máquina que Riak. Se non, entón o paquete debe ser copiado nun host separado.

Configurando a creación de irmáns

Agora, necesitamos establecer o parámetro allow_mult como verdadeiro. Podemos engadir unha liña no ficheiro de configuración riak.conf, ou unha sección riak_core en advanced.config ou app.config.

RAK.CONF

buckets.default.allow_mult = true

AVANZADO.CONFIG

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

CONFIG. APLICACIÓN

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

Isto permitirá a Riak crear irmáns necesarios para que Riak CS funcione. Se te conectas a Riak CS usando a biblioteca cliente, non te preocupes: non terás que resolver conflitos, xa que todas as operacións de Riak CS son estritamente coherentes segundo se definen.

Irmán é unha forma de almacenar varios obxectos nunha soa clave para que o obxecto teña diferentes valores en distintos nodos.

Nota: allow_mult
Calquera nodo Riak que tamén admita Riak CS terá allow_mult definido como verdadeiro en todo momento. Riak CS restablecerá o lanzamento se o valor é falso.

Establecer o nome de host e o enderezo IP

Cada nodo Riak ten un nome, que se pode especificar na opción nodename en riak.conf. Se estás a usar o ficheiro de configuración app.config, cómpre crear un ficheiro chamado vm.args no mesmo directorio que app.config e especificar o nome do servidor mediante a marca -name. Recomendamos especificar os nomes dos nodos no formato @. Así, se tes tres nodos en execución nun host 100.0.0.1, podes chamalos [protexido por correo electrónico], [protexido por correo electrónico]E [protexido por correo electrónico] ou pode dar nomes máis específicos, como [protexido por correo electrónico], [protexido por correo electrónico] etcétera. O seguinte exemplo mostra como se cambia o nome do host a [protexido por correo electrónico], que se executará en localhost.

RAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Debes nomear todos os nodos antes de inicialos e unirte ao clúster.

Proba de configuración

Agora que se completaron todas as configuracións de nodo necesarias, podemos tentar iniciar Riak:

CONCHA

 riak start 

Nota A resposta no meu caso:

Almacenamento na nube Riak. Parte 1: Configuración de Riak KV

Aquí hai que esperar un pouco. Entón podes comezar a probar o nodo en execución.

CONCHA

 riak ping

Se a resposta é pong, entón Riak está a executarse; se a resposta é Node que non responde aos pings, algo saíu mal.

Nota A resposta no meu caso:

Almacenamento na nube Riak. Parte 1: Configuración de Riak KV

Se o nodo non se iniciou correctamente, consulte o rexistro erlang.log.1 no directorio /log do nodo se se pode identificar o problema. Un dos erros máis comúns é invalid_storage_backend. O que indica que o camiño á biblioteca Riak CS en advanced.config ou app.config é incorrecto (ou Riak CS non está instalado no servidor). A pesar deste erro, asegúrate de non cambiar de riak_cs_kv_multi_backend a riak_kv_multi_backend.

Configurando Riak para usar búfers de protocolo

A configuración do búfer do protocolo Riak atópase en riak.conf ou na sección riak_api dos ficheiros advanced.config ou app.config, que se atopan no directorio /etc/riak/. De xeito predeterminado, o host ten un enderezo IP de 127.0.0.1 e un porto 8087. Terás que cambialos se pensas executar Riak e Riak CS nun ambiente non local. Substitúe 127.0.0.1 polo enderezo IP do host de Riak e o porto 8087 por outro axeitado.

RAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

AVANZADO.CONF

{riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}

CONFIG. APLICACIÓN

riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}

Nota:O valor do parámetro listener.protobuf.internal no ficheiro riak.conf (ou o valor do parámetro pb en advanced.conf/app.config) debe coincidir cos valores de riak_host en Riak CS riak-cs.config e Ficheiros Stanchion stanchion.conf (ou riak_host respectivamente en ficheiros .config/app.config avanzados).

Unha nota sobre o número de porto
É posible que se requira un número de porto diferente se o porto entra en conflito cos portos utilizados por outra aplicación ou se está a usar un equilibrador de carga ou un servidor proxy.

Tamén se recomenda que os usuarios se aseguren de que o tamaño do Riak protobuf.backlog (ou nos ficheiros advanced.config/app.config é pb_backlog) é igual ou superior ao pool.request.size especificado para Riak CS en riak-cs. config (ou request_pool_size nos ficheiros advanced.config/app.conf).

Se se cambiou o valor de pool.request.size en Riak CS, entón o valor de protobuf.backlog tamén se debe actualizar en Riak.

Outras opcións de Riak

Os ficheiros riak.conf e advanced.config inclúen outras opcións que configuran a creación de ficheiros de rexistro e onde se gardan. Estas configuracións teñen valores predeterminados e deberían funcionar na maioría dos casos. Para obter máis información, recomendamos ler a nosa documentación sobre ficheiros de configuración.

Configurando un enderezo IP para Riak

Ao configurar un enderezo IP para Riak, debes asegurarte de que os nodos de Riak teñen un enderezo IP único, tanto se estás a traballar cun só nodo como se estás engadindo máis nodos ao sistema. O enderezo IP de Riak está contido en riak.conf ou, se está a usar o ficheiro app.config, no ficheiro de configuración vm.args, que se atopa alí no directorio /etc/riak (ou /opt/riak/etc/ noutros sistemas operativos).

Inicialmente, a liña que contén o enderezo IP de Riak apunta ao host local nesta localización:

RAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Substitúe 127.0.0.1 polo seu enderezo IP preferido ou nome de host do nodo Riak.

Configuración de rendemento e ancho de banda

Por razóns de rendemento, recomendamos encarecidamente engadir valores aos ficheiros de configuración de Riak riak.conf ou vm.args, situados no directorio /etc/riak/ ou /opt/riak/etc.

RAK.CONF

 erlang.max_ports = 65536

VM.ARGS

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

Desactivando JavaScript MapReduce

Recoméndase non usar JavaScript MapReduce heredado con ningunha versión de Riak CS. Por razóns de rendemento, debes desactivar a máquina virtual que realiza operacións JavaScript MapReduce configurando no ficheiro de configuración riak.conf ou na sección riak_kv de advanced.conf ou app.config:

RAK.CONF

 javascript.map_pool_size = 0
 javascript.reduce_pool_size = 0
 javascript.hook_pool_size = 0 

AVANZADO.CONFIG

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

CONFIG. APLICACIÓN

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

A continuación, necesitamos configurar os compoñentes restantes do sistema Riak CS.

Manual orixinal.

Fonte: www.habr.com

Engadir un comentario