Blog_allgemein

Tipp – Solr ZooKeeper CLI / Neuer Artikel der Blogserie “SolrCloud – Tipps, Tricks und Pitfalls”

Johannes Brucher

Johannes Brucher

Wie bereits in einem vorangegangen Artikel “Tipp – Mehrere Collections in einer SolrCloud verwalten” angedeutet, bietet Solr die Möglichkeit mit dem ZooKeeper über eine im Solr integrierte Command Line API zu kommunizieren. Die Möglichkeiten, die uns hier geboten werden, möchte ich in diesem Beitrag näher beleuchten.

Mir der im Solr intergierten ZooKeeper CLI können relevante Operationen abgedeckt werden, wie beispielsweise das Verlinken von Solr Konfiguration, die im ZooKeeper verwaltet wird, mit einer Collection in SolrCloud. In der aktuellen Version werden folgende Parameter unterstützt:

  • cmd – Aktion, die durchgeführt werden soll; Folgende Aktionen sind derzeit definiert:
    • bootstrap
    • upconfig
    • downconfig
    • linkconfig
    • makepath
    • clear
  • collection – Name der Collection
  • confdir – Verzeichnis einer Solr Konfiguration
  • confname – Name der Konfiguration im ZooKeeper
  • runzk – Indikator, dass mit dem Solr eine interne ZooKeeper Instanz gestartet werden soll
  • solrhome – Solr home-Verzeichnis
  • zkhost – ZooKeeper-Adresse
  • help – Anzeige der Hilfe

In jeder Solr Distribution gibt es im Verzeichnis „examplecloud-scripts“ je ein Script für Windows (zkcli.bat) und für Linux (zkcli.sh), welches genutzt werden kann, um die einzelnen Aktionen durchzuführen. Nicht jede Aktion braucht alle der oben aufgeführten Parameter. Nachfolgend werden die einzelnen Möglichkeiten und die dafür notwendigen Parameter beschrieben. Hierbei nutze ich direkt die Konsole, man könnte jedoch auch die Parameter beim Aufruf der Skripte mit angeben.

bootstrap

Der bootstrap-Befehl sorgt dafür, dass alle Solr Konfigurationen, die im angegeben Solr home-Verzeichnis (z.B. c:solrHome) sind, im ZooKeeper unter dem Namen der Collection abgespeichert werden. Dies ist der initiale Schritt, um Solr an ZooKeeper zu koppeln.

java org.apache.solr.cloud.ZkCLI -cmd bootstrap -zkhost mk_mobil:9983 –solrhome c:solrHome
upconfig

Mit dem Befehl upconfig wird nur das Solr Konfigurations-Verzeichnis (z.B. c:solrConf) unter dem angegebenen Namen (z.B. solrConfColelction1) im ZooKeeper gespeichert. Diese Aktionen kann eingesetzt werden, um zum Beispiel einzelne Konfigurationen zu aktualisieren, wenn sich ein oder mehrere Felder geändert haben.

java org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost mk_mobil:9983 -confdir c:solrConf -confname solrConfColelction1
downconfig

Der Befehl downconfig bewirkt das Gegenteil zu upconfig Befehl. Die im ZooKeeper hinterlegte Solr Konfiguration (z.B. solrConfCollection2) wird lokal in einem Verzeichnis (z.B. c:solrConfTest) abgelegt.

java org.apache.solr.cloud.ZkCLI -cmd downconfig -zkhost mk_mobil:9983 -confdir c:solrConfTest -confname solrConfCollection2
linkconfig

Der Befehl linkconfig verbindet eine bereits im ZooKeeper vorhandene Solr Konfiguration (z.B. solrConf) mit einer weiteren Collection (z.B. collectionOne). Der typische Anwendungsfall ist die Aufnahme einer neuen Collection, die keine eigene Konfiguration hat und eine vorhandene Konfiguration nutzen soll.

java org.apache.solr.cloud.ZkCLI -cmd linkconfig -zkhost mk_mobil:9983 –collection collectionOne -confname solrConf
makepath

Mit makepath Befehl lässt sich ein leerer Knoten im ZooKeeper erstellen und ist das Gegenstück zu clear.

java org.apache.solr.cloud.ZkCLI -cmd makepath /zookeeperNode-zkhost mk_mobil:9983
clear

clear löscht den angegebenen Knoten aus dem ZooKeeper. Hiermit lassen sich beispielsweise veraltete Solr Konfigurationen entfernen.

java org.apache.solr.cloud.ZkCLI -cmd clear /zookeeperNode -zkhost mk_mobil:9983

Fazit

Mit der ZooKeeper CLI bietet Solr alle Möglichkeiten Konfigurationen, wie in einem Versionskontroll-System zu verwalten, und mit Collections zu verknüpfen. Downkonfig ist das Äquivalent zum Auschecken und upconfig bzw. bootstrap kann mit Einchecken verglichen werden. makepath und clear sind die rein technischen Pendants, um im ZooKeeper einen Knoten anzulegen.

Weiterführende Links