Stockage cloud Riak. Partie 1 : Mise en place de Riak KV

Riak CS (stockage cloud) – un logiciel facile à utiliser pour organiser le stockage d’objets, fonctionnant sur Riak KV. Riak (KV) est une base de données clé-valeur NoSQL distribuée. Riak CS est conçu pour offrir simplicité, disponibilité et distribution de stockage cloud à toute échelle, et peut être utilisé pour créer des architectures cloud - publiques et privées - ou comme infrastructure de stockage pour des applications et des services très chargés. L'API Riak CS est compatible avec Amazon S3 et prend en charge la possibilité de recevoir des rapports sur diverses situations.

Stockage cloud Riak. Partie 1 : Mise en place de Riak KV
Cet article est une traduction gratuite du manuel officiel du système Riak CS version 2.1.1

Dans le système de stockage Riak CS, trois composants fonctionnent conjointement les uns avec les autres, ce qui signifie que chaque composant doit être configuré pour fonctionner avec les autres composants :

  • Riak (KV) – un système de base de données qui agit comme un système final.
  • 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, puis les distribue aux utilisateurs finaux.
  • Stanchion - Gère les requêtes impliquant des entités uniques au monde telles que des compartiments et des utilisateurs dans l'instance Riak. Par exemple, créer des utilisateurs, créer ou supprimer des buckets.

De plus, vous pouvez également configurer le client S3 pour une utilisation dans la messagerie avec le système Riak CS.

Vous devez prévoir d'avoir un nœud Riak pour chaque nœud Riak CS sur votre système. Les nœuds Riak et Riak CS peuvent être exécutés sur différentes machines physiques, 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 de suffisamment de puissance pour satisfaire les besoins des nœuds Riak et Riak CS, vous constaterez généralement de meilleures performances grâce à une latence réseau réduite.

Si votre système est composé de plusieurs nœuds, la configuration consiste principalement à établir la communication entre les composants. D'autres paramètres, tels que l'emplacement de stockage des fichiers journaux, ont des valeurs par défaut et ne doivent être modifiés que si vous souhaitez utiliser des valeurs non standard.

Configuration des composants du système. Configuration de Riak KV pour CS

Étant donné que Riak CS est une application construite sur Riak, il est très important de faire attention à votre configuration Riak lors de l'exécution de Riak CS. Ce document est à la fois un guide de configuration Riak et un document de référence décrivant les paramètres de configuration importants.

Avant l'installation, assurez-vous que Riak KV et Riak CS sont installés sur chaque nœud de votre cluster. Stanchion, en revanche, ne doit être installé que sur un seul nœud de l’ensemble du cluster.

Stockage cloud Riak. Partie 1 : Mise en place de Riak KV

Backends pour Riak CS

Le backend par défaut utilisé par Riak est Bitcask, mais le package Riak CS comprend un backend spécial qui doit être utilisé par le cluster Riak qui fait partie du système Riak CS. La version standard dispose du backend Multi standard fourni avec Riak.

Les mêmes buckets Riak utilisés dans Riak CS utilisent des index secondaires, qui nécessitent désormais un backend LevelDB. D'autres parties du système Riak CS peuvent bénéficier de l'utilisation du backend Bticask. L'utilisation d'un exemple de backend Multi est incluse dans Riak CS pour tirer parti de ces deux backends afin d'obtenir la meilleure combinaison de performances et de fonctionnalités. La section suivante décrit comment configurer correctement Riak pour utiliser ce multi-backend.

Back-end C'est ce que Riak utilisera pour sauvegarder les données. Riak KV dispose de plusieurs backends dans son arsenal : Bitcask, LevelDB, Memory et Multi.

De plus, le système de calcul du stockage utilise Riak MapReduse pour regrouper les fichiers dans des compartiments. Cela signifie que vous devez indiquer à tous les nœuds Riak où rechercher les fichiers Riak CS préparés avant de calculer le stockage.

Plusieurs autres paramètres doivent être modifiés pour configurer le nœud Riak dans le cadre du système Riak CS, tels que l'adresse IP et l'adresse IP et le port pour la messagerie via les tampons de protocole. D'autres paramètres peuvent être modifiés si nécessaire. Les sections suivantes décrivent comment configurer un nœud Riak pour qu'il fonctionne dans le cadre du système Riak CS.

Configuration du back-end Riak

Tout d'abord, les fichiers de configuration riak.conf ou advanced.config/app.config sont modifiés. Ces fichiers peuvent se trouver 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 = bitcask

ADVANCED.CONFIG

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

APP.CONFIG

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

Ensuite, nous devons démontrer la nécessité de modules RiakCS pour Riak et demander à Riak d'utiliser le backend configuré fournissant Riak CS. Nous devons pour cela utiliser le fichier advanced.config ou app.config et ajouter les options suivantes :

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

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

Il est très important de noter que bon nombre de ces valeurs dépendront des variations de répertoire spécifiques à votre système d'exploitation, suivez donc les instructions en conséquence. Par exemple, l'option add_paths suppose que Riak CS est installé dans /usr/lib/riak-cs, tandis que les options data_root supposent que Riak est installé dans /var/lib. (Remarque : dans mon cas, il s'agissait de add_paths - /usr/lib64/riak-cs/).

Cette configuration suppose que Riak CS est installé sur la même machine que Riak. Sinon, le package doit être copié sur un hôte distinct.

Paramétrage de la création de frères et sœurs

Maintenant, nous devons définir le paramètreallow_mult sur true. On peut ajouter une ligne dans le fichier de configuration riak.conf, ou une section riak_core dans advanced.config ou app.config.

RIAK.CONF

buckets.default.allow_mult = true

ADVANCED.CONFIG

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

Cela permettra à Riak de créer des frères et sœurs nécessaires au fonctionnement de Riak CS. Si vous vous connectez à Riak CS en utilisant la bibliothèque client, ne vous inquiétez pas : vous n'aurez pas à résoudre les conflits, puisque toutes les opérations de Riak CS sont strictement cohérentes telles que définies.

Frère et sœur est un moyen de stocker plusieurs objets dans une seule clé afin que l'objet ait des valeurs différentes sur différents nœuds.

Remarque : allow_mult
Tout nœud Riak qui prend également en charge Riak CS aura allow_mult défini sur true à tout moment. Riak CS réinitialisera le lancement si la valeur est fausse.

Définition du nom d'hôte 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 appelé vm.args dans le même répertoire que app.config et spécifier le nom d'hôte à l'aide de l'indicateur -name. Nous vous recommandons de spécifier les noms de nœuds au format @. Et donc, si vous avez trois nœuds exécutés sur un hôte 100.0.0.1, vous pouvez les appeler [email protected], [email protected]Et [email protected] ou vous pouvez donner des noms plus spécifiques, tels que [email protected], [email protected] et ainsi de suite. L'exemple ci-dessous montre la modification du nom d'hôte en [email protected], qui fonctionnera sur localhost.

RIAK.CONF

 nodename = [email protected] 

VM.ARGS

 -name [email protected]

Vous devez nommer tous les nœuds avant de les démarrer et de rejoindre le cluster.

Test de configuration

Maintenant que tous les paramètres de nœuds nécessaires ont été effectués, nous pouvons essayer de lancer Riak :

SHELL

 riak start 

Note La réponse dans mon cas :

Stockage cloud Riak. Partie 1 : Mise en place de Riak KV

Ici, il faut attendre un peu. Ensuite, vous pouvez commencer à tester le nœud en cours d'exécution.

SHELL

 riak ping

Si la réponse est pong, alors Riak est en cours d'exécution ; si la réponse est Node ne répond pas aux pings, alors quelque chose s'est mal passé.

Note La réponse dans mon cas :

Stockage cloud Riak. Partie 1 : Mise en place de Riak KV

Si le nœud n'a pas démarré correctement, consultez 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. Ce qui indique que le chemin d'accès à 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 que vous n'êtes pas passé de riak_cs_kv_multi_backend à riak_kv_multi_backend.

Configuration de Riak pour utiliser les tampons de protocole

Les paramètres du tampon du protocole Riak se trouvent dans riak.conf ou dans la section riak_api des fichiers advanced.config ou app.config, qui se trouvent dans le répertoire /etc/riak/. Par défaut, l'hôte a une adresse IP de 127.0.0.1 et un port 8087. Vous devrez les modifier si vous prévoyez d'exécuter Riak et Riak CS dans un environnement non local. Remplacez 127.0.0.1 par l'adresse IP de l'hôte Riak et le port 8087 par un autre approprié.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

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

Note:La valeur du paramètre listening.protobuf.internal dans le fichier riak.conf (ou la valeur du paramètre pb dans advanced.conf/app.config) doit correspondre aux valeurs de riak_host dans Riak CS riak-cs.config et Fichiers Stanchion stanchion.conf (ou riak_host respectivement dans avancé .config/app.config).

Une note sur le numéro de port
Un numéro de port différent peut être requis 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 serveur proxy.

Il est également recommandé aux utilisateurs de s'assurer que la taille de Riak protobuf.backlog (ou dans les fichiers advanced.config/app.config, il s'agit de pb_backlog) 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 les fichiers advanced.config/app.conf).

Si la valeur de pool.request.size dans Riak CS a été modifiée, alors la valeur de protobuf.backlog doit également être mise à jour dans Riak.

Autres paramètres Riak

Les fichiers riak.conf et advanced.config incluent d'autres paramètres qui configurent la création de fichiers journaux et l'endroit où ils sont enregistrés. Ces paramètres ont des valeurs par défaut et devraient fonctionner dans la plupart des cas. Pour plus d'informations, nous vous recommandons de lire notre documentation sur les fichiers de configuration.

Configuration d'une adresse IP pour Riak

Lors de la configuration d'une adresse IP pour 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 plusieurs nœuds au système. L'adresse IP de Riak est contenue dans riak.conf ou - si vous utilisez le fichier app.config - dans le fichier de configuration vm.args, qui se trouve là dans le répertoire /etc/riak (ou /opt/riak/etc/ sur d'autres systèmes d'exploitation).

Initialement, la ligne contenant l'adresse IP de Riak pointe vers le localhost à cet emplacement :

RIAK.CONF

 nodename = [email protected]

VM.ARGS

 -name [email protected]

Remplacez 127.0.0.1 par votre adresse IP préférée ou le nom d'hôte du nœud Riak.

Paramètres de performances et de bande passante

Pour des raisons de performances, nous recommandons fortement d'ajouter des valeurs aux fichiers de configuration Riak riak.conf ou vm.args, situés dans le répertoire /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

Désactivation de JavaScript MapReduce

Il est recommandé de ne pas utiliser l'ancien JavaScript MapReduce avec aucune version de Riak CS. Pour des raisons de performances, vous devez désactiver la machine virtuelle effectuant les opérations JavaScript MapReduce en définissant dans le fichier de configuration 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, [
    %% 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
]}

Ensuite, nous devons configurer les composants restants du système Riak CS.

Manuel d'origine.

Source: habr.com

Ajouter un commentaire