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 :

yum update -y

On installe une machine virtuelle Java au passage :

yum install -y java-1.6.0-openjdk

Puis on télécharge le projet Voldemort :

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 :

cp /usr/local/voldemort/config/single_node_cluster/config/* /usr/local/voldemort/config/

Affectation des droits :

groupadd voldemort
useradd -g voldemort voldemort
chown -R voldemort:voldemort /usr/local/voldemort
chown -R voldemort:voldemort /usr/local/voldemort-0.90
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 :

chmod a+x /etc/init.d/voldemort

Et on ajoute VOLDEMORT_HOME au /etc/bashrc pour tous les users :

cat >> /etc/bashrc << EOF

export VOLDEMORT_HOME=/usr/local/voldemort

EOF

On déclare la commande pour en profiter dans le shell courant :

export VOLDEMORT_HOME=/usr/local/voldemort

Il ne reste plus qu’à lancer voldemort :

/etc/init.d/voldemort start

Pour l’exécuter automatiquement au lancement du serveur et le couper :

/sbin/chkconfig --level 3 voldemort on
/sbin/chkconfig --level 06 voldemort off

Est-il besoin de régler le firewall :

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 :

<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 :




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.