Installation von verteiltem Solr 4 mit Fabric
Die neueste Version dieses Dokuments finden Sie auf github.com/Lucidworks/solr-fabric Solr 4 verfügt über eine Untergruppe von Funktionen, die den Betrieb…
Die neueste Version dieses Dokuments finden Sie auf github.com/Lucidworks/solr-fabric
Solr 4 verfügt über eine Untergruppe von Funktionen, die den Betrieb in einem verteilten, fehlertoleranten Cluster ermöglichen, der als „SolrCloud“ bezeichnet wird. Die Installation und Konfiguration von Solr auf einem Cluster mit mehreren Knoten kann entmutigend wirken, wenn Sie ein Entwickler sind, der einfach nur die neueste Version ausprobieren möchte. Die Wiki-Seite ist lang und komplex, und die manuelle Konfiguration der Knoten ist mühsam und fehleranfällig. Und obwohl Ihr Betriebssystem über ZooKeeper/Solr-Pakete verfügt, sind diese wahrscheinlich veraltet. Aber es muss nicht viel Arbeit sein: In diesem Beitrag zeige ich Ihnen, wie Sie mit nur wenigen Befehlen einen Solr 4-Cluster einrichten und testen können. Dabei verwende ich Mechanismen, die Sie leicht für Ihre eigenen Einsätze anpassen können.
Ich verwende einen Cluster, der aus virtuellen Maschinen besteht, auf denen Ubuntu 12.04 64bit läuft, und ich steuere sie von meinem MacBook Pro aus. Die Solr-Konfiguration wird das Beispiel des Two shard cluster mit shard replicas und zookeeper ensemble aus dem Wiki nachahmen.
Sie können dies auf AWS EC2 ausführen, aber es gelten einige besondere Überlegungen, siehe Fußnote.
Wir verwenden Fabric, ein leichtgewichtiges Deployment-Tool, das im Grunde eine Python-Bibliothek ist, um Befehle auf entfernten Knoten über ssh auszuführen. Im Vergleich zu Chef/Puppet ist es einfacher zu erlernen und zu verwenden, und da es sich um einen imperativen Ansatz handelt, ist die sequentielle Orchestrierung von Abhängigkeiten eindeutiger. Am wichtigsten ist jedoch, dass kein separater Server oder eine separate Softwareinstallation auf den Knoten erforderlich ist.
HAFTUNGSAUSSCHLUSS: Diese Anleitung und die dazugehörigen Skripte sind unter der Apache-Lizenz veröffentlicht; die Verwendung erfolgt auf eigene Gefahr.
Ich empfehle Ihnen dringend, mit virtuellen Einwegmaschinen zu experimentieren.
Erste Schritte
Wenn Sie Fabric noch nicht installiert haben, befolgen Sie zunächst diese Fabric-Installationsanweisungen.
Um die Sache zu erleichtern, habe ich ein kleines Repository mit Beispielkonfigurationen und Skripten vorbereitet. Laden Sie dieses zuerst herunter:
[code language=“BASH“]
git clone https://github.com/Lucidworks/solr-fabric
cd solr-fabric
[/code]
Das wichtigste Skript hier ist die fabfile.py. Öffnen Sie es mit einem Editor und bearbeiten Sie die Host-Definition, um die Hostnamen-Konfiguration durch Ihre eigenen Hostnamen zu ersetzen:
[code language=“PYTHON“]
env.roledefs.update({
‚zookeeper‘: [ ‚vm110‘, ‚vm111‘, ‚vm112′ ],
’solr‘: [ ‚vm110‘, ‚vm111‘, ‚vm112‘, ‚vm113‘ ],
})
[/code]
Diese Hostnamen müssen von dem System, auf dem die Fabric läuft, und von den entfernten Knoten selbst auflösbar sein. In diesem Beispiel betreibe ich den ZooKeeper-Cluster und den Solr-Cluster auf denselben Rechnern, aber Sie können auch andere Rechner verwenden, wenn Sie möchten. Sie benötigen jedoch unterschiedliche Rechner für jeden Knoten im ZooKeeper- und Solr-Cluster.
Die Datei fabfile.py enthält verschiedene Python-Methoden, die Aufgaben darstellen, die auf den entfernten Knoten ausgeführt werden. Der Code ist leicht zu lesen. Schauen Sie sich also den Code an, wenn Sie diese Befehle ausführen, um zu sehen, was sie im Hintergrund tun.
Die Zielknoten sind frische Ubuntu 12.04-Installationen; die Abhängigkeiten werden nach und nach installiert.
Um Ihre Konfiguration zu testen, führen Sie aus:
[code language=“BASH“]
fab test_ssh
[/code]
der einen einfachen „Hostname“-Befehl auf allen Ihren Knoten ausführt. Als nächstes testen Sie, ob Sie alle Rechner in Ihren Rollen von allen Knoten aus anpingen können:
[code language=“BASH“]
fab test_ping
[/code]
Wenn das funktioniert, sollten Sie startklar sein.
Um die Aufforderung zur Eingabe von Passwörtern zu unterbinden, müssen Sie ssh ohne Passwort verwenden. Sie können dies manuell tun, wenn Sie dies bevorzugen, oder diese Aufgabe verwenden (passen Sie den Speicherort Ihres gewünschten öffentlichen Schlüssels an):
[code language=“BASH“]
fab copy_ssh_key_ssh_pub_key=~/.ssh/id_dsa.pub
[/code]
Danach sollte ein fab test_ssh funktionieren, ohne dass Sie nach Passwörtern gefragt werden.
Beachten Sie, dass die Skripte hier einige Befehle als root ausführen werden:
- Java und andere Abhängigkeiten mit apt zu installieren
- um Ubuntu Upstart-Skripte in /etc/init/ zu installieren und sie aufzurufen
Fabric fragt Sie nach dem Root-Passwort. Wenn Sie es vorziehen, sudo ohne Passwort zu verwenden, führen Sie aus:
[code language=“BASH“]
fab setup_sudoers
[/code]
Übrigens, wenn Sie einen zufälligen Befehl auf allen Knoten ausführen möchten, können Sie dies so tun:
[code language=“BASH“]
fab –roles all – ps -efl
[/code]
Java installieren
Solr erfordert Java. Wenn Sie dies bereits in Ihren VMs installiert haben (das sollten Sie!), überspringen Sie diesen Abschnitt.
Wir empfehlen das neueste Oracle Java. Die Installation unter Ubuntu ist ein wenig mühsam, da Sie die Oracle-Lizenzierung manuell akzeptieren müssen. Hier sehen wir, wie das Skripting mit Fabric eine Hilfe ist:
[code language=“BASH“]
fab install_oracle_java
fab java_version
[/code]
Der erste Befehl installiert Java auf all Ihren Knoten und kümmert sich in Ihrem Namen um die Lizenzierung. Der zweite Befehl gibt die Java-Version auf allen Knoten aus, so dass Sie überprüfen können, ob es funktioniert hat. Das war doch ganz einfach, oder?
Herunterladen von ZooKeeper und Solr
Laden Sie die ZooKeeper- und Solr-Distributionen auf Ihren lokalen Computer herunter:
[code language=“BASH“]
toller Download
[/code]
Installation von ZooKeeper
Als nächstes installieren Sie zookeeper:
[code language=“BASH“]
fab install_zookeeper
fab wait_for_zookeeper
[/code]
Dadurch wird die ZooKeeper-Verteilungsdatei auf Ihre Knoten hochgeladen, jeder der Knoten konfiguriert, gestartet und darauf gewartet, dass der Cluster einen Leader wählt.
Solr installieren
Und dann installieren Sie Solr:
[code language=“BASH“]
fab install_solr
fab wait_for_solr
[/code]
Dadurch wird die Solr-Distributionsdatei auf Ihre Knoten hochgeladen, jeder der Knoten konfiguriert, hochgefahren und gewartet, bis der Cluster bereit ist.
Sie können die Benutzeroberfläche von Solr Admin z.B. unter http://vm110.lan:8983/solr/#/~cloud einsehen (passen Sie Ihren Hostnamen an)
Daten laden
Wir laden die Solr-Daten exampledocs/books.json, die 4 Dokumente definieren:
[code language=“BASH“]
(fabric)mak@crab$ fab sample_data
[vm110] Ausführen der Aufgabe ’sample_data‘
[vm110] run: curl -sS ‚http://vm110:8983/solr/update/json?commit=true‘ –data-binary @books.json -H ‚Content-type:application/json‘
[vm110] out: {„responseHeader“:{„status“:0, „QTime“:175}}
[vm110] out:
Erledigt.
Trennen der Verbindung zu vm110… erledigt.
[/code]
nach dem Wort „monsters“ ab, was einen Treffer ergibt:
[code language=“BASH“]
(Stoff)mak@crab$ $ fab sample_query
[vm110] Aufgabe ’sample_query‘ wird ausgeführt
[localhost] local: curl -sS ‚http://vm110:8983/solr/select?q=name:monsters&wt=json&indent=true‘
{
„responseHeader“:{
„Status“:0,
„QTime“:2,
„params“:{
„Einzug“: „true“,
„q“: „name:monsters“,
„wt“: „json“}},
„Antwort“:{„numFound“:1, „start“:0, „docs“:[
{
„id“:“978-1423103349″,
„cat“:[„book“,
„Taschenbuch“],
„Name“: „Das Meer der Monster“,
„Autor“: „Rick Riordan“,
„author_s“: „Rick Riordan“,
„series_t“: „Percy Jackson und die Olympier“,
„sequenz_i“:2,
„genre_s“: „fantasy“,
„inStock“:true,
„Preis“:6.49,
„price_c“:“6.49,USD“,
„Seiten_i“:304,
„_version_“:1434957795244900352}]
}}
Erledigt.
[/code]
und fab sample_query_all gibt alle Dokumente zurück.
Sie können den Status der einzelnen Kerne mit anzeigen:
[code language=“BASH“]
fab display_status
[/code]
Alles entfernen
Um die Installation von den entfernten Rechnern zu entfernen:
[code language=“BASH“]
fab stop_solr
fab stop_zookeeper
fab uninstall
[/code]
Und wenn Sie Ihre Fabric entfernen möchten, installieren Sie sie lokal:
[code language=“BASH“]
rm -fr $HOME/fabric
[/code]
Nächste Schritte
Ich hoffe, dass dieser Beitrag Sie dazu inspiriert hat, SolrCloud auszuprobieren, und dass Sie die Leistungsfähigkeit von Fabric für die Automatisierung der Fernverwaltung schätzen gelernt haben. Sie können diesen Ansatz nutzen, um neue Funktionen in Solr auszuprobieren, nächtliche automatisierte Tests von Ihren CI-Systemen aus durchzuführen oder um sich mit Solr-Implementierungen vertraut zu machen, bevor Sie Ihre Produktionsimplementierung planen.
Für den Einsatz in der Produktion gibt es viele weitere Überlegungen, die in dieser Datei nicht berücksichtigt werden:
- Sie wollen vielleicht keine Installationen in einem Home-Verzeichnis, und Sie werden nicht aus dem Beispielverzeichnis herauslaufen wollen
- Ihre ZooKeeper-Knoten benötigen eine spezielle Konfiguration für Festplattenlayout, Protokollverwaltung und Speicher. Siehe das ZooKeeper Administratorhandbuch. Und wahrscheinlich möchten Sie sie auf separaten Rechnern betreiben.
- ähnliche Überlegungen gelten für Solr. Siehe den Apache Solr Reference Guide , der kürzlich von Lucidworks zur Verfügung gestellt wurde.
- müssen Sie Ihre Collections und Sharding berücksichtigen
- müssen Sie Host-basierte Firewall-Regeln berücksichtigen: Öffnen Sie Ports, so dass Solr-Knoten untereinander und mit ZooKeeper kommunizieren können und ZooKeeper zwischen seinen Knoten kommunizieren kann.
- müssen Sie die Integration in die Überwachung und Alarmierung Ihres Ops-Teams in Betracht ziehen.
- Sie müssen die Knoten berücksichtigen, die den Cluster verlassen/dem Cluster beitreten
usw.
Fußnoten
EC2 Überlegungen
Sie können dies auf AWS EC2 ausführen, aber beachten Sie:
- Sie müssen die Sicherheitsgruppen so einrichten, dass die ZooKeeper-Knoten über TCP auf den Ports 2181/2888/3888 miteinander kommunizieren können, die Solr-Knoten über 2181 mit ZooKeeper und die Solr-Knoten über 8983 miteinander kommunizieren können. Und erlauben Sie den TCP-Port 22 (ssh) Zugriff auf alle Knoten von Ihrer IP-Adresse aus.
- Solr registriert seine Knoten über IP-Adressen, die sich ändern, wenn Sie Ihre Instanzen stoppen/starten. Sie können dies vermeiden, indem Sie eine VPC verwenden. Siehe auch SOLR-4078.
- Sie werden kein Passwort für die Anmeldung benötigen, sondern Ihr Schlüsselpaar verwenden. Verwenden Sie ssh-add, um den Schlüssel zu Ihrem ssh-Agenten hinzuzufügen, oder konfigurieren Sie Ihre ~/.ssh/config so, dass sie Host-Einträge für Ihre Instanzen enthält und geben Sie den Schlüssel dort an. Sie können den Schritt fab copy_ssh_key auslassen.
- Stellen Sie sicher, dass Sie den Domänennamen Ihres Hosts in den roledefs konfigurieren, nicht die öffentliche IP-Adresse.