Almacenamiento en la nube Riak. Parte 1: Configuración de Riak KV

Riak CS (almacenamiento en la nube) – software fácil de usar para organizar el almacenamiento de objetos, que se ejecuta sobre Riak KV. Riak (KV) es una base de datos de valores clave NoSQL distribuida. Riak CS está diseñado para proporcionar simplicidad, disponibilidad y distribución de almacenamiento en la nube de cualquier escala, y puede usarse para construir arquitecturas de nube, tanto públicas como privadas, o como almacenamiento de infraestructura para aplicaciones y servicios altamente cargados. Riak CS API es compatible con Amazon S3 y admite la capacidad de recibir informes sobre diversas situaciones.

Almacenamiento en la nube Riak. Parte 1: Configuración de Riak KV
Este artículo es una traducción gratuita del manual oficial del sistema Riak CS versión 2.1.1.

En el sistema de almacenamiento Riak CS, tres componentes funcionan en conjunto, lo que significa que cada componente debe configurarse para funcionar con los demás componentes:

  • Riák (KV) – un sistema de base de datos que actúa como sistema final.
  • Riak CS - Una capa de almacenamiento en la nube sobre Riak que proporciona capacidades de almacenamiento y API, almacena archivos y metadatos en Riak y luego los distribuye a los usuarios finales.
  • Puntal - Gestiona consultas que involucran entidades globalmente únicas, como depósitos y usuarios en la instancia de Riak. Por ejemplo, crear usuarios, crear o eliminar depósitos.

Además, también puede configurar el cliente S3 para usarlo en mensajería con el sistema Riak CS.

Debe planificar tener un nodo Riak para cada nodo Riak CS en su sistema. Los nodos Riak y Riak CS se pueden ejecutar en diferentes máquinas físicas, pero en la mayoría de los casos es preferible ejecutar un nodo Riak y un nodo Riak CS en la misma máquina física. Suponiendo que una máquina física tenga suficiente potencia para satisfacer las necesidades de los nodos Riak y Riak CS, generalmente verá un mejor rendimiento debido a la reducción de la latencia de la red.

Si su sistema consta de varios nodos, la configuración consiste principalmente en establecer la comunicación entre los componentes. Otras configuraciones, como dónde se almacenarán los archivos de registro, tienen valores predeterminados y solo es necesario cambiarlos si desea utilizar valores no estándar.

Configuración de componentes del sistema. Configurando Riak KV para CS

Dado que Riak CS es una aplicación creada sobre Riak, es muy importante prestar atención a la configuración de Riak cuando ejecuta Riak CS. Este documento es tanto una guía de configuración de Riak como un documento de referencia que describe parámetros de configuración importantes.

Antes de la configuración, asegúrese de que Riak KV y Riak CS estén instalados en cada nodo de su clúster. Stanchion, por otro lado, solo debe instalarse en un nodo de todo el clúster.

Almacenamiento en la nube Riak. Parte 1: Configuración de Riak KV

Motores para Riak CS

El backend predeterminado utilizado por Riak es Bitcask, pero el paquete Riak CS incluye un backend especial que debe ser utilizado por el clúster de Riak que forma parte del sistema Riak CS. La versión normal tiene el backend Multi estándar que viene con Riak.

Los mismos depósitos de Riak utilizados dentro de Riak CS utilizan índices secundarios, que ahora requieren un backend LevelDB. Otras partes del sistema Riak CS pueden beneficiarse del uso del backend de Bticask. El uso de un backend múltiple de muestra está incluido en Riak CS para aprovechar ambos backends y lograr la mejor combinación de rendimiento y funcionalidad. La siguiente sección describe cómo configurar correctamente Riak para usar este Multi-backend.

backend es lo que utilizará Riak para guardar datos. Riak KV tiene varios backends en su arsenal: Bitcask, LevelDB, Memory y Multi.

Además, el sistema de cálculo de almacenamiento utiliza Riak MapReduse para agregar archivos en depósitos. Esto significa que debe indicar a todos los nodos Riak dónde buscar archivos Riak CS preparados antes de calcular el almacenamiento.

Se deben cambiar varios otros parámetros para configurar el nodo Riak como parte del sistema Riak CS, como la dirección IP y la dirección IP y el puerto para mensajería a través de buffers de protocolo. Se pueden cambiar otras configuraciones si es necesario. Las siguientes secciones describen cómo configurar un nodo Riak para que funcione como parte del sistema Riak CS.

Configurando el backend de Riak

Primero, se editan los archivos de configuración riak.conf o advanced.config/app.config. Estos archivos pueden ubicarse en los directorios /etc/riak o /opt/riak/etc. De forma predeterminada, Riak utiliza el backend de Bitcask. Lo primero que debemos hacer es cambiar el archivo de configuración eliminando la siguiente línea:

CONF.RIAK

## Delete this line:
storage_backend = bitcask

CONFIG.AVANZADA

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

APLICACIÓN.CONFIG

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

A continuación, debemos demostrar la necesidad de módulos RiakCS para Riak e indicarle a Riak que utilice el backend configurado que proporciona Riak CS. Necesitamos usar el archivo advanced.config o app.config para esto y agregar las siguientes opciones:

CONFIG.AVANZADA

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

APLICACIÓN.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
]}

Es muy importante tener en cuenta que muchos de estos valores dependerán de variaciones de directorio específicas de su sistema operativo, así que siga las instrucciones correspondientes. Por ejemplo, la opción add_paths supone que Riak CS está instalado en /usr/lib/riak-cs, mientras que las opciones data_root suponen que Riak está instalado en /var/lib. (Nota: en mi caso fue add_paths - /usr/lib64/riak-cs/).

Esta configuración supone que Riak CS está instalado en la misma máquina que Riak. De lo contrario, es necesario copiar el paquete a un host independiente.

Configurar la creación de hermanos

Ahora, necesitamos establecer el parámetro enable_mult en verdadero. Podemos agregar una línea en el archivo de configuración riak.conf o una sección riak_core en advanced.config o app.config.

CONF.RIAK

buckets.default.allow_mult = true

CONFIG.AVANZADA

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

APLICACIÓN.CONFIG

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

Esto permitirá a Riak crear hermanos que son necesarios para que Riak CS funcione. Si se conecta a Riak CS usando la biblioteca cliente, no se preocupe: no tendrá que resolver conflictos, ya que todas las operaciones de Riak CS son estrictamente consistentes según lo definido.

Hermano es una forma de almacenar varios objetos en una clave para que el objeto tenga diferentes valores en diferentes nodos.

Nota: permitir_mult
Cualquier nodo de Riak que también admita Riak CS tendrá enable_mult establecido en verdadero en todo momento. Riak CS restablecerá el inicio si el valor es falso.

Configuración del nombre de host y la dirección IP

Cada nodo Riak tiene un nombre, que se puede especificar en la opción nombre de nodo en riak.conf. Si está utilizando el archivo de configuración app.config, debe crear un archivo llamado vm.args en el mismo directorio que app.config y especificar el nombre del host usando el indicador -name. Recomendamos especificar los nombres de los nodos en formato @. Y si tienes tres nodos ejecutándose en un host 100.0.0.1, puedes llamarlos [email protected], [email protected]Y [email protected] o puedes darle nombres más específicos, como [email protected], [email protected] etcétera. El siguiente ejemplo demuestra cómo cambiar el nombre de host a [email protected], que se ejecutará en localhost.

CONF.RIAK

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Debe nombrar todos los nodos antes de iniciarlos y unirse al clúster.

Prueba de configuración

Ahora que se han completado todas las configuraciones de nodo necesarias, podemos intentar iniciar Riak:

SHELL

 riak start 

Nota La respuesta en mi caso:

Almacenamiento en la nube Riak. Parte 1: Configuración de Riak KV

Aquí hay que esperar un poco. Luego puede comenzar a probar el nodo en ejecución.

SHELL

 riak ping

Si la respuesta es ping, entonces Riak se está ejecutando; si la respuesta es que Node no responde a los pings, entonces algo salió mal.

Nota La respuesta en mi caso:

Almacenamiento en la nube Riak. Parte 1: Configuración de Riak KV

Si el nodo no se inició correctamente, mire el registro erlang.log.1 en el directorio /log del nodo si se puede identificar el problema. Uno de los errores más comunes es invalid_storage_backend. Lo que indica que la ruta a la biblioteca Riak CS en advanced.config o app.config es incorrecta (o Riak CS no está instalado en el servidor). A pesar de este error, asegúrese de no haber cambiado de riak_cs_kv_multi_backend a riak_kv_multi_backend.

Configurar Riak para usar buffers de protocolo

La configuración del búfer del protocolo Riak se encuentra en riak.conf o en la sección riak_api en los archivos advanced.config o app.config, que se encuentran en el directorio /etc/riak/. De forma predeterminada, el host tiene una dirección IP 127.0.0.1 y un puerto 8087. Deberá cambiarlos si planea ejecutar Riak y Riak CS en un entorno no local. Reemplace 127.0.0.1 con la dirección IP del host Riak y el puerto 8087 con uno adecuado.

CONF.RIAK

 listener.protobuf.internal = 10.0.2.10:10001

CONF.AVANZADA

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

APLICACIÓN.CONFIG

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

Nota:El valor del parámetro listening.protobuf.internal en el archivo riak.conf (o el valor del parámetro pb en advanced.conf/app.config) debe coincidir con los valores de riak_host en Riak CS riak-cs.config y Stanchion stanchion.conf (o riak_host respectivamente en archivos avanzados .config/app.config).

Una nota sobre el número de puerto
Es posible que se requiera un número de puerto diferente si el puerto entra en conflicto con los puertos utilizados por otra aplicación o si está utilizando un equilibrador de carga o un servidor proxy.

También se recomienda que los usuarios se aseguren de que el tamaño de Riak protobuf.backlog (o en los archivos advanced.config/app.config esto es pb_backlog) sea igual o mayor que el pool.request.size especificado para Riak CS en riak-cs. config (o request_pool_size en archivos advanced.config/app.conf).

Si se ha cambiado el valor de pool.request.size en Riak CS, entonces el valor de protobuf.backlog también debe actualizarse en Riak.

Otras configuraciones de Riak

Los archivos riak.conf y advanced.config incluyen otras configuraciones que configuran la creación de archivos de registro y dónde se guardan. Estas configuraciones tienen valores predeterminados y deberían funcionar en la mayoría de los casos. Para obtener más información, recomendamos leer nuestra documentación sobre archivos de configuración.

Configurar una dirección IP para Riak

Al configurar una dirección IP para Riak, debe asegurarse de que los nodos de Riak tengan una dirección IP única, ya sea que esté trabajando con un solo nodo o agregando más nodos al sistema. La dirección IP de Riak está contenida en riak.conf o, si está utilizando el archivo app.config, en el archivo de configuración vm.args, que se encuentra en el directorio /etc/riak (o /opt/riak/etc/ en otros sistemas operativos).

Inicialmente, la línea que contiene la dirección IP de Riak apunta al localhost en esta ubicación:

CONF.RIAK

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Reemplace 127.0.0.1 con su dirección IP preferida o nombre de host del nodo Riak.

Configuración de rendimiento y ancho de banda

Por razones de rendimiento, recomendamos encarecidamente agregar valores a los archivos de configuración de Riak riak.conf o vm.args, ubicados en el directorio /etc/riak/ o /opt/riak/etc.

CONF.RIAK

 erlang.max_ports = 65536

VM.ARGS

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

Deshabilitar JavaScript MapReduce

Se recomienda no utilizar JavaScript MapReduce heredado con ninguna versión de Riak CS. Por razones de rendimiento, debe deshabilitar la máquina virtual que realiza operaciones de JavaScript MapReduce configurando en el archivo de configuración riak.conf o en la sección riak_kv de advanced.conf o app.config:

CONF.RIAK

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

CONFIG.AVANZADA

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

APLICACIÓN.CONFIG

{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 los componentes restantes del sistema Riak CS.

Manuales originales.

Fuente: habr.com

Añadir un comentario