
Ich arbeite derzeit mit einer Magento Enterprise 1.12-Installation, die auf einem Paar geclusterter Apache-Webserver läuft. Beide meiner Webserver greifen auf ihre eigenen Datenbanken auf separaten Servern zu, die in einer Master-Master-MySQL-Konfiguration geclustert sind.
Mein Problem ist, dass ich versuche, Solr 3.6.1 einzuführen, und ich bin mir nicht sicher, wie ich es richtig zu meinem Cluster hinzufüge. Sollte ich eine Instanz von Solr einrichten können (vielleicht auf einem anderen Server) und beide Sites darauf verweisen, oder brauche ich eine eigenständige Instanz von Solr für beide Server? Muss ich zwei Instanzen von Solr irgendwie zusammen konfigurieren? Ich entschuldige mich, wenn ich nicht genügend Informationen bereitgestellt habe.
Antwort1
Sie sollten Solr auf einem Ihrer Server einrichten und in der Magento-Admin-Konfiguration Solr Server Hostname
die Adresse dieses Servers konfigurieren (wenn Sie keine separaten Domänennamen haben, fügen Sie dort die IP-Adresse ein) – da Sie über eine MySQL-Replikation verfügen, verwenden beide dieselbe Konfiguration.
Stellen Sie einfach sicher, dass der Hostname und der Port (z. B. 8080) von Ihrem zweiten Server aus zugänglich sind.
Antwort2
Slayer gab die grundlegende Antwort. Solr Run ist eine Java-App und läuft auf einem Java-Webserver wie Getty. Angenommen, Ihr Apache läuft auf Port 80, sollten Sie Ihr Netzwerk so konfigurieren, dass beide Webserver mit diesem Solr-Server kommunizieren können (unter Verwendung der echten IP-Adresse in Ihrer Magento-Konfiguration und natürlich nicht 127.0.0.1), aber niemand außerhalb des Netzwerks.
Darüber hinaus würde ich DAS als Sicherheit verwenden und nicht die httpauth-Authentifizierung, da wir auf Probleme gestoßen sind, bei denen es nicht funktioniert hat. Grundsätzlich sendet Magento bei einigen Vorgängen ohne Anmeldeinformationen einen Ping und schlägt fehl. Daher wird die eigentliche Abfrage MIT den Anmeldeinformationen nicht gesendet.
OK. Ein weiterer wichtiger Punkt ist die „Volltextindizierung“.
Ich habe hier eine lange Antwort auf Stack Overflowhttps://stackoverflow.com/questions/11667728/magento-1-12-and-solr-3-6-no-proper-results-and-no-spell-suggestions/12984270#12984270aber ich werde versuchen, mich kurz zu fassen.
Wenn Sie den Volltextindexer von der Shell aus über php shell/indexer.php --reindex-all catalogsearch_fulltext ausführen, funktioniert er nicht richtig. Es wird kein Ereignis ausgelöst. Führen Sie ihn also von der Benutzeroberfläche aus aus. Das ist jedoch ein Problem, da der Vorgang je nach Anzahl Ihrer Produkte mehr als 4 Stunden dauern wird. Eine schnelle Lösung besteht darin, das PHP-Timeout rund um die Volltextindexer-Funktionalität anzupassen. Denn natürlich sollten Ihre Apache-Timeouts kurz sein. Sie können weiterhin kurz sein, aber wenn das PHP-Timeout lang ist, sollte es weiter ausgeführt werden, auch wenn Apache eine tote Seite anzeigt.
Außerdem verpackt das neueste Magento den Volltextindexer-Code in eine Transaktion. Dies führt dazu, dass während der Ausführung und bei Suchvorgängen auf der Site ein „Warte-Sperr-Timeout“ in der Tabelle catalogsearch_query zurückgegeben wird. Wir haben die Transaktion entfernt, die ihn umhüllt, und alles war in Ordnung.