Riak CS (Stockage Cloud) – un logiciel facile à utiliser pour la gestion de stockage d'objets fonctionnant sur Riak KV. Riak (KV) est une base de données NoSQL distribuée de type « clé-valeur ». Riak CS est conçu pour garantir la simplicité, la disponibilité et la distribution d'un stockage cloud à n'importe quelle échelle, et peut être utilisé pour construire des architectures cloud - à la fois publiques et privées - ou comme stockage d'infrastructure pour des applications et services à forte charge. L'API Riak CS est compatible avec Amazon S3 et prend en charge la possibilité de recevoir des rapports sur diverses situations.

Cet article est une traduction libre du manuel officiel du système Riak CS version 2.1.1.
Dans le système de stockage Riak CS, trois composants travaillent ensemble, ce qui signifie que la configuration de chaque composant est essentielle pour fonctionner avec les autres composants :
- Riak (KV) – un système de base de données qui fonctionne comme un système terminal.
- Riak CS — une couche de stockage cloud au-dessus de Riak, qui fournit des capacités de stockage et d'API, stocke les fichiers et les métadonnées dans Riak, et les transmet ensuite aux utilisateurs finaux.
- Stanchion — gère les requêtes impliquant des entités globalement uniques, telles que les buckets et les utilisateurs dans une instance de Riak. Par exemple, la création d'utilisateurs, la création ou la suppression de buckets.
De plus, vous pouvez également configurer un client S3 pour l'utiliser dans la communication avec le système Riak CS.
Vous devez planifier la présence d'un nœud Riak pour chaque nœud Riak CS dans votre système. Les nœuds Riak et Riak CS peuvent être exécutés sur des machines physiques différentes, mais dans la plupart des cas, il est préférable d'exécuter un nœud Riak et un nœud Riak CS sur la même machine physique. En supposant qu'une machine physique dispose d'une puissance suffisante pour répondre aux besoins des deux nœuds Riak et Riak CS, vous verrez généralement de meilleures performances en raison de la réduction des latences réseau.
Si votre système se compose de plusieurs nœuds, la configuration consiste principalement à établir la communication entre les composants. D'autres paramètres, tels que l'endroit où les fichiers journaux seront stockés, ont des valeurs par défaut et n'ont besoin d'être modifiés que si vous souhaitez utiliser des valeurs non standards.
Configuration des composants du système. Configuration de Riak KV pour CS
Puisque Riak CS est une application développée sur Riak, il est crucial de prêter attention à votre configuration Riak lors du démarrage de Riak CS. Ce document sert à la fois de guide pour configurer Riak et de document de référence décrivant les paramètres de configuration importants.
Avant de procéder à la configuration, assurez-vous que Riak KV et Riak CS sont installés sur chaque nœud de votre cluster. Stanchion, en revanche, doit être installé uniquement sur un nœud dans tout le cluster.

Backends pour Riak CS
Par défaut, le backend utilisé par Riak est Bitcask, mais le paquet Riak CS comprend un backend spécial qui doit être utilisé par le cluster Riak faisant partie du système Riak CS. La version standard comprend le backend Multi qui est fourni avec Riak.
Les mêmes buckets Riak, utilisés à l'intérieur de Riak CS, utilisent des index secondaires qui nécessitent désormais le backend LevelDB. D'autres parties du système Riak CS peuvent bénéficier de l'utilisation du backend Bitcask. L'utilisation du backend Multi par défaut est incluse dans Riak CS pour tirer parti des avantages de ces deux backends afin d'atteindre le meilleur compromis entre performance et fonctionnalité. La section suivante décrit comment configurer correctement Riak pour utiliser ce backend Multi.
Backend — c'est ce que Riak utilisera pour stocker des données. Riak KV dispose de plusieurs backends : Bitcask, LevelDB, Memory et Multi.
De plus, le système de calcul de stockage utilise Riak MapReduce pour agréger des fichiers dans des buckets. Cela signifie que vous devez indiquer à tous les nœuds Riak où trouver les fichiers préparés par Riak CS avant de procéder au calcul du stockage.
Plusieurs autres paramètres doivent être modifiés pour configurer un nœud Riak en tant que partie du système Riak CS, tels que l'adresse IP et l'adresse IP ainsi que le port pour les échanges via Protocol Buffers. Les autres configurations peuvent être modifiées si besoin. Les sections suivantes décrivent comment configurer un nœud Riak pour fonctionner comme une partie du système Riak CS.
Configuration du backend Riak
Tout d'abord, les fichiers de configuration riak.conf ou advanced.config/app.config doivent être modifiés. Ces fichiers peuvent être situés dans les répertoires /etc/riak ou /opt/riak/etc. Par défaut, Riak utilise le backend Bitcask. La première chose à faire est de modifier le fichier de configuration en supprimant la ligne suivante :
RIAK.CONF
## Delete this line:
storage_backend = bitcaskADVANCED.CONFIG
{riak_kv,
[ %% Supprimer cette ligne :
{storage_backend, riak_kv_bitcask_backend},
]}APP.CONFIG
{riak_kv,
[ %% Supprimer cette ligne :
{storage_backend, riak_kv_bitcask_backend},
]}Ensuite, nous devons indiquer la nécessité des modules RiakCS pour Riak et configurer Riak pour utiliser le backend configuré qui prend en charge Riak CS. Nous devons utiliser le fichier advanced.config ou app.config et ajouter les options suivantes :
ADVANCED.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Autres configurations
{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"}
]}
]},
%% Autres configurations
]}
APP.CONFIG
{eleveldb, [
{total_leveldb_mem_percent, 30}
]},
{riak_kv, [
%% Autres configurations
{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"}
]}
]},
%% Autres configurations
]}Il est très important de noter que bon nombre de ces valeurs dépendront des variations de répertoires spécifiques à votre système d'exploitation, alors suivez les instructions en conséquence. Par exemple, le paramètre add_paths suppose que Riak CS est installé dans /usr/lib/riak-cs, tandis que les paramètres data_root supposent que Riak est installé dans /var/lib. (Remarque : dans mon cas, c'était add_paths — /usr/lib64/riak-cs/).
Cette configuration suppose que Riak CS est installé sur la même machine que Riak. Sinon, le paquet doit être copié sur un hôte distinct.
Configuration de la création de sbilings
Maintenant, nous devons configurer le paramètre allow_mult à true. Nous pouvons ajouter la ligne dans le fichier de configuration riak.conf, ou dans la section riak_core du fichier advanced.config ou app.config.
RIAK.CONF
buckets.default.allow_mult = trueADVANCED.CONFIG
{riak_core, [
%% Autres configurations
{default_bucket_props, [{allow_mult, true}]},
%% Autres configurations
]}APP.CONFIG
{riak_core, [
%% Autres configurations
{default_bucket_props, [{allow_mult, true}]},
%% Autres configurations
]}Cela permettra à Riak de créer des sbilings nécessaires au fonctionnement de Riak CS. Si vous vous connectez à Riak CS à l'aide de la bibliothèque cliente, ne vous inquiétez pas : vous n'aurez pas à résoudre des conflits, car toutes les opérations de Riak CS sont strictement convenues selon leur définition.
Sbilings — c'est un moyen de stocker plusieurs objets sous une même clé afin qu'un objet ait différentes valeurs sur différents nœuds.
Remarque : allow_mult
Tout nœud Riak qui prend également en charge Riak CS aura toujours la valeur true pour le paramètre allow_mult. Riak CS redémarrera si la valeur est false.
Configuration du nom du nœud et de l'adresse IP
Chaque nœud Riak a un nom qui peut être spécifié dans riak.conf dans l'option nodename. Si vous utilisez le fichier de configuration app.config, vous devez créer un fichier nommé vm.args dans le même répertoire que celui où se trouve app.config et spécifier le nom du nœud en utilisant le drapeau -name. Nous vous recommandons de nommer les nœuds au format @. Ainsi, si vous avez trois nœuds en cours d'exécution sur un même hôte 100.0.0.1, vous pouvez les nommer riak1@100.0.0.1, riak2@100.0.0.1, et riak3@100.0.0.1, ou leur donner des noms plus spécifiques tels que test_cluster1@100.0.0.1, user_data3@100.0.0.1, etc. L'exemple ci-dessous montre le changement du nom du nœud en riak1@127.0.0.1, qui fonctionnera sur l'hôte local.
RIAK.CONF
nodename = riak1@127.0.0.1 VM.ARGS
-name riak1@127.0.0.1Vous devez nommer tous les nœuds avant de les démarrer et de les inclure dans le cluster.
Test de configuration
Maintenant que toutes les configurations requises du nœud ont été effectuées, nous pouvons essayer de démarrer Riak :
SHELL
riak start Remarque : Dans mon cas, la réponse était :

Il faut attendre un peu. Ensuite, vous pouvez commencer le test du nœud démarré.
SHELL
riak pingSi la réponse est pong, cela signifie que Riak est en cours d'exécution : si la réponse est Node not responding to pings, alors quelque chose s'est mal passé.
Remarque : Dans mon cas, la réponse était :

Si le nœud a démarré incorrectement, regardez le journal erlang.log.1 dans le répertoire /log du nœud, si le problème peut être identifié. L'une des erreurs les plus courantes est invalid_storage_backend. Cela indique que le chemin vers la bibliothèque Riak CS dans advanced.config ou dans app.config est incorrect (ou que Riak CS n'est pas installé sur le serveur). Malgré cette erreur, assurez-vous de ne pas avoir changé de riak_cs_kv_multi_backend à riak_kv_multi_backend.
Configuration de Riak pour l'utilisation des buffers de protocole (protocol buffers)
Les paramètres des buffers de protocole Riak se trouvent dans riak.conf ou dans la section riak_api dans les fichiers advanced.config ou app.config, qui se trouvent dans le répertoire /etc/riak/. Par défaut, l'hôte a l'adresse IP 127.0.0.1 et le port 8087. Vous devez les modifier si vous prévoyez de faire fonctionner Riak et Riak CS en dehors d'un environnement local. Remplacez l'adresse IP 127.0.0.1 du nœud Riak et le port 8087 par des valeurs appropriées.
RIAK.CONF
listener.protobuf.internal = 10.0.2.10:10001ADVANCED.CONF
{riak_api, [
%% Autres configurations
{pb, ["10.0.2.10", 10001]},
%% Autres configurations
]}APP.CONFIG
riak_api, [
%% Autres configurations
{pb, ["10.0.2.10", 10001]},
%% Autres configurations
]}Remarque :La valeur du paramètre listener.protobuf.internal dans le fichier riak.conf (ou la valeur du paramètre pb dans les fichiers advanced.conf / app.config) doit correspondre aux valeurs de riak_host dans le fichier riak-cs.config de Riak CS et dans stanchion.conf (ou riak_host dans advanced.config/app.config).
Note sur le numéro de port
Un autre numéro de port peut être nécessaire si le port entre en conflit avec les ports utilisés par une autre application ou si vous utilisez un équilibreur de charge ou un proxy.
Il est également recommandé que les utilisateurs s'assurent que la taille de Riak protobuf.backlog (ou pb_backlog dans les fichiers advanced.config/app.config) est égale ou supérieure à la taille pool.request.size spécifiée pour Riak CS dans riak-cs.config (ou request_pool_size dans advanced.config/app.conf).
Si la valeur pool.request.size dans Riak CS a été modifiée, alors la valeur protobuf.backlog dans Riak doit également être mise à jour.
Autres paramètres de Riak
Les fichiers riak.conf et advanced.config contiennent d'autres paramètres qui configurent la création de fichiers journaux et leur chemin de stockage. Ces paramètres ont des valeurs par défaut et devraient fonctionner dans la plupart des cas. Pour plus d'informations, nous recommandons de lire notre documentation sur les fichiers de configuration.
Configuration de l'adresse IP pour Riak
Lors de la configuration adresses IP de Riak, vous devez vous assurer que les nœuds Riak ont une adresse IP unique, que vous travailliez avec un seul nœud ou que vous ajoutiez d'autres nœuds au système. L'adresse IP de Riak se trouve dans riak.conf ou - si vous utilisez le fichier app.config - dans le fichier de configuration vm.args, qui se trouve également dans le répertoire /etc/riak (ou dans /opt/riak/etc/ sur d'autres systèmes d'exploitation).
Au départ, la chaîne contenant l'adresse IP de Riak pointe sur l'hôte local en ce lieu :
RIAK.CONF
nodename = riak@127.0.0.1VM.ARGS
-name riak@127.0.0.1Remplacez 127.0.0.1 par l'adresse IP ou le nom d'hôte préféré du nœud Riak.
Paramètres de performance et de bande passante
Pour des raisons de performance, nous recommandons vivement d'ajouter des valeurs dans les fichiers de configuration Riak riak.conf ou vm.args, situés dans les répertoires /etc/riak/ ou /opt/riak/etc.
RIAK.CONF
erlang.max_ports = 65536VM.ARGS
## This setting should already be present for recent Riak installs.
-env ERL_MAX_PORTS 65536Désactivation de JavaScript MapReduce
Il est recommandé de ne pas utiliser le JavaScript MapReduce obsolète avec toute version de Riak CS. Pour des raisons de performance, vous devez désactiver la machine virtuelle exécutant les opérations JavaScript MapReduce en configurant le fichier riak.conf, ou dans la section 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, [
%% Autres configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Autres configs
]}APP.CONFIG
{riak_kv, [
%% Autres configs
{map_js_vm_count, 0},
{reduce_js_vm_count, 0},
{hook_js_vm_count, 0}
%% Autres configs
]}Ensuite, nous devons configurer les composants restants du système Riak CS.
Source : habr.com
