2010-07-11 3 views
2

J'ai créé un index solr 1.4 et souhaite traiter les requêtes pour une application de volume élevé. L'index que j'interroge est statique - plus aucune mise à jour n'est autorisée. Un couple d'applications clientes faisant des demandes sur le serveur conduisait à environ 200% de charge CPU sur une boîte ubuntu quad-core, donc je pensais répliquer l'index sur une deuxième boîte et l'exécuter en parallèle pour permettre plus de débit.Réplication d'un serveur solr en lecture seule

J'ai arrêté solr, copié l'index dans un répertoire séparé, configuré le serveur solr pour pointer vers le nouvel index, et déclenché tous les deux. Pendant que le serveur d'origine fonctionnait comme avant, la copie n'a pas pu trouver de documents.

Quand je fais un répertoire liste sur les serveurs, je vois quelque chose un peu étrange: Voici la liste du répertoire d'index d'origine

total 3581328 
-rw-r--r-- 1 gene pal 2502676419 2010-07-08 20:53 _38.fdt 
-rw-r--r-- 1 gene pal  488660 2010-07-08 20:53 _38.fdx 
-rw-r--r-- 1 gene pal  198 2010-07-08 20:53 _38.fnm 
-rw-r--r-- 1 gene pal 213752776 2010-07-08 20:54 _38.frq 
-rw-r--r-- 1 gene pal  366496 2010-07-08 20:54 _38.nrm 
-rw-r--r-- 1 gene pal 725677119 2010-07-08 20:54 _38.prx 
-rw-r--r-- 1 gene pal 1124453 2010-07-08 20:54 _38.tii 
-rw-r--r-- 1 gene pal 85260530 2010-07-08 20:54 _38.tis 
-rw-r--r-- 1 gene pal  280471 2010-07-08 20:54 _38.tvd 
-rw-r--r-- 1 gene pal 133020745 2010-07-08 20:54 _38.tvf 
-rw-r--r-- 1 gene pal  977316 2010-07-08 20:54 _38.tvx 
-rw-r--r-- 1 gene pal  299 2010-07-08 20:54 segments_1b 
-rw-r--r-- 1 gene pal   20 2010-07-08 20:54 segments.gen 

et c'est la liste de la copie:

total 3577796 
-rw-r--r-- 1 gene pal 2502676419 2010-07-10 23:16 _38.fdt 
-rw-r--r-- 1 gene pal  488660 2010-07-10 23:15 _38.fdx 
-rw-r--r-- 1 gene pal  198 2010-07-10 23:15 _38.fnm 
-rw-r--r-- 1 gene pal 213752776 2010-07-10 23:15 _38.frq 
-rw-r--r-- 1 gene pal  366496 2010-07-10 23:15 _38.nrm 
-rw-r--r-- 1 gene pal 725677119 2010-07-10 23:16 _38.prx 
-rw-r--r-- 1 gene pal 1124453 2010-07-10 23:16 _38.tii 
-rw-r--r-- 1 gene pal 85260530 2010-07-10 23:15 _38.tis 
-rw-r--r-- 1 gene pal  280471 2010-07-10 23:16 _38.tvd 
-rw-r--r-- 1 gene pal 133020745 2010-07-10 23:16 _38.tvf 
-rw-r--r-- 1 gene pal  977316 2010-07-10 23:16 _38.tvx 
-rw-r--r-- 1 gene pal  299 2010-07-10 23:15 segments_1b 
-rw-r--r-- 1 gene pal   20 2010-07-10 23:15 segments.gen 

Bien que la taille des fichiers soit la même, le total indiqué en haut de chaque liste est différent. Et même si les messages de démarrage solr suggèrent qu'il cherche dans ce répertoire

INFO: Opening new SolrCore at solr/, dataDir=./data/ 

Statistiques admin montrent pas de documents disponibles à Solr

Que dois-je regarder pour dépanner ce problème?

Merci,

Gene

+0

avez-vous copié le solrconfig.xml et schema.xml ainsi? –

Répondre

0

(j'ai posté la question initiale avant d'avoir créé un compte stackoverflow et ne peut pas comprendre comment modifier l'original, d'où un deuxième poste plutôt que d'une modification ou d'un comment, désolé pour la confusion.)

Oui, j'ai copié le répertoire solr entier, puis édité le fichier solrconfig.xml pour pointer vers le deuxième emplacement d'index. Au démarrage, les deux instances solr indiquent les emplacements dataDir corrects.

+0

Pas d'erreurs du tout dans le journal? Il n'y a pas de fichiers cachés non? (ie essayez ls -a) –

+0

Il s'avère que c'était ma stupidité (qui était l'hypothèse de fonctionnement tout le long): J'ai spécifié l'emplacement d'index dans le fichier solrconfig.xml comme ./data plutôt que ./solr/data parce que j'ai copié à partir du commentaire ci-dessus. –

3

J'ai trouvé qu'il est beaucoup plus facile d'utiliser Solr's built-in Replication API plutôt que de copier des fichiers d'index sur le système de fichiers.

Créez un nouveau noyau vide sur votre machine esclave. Ensuite, demandez à ce core de répliquer à partir du maître existant à l'aide de la commande fetchindex. Solr s'occupera de tout le reste du travail de levage pour vous.

Par exemple, vous finirez avec quelque chose d'URL comme ceci:

http://slave_host:port/solr/corename/replication?command=fetchindex&masterUrl=http://master_host:port/solr/corename/replication

+0

Cela a l'air bien, et je me suis rendu compte que je dois activer cela dans le solrconfig.xml sur les deux, y compris en disant au maître de répliquer après la validation. Je suis cependant coincé à obtenir que l'esclave ait une ancienne "version" de telle sorte qu'elle sera réellement fetchindex, car elle a été lancée après le maître et son horodatage est plus récent.Les nouveaux commits maîtres semblent seulement dépasser les chiffres "millisecondes" dans leur numéro de version. Des conseils? (Solr 1.4) – mrooney

+0

Bon, l'astuce pour moi était de mettre le maître dans le XML esclave au lieu de le spécifier comme un paramètre d'URL, et ensuite d'utiliser command = fetchindex. Merci! – mrooney