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 &#93;;
      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
 



test
2

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…

Previous
CentOS 6 – Voldemort install
Next
Scala – Scalatra – Salat – MongoDB : découverte

Leave a comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.