CentOS 6 – Install Voldemort
FrançaisLinuxTutorials
Voldemort est une base de données NoSQL, un système de stockage distribué fonctionnant par clef/valeur… en très très gros c’est une hashmap (pour ceux qui viennent du monde Java).
Les URLs des différentes ressources :
– http://project-voldemort.com/
– https://github.com/voldemort/voldemort/downloads
– https://github.com/voldemort/voldemort/wiki
Installation CentOS 6 Net install x86_64 en “Basic server”.
Et première commande pour commencer, tout mettre à jour :
1 | yum update -y |
On installe une machine virtuelle Java au passage :
1 | yum install -y java-1.6.0-openjdk |
Puis on télécharge le projet Voldemort :
1 2 3 4 5 | cd /usr/local/ wget -c https: //github .com /downloads/voldemort/voldemort/voldemort-0 .90. tar .gz tar zxvf voldemort-0.90. tar .gz rm -f voldemort-0.90. tar .gz ln -s voldemort-0.90 voldemort |
On prépare quelques fichiers de conf au bon endroit :
1 | cp /usr/local/voldemort/config/single_node_cluster/config/ * /usr/local/voldemort/config/ |
Affectation des droits :
1 2 3 4 | groupadd voldemort useradd -g voldemort voldemort chown -R voldemort:voldemort /usr/local/voldemort chown -R voldemort:voldemort /usr/local/voldemort-0 .90 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | cat > /etc/init .d /voldemort << "EOF" #!/bin/bash # chkconfig: 3 21 91 # # Voldemort # # description: Start up the Voldemort NoSQL DB. # Source function library. . /etc/init .d /functions RETVAL=$? VOLDEMORT_HOME= /usr/local/voldemort VOLDEMORT_USER=voldemort case "$1" in start) if & #91; -f $VOLDEMORT_HOME/bin/voldemort-server.sh ]; then echo $ "Starting Voldemort" /bin/su - $VOLDEMORT_USER -c $VOLDEMORT_HOME /bin/voldemort-server .sh > $VOLDEMORT_HOME /voldemort .log 2>&1 & fi ;; stop) if [ -f $VOLDEMORT_HOME /bin/voldemort-stop .sh ]; then echo $ "Stopping Voldemort" /bin/su - $VOLDEMORT_USER -c $VOLDEMORT_HOME /bin/voldemort-stop .sh fi ;; *) echo $ "Usage: $0 {start|stop}" exit 1 ;; esac exit $RETVAL EOF |
On rend ce fichier exécutable :
1 | chmod a+x /etc/init .d /voldemort |
Et on ajoute VOLDEMORT_HOME au /etc/bashrc pour tous les users :
1 2 3 4 5 | cat >> /etc/bashrc << EOF export VOLDEMORT_HOME= /usr/local/voldemort EOF |
On déclare la commande pour en profiter dans le shell courant :
1 | export VOLDEMORT_HOME= /usr/local/voldemort |
Il ne reste plus qu’à lancer voldemort :
1 | /etc/init .d /voldemort start |
Pour l’exécuter automatiquement au lancement du serveur et le couper :
1 2 | /sbin/chkconfig --level 3 voldemort on /sbin/chkconfig --level 06 voldemort off |
Est-il besoin de régler le firewall :
1 2 3 4 | iptables -A INPUT -p tcp --dport 6666 -j ACCEPT iptables -A INPUT -p tcp --dport 6667 -j ACCEPT iptables -A INPUT -p tcp --dport 8081 -j ACCEPT /sbin/service iptables save |
Et voilà vous avez un serveur Voldemort (simple pour l’instant).
Configuration
Tout est très bien décrit ici : http://project-voldemort.com/configuration.php (faites attention certaines balises XML sont mal fermées dans leurs exemples).
J’utilise pour mes tests des serveurs virtualisés dans VirtuaBox, j’ai créé 2 serveurs comme ci-dessus.
Les cartes réseaux des serveurs sont configurés en “Réseau privé hôte”.
Voici le fichier de /usr/local/voldemort/config/cluster.xml que j’utilise :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | < cluster > < name >VBOX_JU_CLUSTER</ name > < zone > < zone-id >0</ zone-id > < proximity-list >1</ proximity-list > </ zone > < zone > < zone-id >1</ zone-id > < proximity-list >0</ proximity-list > </ zone > < server > < id >0</ id > < host >192.168.56.101</ host > < http-port >8081</ http-port > < socket-port >6666</ socket-port > < admin-port >6667</ admin-port > <!-- A list of data partitions assigned to this server --> < partitions >0,1,2,3</ partitions > < zone-id >0</ zone-id > </ server > < server > < id >1</ id > < host >192.168.56.102</ host > < http-port >8081</ http-port > < socket-port >6666</ socket-port > < admin-port >6667</ admin-port > < partitions >4,5,6,7</ partitions > < zone-id >1</ zone-id > </ server > </ cluster > |
Vous copiez ce fichier sur vos 2 serveurs, les fichiers cluster.xml
doivent être identique sur chaque serveur. Puis vous configurez vos /usr/local/voldemort/config/server.properties
en adaptant notamment les node.id
et max.thread
en fonction de chaque serveur. node.id
est séquentiel, unique, et commence à 0.:
– Serveur 01
– Serveur 02
Nous n’allons pour l’instant ne configurer qu’un seul magasin de données, et ça se configure dans le fichier /usr/local/voldemort/config/stores.xml
:
1 |
Let’s check where the data are currently saved :
This means your data is saved on both server ! Why ? Just look inside your /usr/local/voldemort/config/stores.xml
file, we have :
– replication-factor = 2
– preferred-reads = 2
– required-reads = 1
– preferred-writes = 2
– required-writes = 1
Pretty clear no !
See you…
Leave a comment