Afin de s’initier à SolrCloud ou disposer d’un environnement minimal de test la meilleur solution est d’utiliser Jetty et le Zookeeper interne de Solr. Voici un exemple d’installation d’un environnent à 2 noeuds.
Nous allons installer le cloud dans le répertoire « /opt/solrcloud-test ».
Installation du cloud
Créer le répertoire d’installation
cd /opt mkdir solrcloud-test cd solrcloud-test
Copier dans la distribution Solr 4.3.1 dans solrcloud-test
On a alors le fichier /opt/solrcloud-test/solr-4.3.1.tgz et on extrait son contenu.
tar xf solr-4.3.1.tgz
Créer le noeud 1
cp -r solr-4.3.1/example node1
Faire un peu de nettoyage
rm -rf node1/example-DIH node1/multicore/ node1/solr/collection1
Supprimer la déclaration du core collection1 dans node1/solr/solr.xml en éffaçant la ligne suivante
<core name="collection1" instanceDir="collection1" />
Copier les librairies complémentaires
Si vous prévoyez d’utiliser des extensions Solr tel que le DIH, il faut créer un répertoire lib dans node1/solr et y copier les jar nécessaires et leurs dépendances
mkdir node1/solr/lib cp solr-4.3.1/dist/solr-dataimporthandler-* node1/solr/lib/. cp /<quelque_part>/mysql-connector-java-5.0.4-bin.jar/node1/solr/lib/.
Dupliquer le noeud 1 en un noeud 2
cp -r node1 node2
Scripts de démarrage
Créer des scripts de démarrage des 2 noeuds dans /opt/solrcloud-test
start-node1.sh
#!/bin/sh cd node1 java -DzkRun -jar start.jar
start-node2.sh
#!/bin/sh cd node2 java -Djetty.port=8993 -DzkHost=localhost:9983 -jar start.jar
Avec ces scripts :
- le noeud 1 Solr est accessible sur le port 8983 et Zookeeper est démarré pour utiliser le port 9983 (1000 de plus que Solr)
- le noeud 2 Solr est accessible sur le port 8993 et contact bien Zookeeper sur le port 9983
Attention, à cette étape, le cloud fonctionne mais l’administration Solr indique une erreur car aucun core n’est encore opérationnel dans les noeuds
http://localhost:8983/solr/#/~cloud
Créer une collection
Pour cela, on va charger le répertoire conf de la collection dans Zookeeper. Nous utilisons pour l’exemple la collection « collection1 » fournie avec la distribution Solr.
java -classpath .:node1/lib/ext/*:node1/solr-webapp/webapp/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:9983 -confdir solr-4.3.1/example/solr/collection1/conf -confname collection1
Remarque : le wiki SolrCloud, indique comme classpath pour cette opération « -classpath node1/solr-webapp/WEB-INF/lib/* ». Or avec ce classpath, on obtient des erreurs de chargement des dépendances.
Puis, nous créons une collection « collection1 » avec la configuration chargée dans Zookeeper. Cette collection est constituée d’un shard unique mais également d’un réplica. Elle utilise donc les 2 noeuds.
curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=collection1&numShards=1&replicationFactor=2&maxShardsPerNode=1&collection.configName=collection1'
On peut suivre le travail de création dans les consoles Jetty des 2 noeuds
Remarque : Afin de charger les librairies des extensions que l’on a copié dans les répertoires solr/lib de chaque noeud, il faut que le fichier solrconfig.xml sache les trouver. Il faut donc avoir la ligne suivante
<lib dir="../solr/lib"/>
Pour tout réinitialiser
Si vous souhaiter pourvoir réinitialiser complètement le cloud, il faut:
- stopper les 2 noeuds
- effacer les données de Zookeeper
rm -rf node1/solr/zoo_data
- effacer les cores des collections. Par exemple :
rm -rf node1/solr/collection1_shard1_replica1 rm -rf node2/solr/collection1_shard1_replica2
- supprimer les déclarations des cores dans node1/solr/solr.xml et node2/solr/solr.xml
- redémarrer les noeuds.