solr:index

SOLR: Wat is het

Solr is een searchengine uit de apache stal, die binnen tomcat draait. NPO-ICT biedt de mogelijkheid solr te draaien door het aanbieden van een tomcat instantie. Om een werkende backup te hebben dient u aan onderstaande procedure te voldoen.

Backup

Solr slaat al zijn geindexeerde gegevens op in index files. Deze staan over het algemeen in /e/ap/<site>/data/(subdir)/index als een serie bestanden. Op deze bestanden kunnen constant wijzigingen plaatsvinden wat een backup problematisch maakt. Alleen wanneer alle bestanden interne consistency hebben zal een backup zinnig zijn. Zoniet, dan levert een restore een defecte applicatie op. Door de constante wijzigingen is een normale filesysteem backup dus niet geschikt.

Solr biedt zelf de mogelijkheid om snapshots te creeren. Wanneer dit op de juiste wijze gedaan wordt is zo'n snapshot intern consistent en dus geschikt voor de backup. De solr config biedt de mogelijkheid om zo'n snapshot te maken als post-commit of post-optimize event. Door het als een post-* event in te stellen zorg je er voor dat solr niets wijzigt aan de index files wanneer het snapshot gemaakt wordt.

Om de snapshots goed in te stellen zijn 3 zaken nodig: de scripts, configuratie en cronjobs

Met solr worden diverse commandline scripts meegeleverd welke in de scr/scripts directory staan. Deze scripts moeten op een plek die voor solr toegankelijk is neergezet worden. Bijvoorbeeld in /e/ap/<site>/web-app/WEB-INF/bin

In solrconfig.xml moet de post-optimize configuratie opgenomen worden. De keuze is hier op post-optimize gevallen omdat dit normaal gesproken alleen handmatig uitgevoerd wordt en niet automatisch. Hierdoor blijft het aantal snapshots onder controle. Het staat de developer vrij om op andere wijze de snapshots te genereren.

In de Update Handler sectie moet de volgende code toegevoegd worden:

<listener event="postOptimize" class="solr.RunExecutableListener">
      <str name="exe">snapshooter</str>
      <str name="dir">solr/bin</str>
      <bool name="wait">true</bool>

Hierin is snapshooter een van de hierboven genoemde scripts. De “dir” moet verwijzen naar de plaats waar het script staat. snapshooter maakt een snaphost aan van de index in de directory waar ook index staat.

Voor het correct functioneren zijn 2 cronjobs benodigd. Een cronjob voor het aanmaken van de snapshots en een tweede voor het opruimen van oude snapshots. Hiervoor zijn eveneens kant en klare scripts beschikbaar in het hierboven beschreven setje scripts: “abo” voor het aanmaken van de snapshots en “backupcleaner” voor het weer opruimen.

Een crontab zou er als volgt uit kunnen zien:

MAILTO="developer@bedrijf.nl"
0 22 * * * /e/ap/<site>/web-app/WEB-INF/bin/abo -h avro1aas -p 
0 23 * * * /e/ap/<site>/web-app/WEB-INF/bin/backupcleaner -D 1

De eerste entry creert elke dag om 22:00 een nieuw snapshot, de tweede entry verwijderd elke dag om 23:00 alle snapshots ouder dan 1 dag. Aangezien NPO-ICT elke dag backups maakt is het niet noodzakelijk om snapshots langer dan 1 dag te bewaren.

  • solr/index.txt
  • Last modified: 2020/10/17 11:12
  • (external edit)