Comment installer et configurer Riak2 avec Python3 sur Ubuntu 14.04

introduction

Riak est un magasin de données noSQL non relationnel, axé sur l’architecture de base de données distribuée. Avec la dernière édition de Riak 2.1.1, toutes les données peuvent être rendues très cohérentes, dans lesquelles les données sont mises à jour lors de l’extraction, par opposition à uniformément, dans lesquelles les données sont plus accessibles, mais non actualisées.

Riak est un choix parmi une famille d’implémentations noSQL à valeur clé, avec des concurrents comprenant Redis, MemcacheDB et Aerospike. En tant que base de données clé-valeur, elle n’est par conséquent pas optimisée pour les requêtes SQL-esque qui capturent un ensemble de données complet.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de Riak

Dans cette section, nous allons installer Riak lui-même.

Avec la sortie de la version 2.0, Riak a migré ses paquets d’un référentiel apt auto-hébergé vers le service packagecloud.io. Nous devons donc renseigner l’index + apt + avec Riak. Heureusement, Riak fournit un script personnalisé qui fait exactement cela.

Tout d’abord, nous allons télécharger le script.

curl -O https://packagecloud.io/install/repositories/basho/riak/script.deb.sh

Au lieu de l’exécuter directement, ouvrez d’abord le script pour vérifier qu’il contient ce que nous attendons.

less script.deb.sh

Pour récupérer des paquets sur HTTPS, le script doit installer le paquet + apt-transport-https +. Il recherche également une autorité de certification, importe une clé publique et met à jour votre index de package.

Appuyez sur + q + pour fermer le fichier, puis exécutez le script.

sudo bash script.deb.sh

Enfin, installez Riak.

sudo apt-get install riak=2.1.1-1

Étape 2 - Configuration et lancement de Riak

Dans cette section, nous allons configurer et lancer un nœud Riak.

Pour commencer, nous devons optimiser la machine virtuelle Erlang de Riak avec certains paramètres recommandés. Nous allons apporter deux modifications: définir les intervalles d’analyse de la file d’attente et désactiver le compactage de la charge par le planificateur.

Ouvrez le nouveau fichier de configuration de Riak 2.0 en utilisant + nano + ou votre éditeur de texte préféré.

sudo nano /etc/riak/riak.conf

Décommentez la ligne + erlang.schedulers.force_wakeup_interval = 500 +, surlignée ci-dessous. Assurez-vous que l’espace de début est également supprimé, de sorte que le + e + soit le premier caractère de la ligne.

/etc/riak/riak.conf

. . .

## Set scheduler forced wakeup interval. All run queues will be
## scanned each Interval milliseconds. While there are sleeping
## schedulers in the system, one scheduler will be woken for each
...
## Default: 500
##
## Acceptable values:
##   - an integer


. . .

Répétez cette procédure pour le + erlang.schedulers.compaction_of_load = false + dans le bloc directement après:

/etc/riak/riak.conf

. . .

## Enable or disable scheduler compaction of load. By default
## scheduler compaction of load is enabled. When enabled, load
## balancing will strive for a load distribution which causes as many
...
## Default: false
##
## Acceptable values:
##   - one of: true, false


. . .

Enregistrez et quittez le fichier.

Pour démarrer un nœud Riak, exécutez:

sudo riak start

Vous verrez ce qui suit.

Sortie

!!!!
!!!! WARNING: ulimit -n is 1024; 65536 is the recommended minimum.
!!!!

Le message ci-dessus vous avertit que la limite maximale de fichiers ouverts dans notre système est limitée, ce qui limite le nombre de fichiers ouverts à un moment donné. Pensez à chaque poignée comme un outil d’écriture que nous possédons. Chaque processus informatique nécessite un outil d’écriture, pour écrire

Par défaut, le système limite le nombre d’outils d’écriture disponibles à 1024; Riak recommande de porter cette limite à 65 536. Pour augmenter cette limite, voir documentation officielle de Riak Open Files Limit.

Pour vérifier que votre nœud est en cours d’exécution, procédez comme suit.

sudo riak ping

La commande affichera + pong + si le nœud est en cours d’exécution et renverra une erreur sinon.

Pour exécuter une séquence de tests Riak prédéfinis, exécutez:

sudo riak-admin test

Cette commande ci-dessus affichera ce qui suit.

Sortie

Successfully completed 1 read/write cycle to '[email protected]'

Votre nœud Riak est maintenant opérationnel.

Étape 3 - Construction d’un exemple d’application Python (facultatif)

Voici une série d’étapes facultatives permettant de configurer un exemple d’application Python-Riak. Les instructions ci-dessus sont indépendantes de la langue et ne dépendent pas des éléments suivants pour fonctionner normalement. Si vous n’êtes pas intéressé par un exemple d’application Python, vous pouvez passer à la section Conclusion.

Tout d’abord, vérifiez votre version actuelle de Python.

python --version

Vous devriez voir la sortie:

OutputPython 2.7.6

Nous aimerions que + python exécute Python 3. Supposons donc l’ancien fichier binaire.

sudo rm /usr/bin/python

Ensuite, créez un lien symbolique vers le binaire Python 3 à la place.

sudo ln -s /usr/bin/python3 /usr/bin/python

Si vous exécutez + python --version + maintenant, vous verrez la sortie + Python 3.4.0 +.

Ensuite, nous installerons Pip, l’installateur de paquet recommandé pour les paquets Python. Pip nous permet de gérer facilement n’importe quel paquet Python3 que nous aimerions avoir. Pour un aperçu de Pip, vous pouvez lire de ce tutoriel.

Pour l’installer, lancez simplement ce qui suit:

sudo apt-get install python3-pip

Maintenant, nous devons installer le client Python-Riak. Plusieurs dépendances doivent être satisfaites en premier:

sudo apt-get install python3-dev libffi-dev libssl-dev

Installez le client.

sudo pip3 install riak

Enfin, nous allons coder un exemple d’application pour tester la combinaison Python-Riak. Créez un nouveau dossier pour héberger l’application et créez-y un nouveau fichier.

mkdir ~/test
sudo nano ~/test/app.py

Collez ce qui suit à l’intérieur. Il s’agit d’un exemple de code extrait de la page official Riak.

~ / test / app.py

import riak

# connect to Riak
myClient = riak.RiakClient(pb_port=8087, protocol='pbc')

# create new Bucket
myBucket = myClient.bucket('test')

# store key-value pairs
val1 = 1
key1 = myBucket.new('one', data=val1)
key1.store()

val2 = "two"
key2 = myBucket.new('two', data=val2)
key2.store()

val3 = {"myValue": 3}
key3 = myBucket.new('three', data=val3)
key3.store()

# fetch the data
fetched1 = myBucket.get('one')
fetched2 = myBucket.get('two')
fetched3 = myBucket.get('three')

print('Value 1 correct: '+str(val1 == fetched1.data))
print('Value 2 correct: '+str(val2 == fetched2.data))
print('Value 3 correct: '+str(val3 == fetched3.data))

Maintenant, exécutez ce qui suit pour tester cette application.

python ~/test/app.py

Il émettra l’avertissement suivant, mais cela peut être ignoré.

Python application warning/usr/local/lib/python3.4/dist-packages/riak/security.py:54: UserWarning: Found OpenSSL 1.0.1f 6 Jan 2014 version, but expected at least OpenSSL 1.0.1g.  Security may not support TLS 1.2.
 warnings.warn(msg, UserWarning)

TLS (Transport Layer Security) 1.2 est simplement un protocole de sécurité plus strict basé sur TLS 1.1, et TLS à son tour est généralement une mise à niveau de SSL. Cependant, Internet Explorer ne prend pas universellement en charge TLS 1.1 et 1.2, et TLS 1.2 est désactivé dans les premières versions de tous les navigateurs populaires. En conséquence, nous pouvons accepter que SSL régisse les connexions entre l’application et le magasin de données Riak en toute sécurité.

Il devrait générer les éléments suivants:

sortie

Value 1 correct: True
Value 2 correct: True
Value 3 correct: True

C’est ça!

Conclusion

Vous avez maintenant configuré Riak 2 et l’avez connecté avec succès à Python3. Cette installation de Riak 2 n’est toutefois pas spécifique à Python et peut être facilement adaptée à d’autres langues. Pour plus d’informations sur la sécurisation de Riak, voir Riak 2 recommendations].