Verwendung von Elasticsearch mit eZ Platform Cloud

Verwendung von Elasticsearch mit eZ Platform Cloud

Mit eZ Platform v3.1 erhält die Enterprise Edition Unterstützung für Elasticsearch. Die Suchmaschine ist eine Alternative zur Suchmaschine Solr, die seit 2015 von eZ Platform unterstützt wird. Beide Lösungen werden von eZ Platform Cloud, unserer vollständig integrierten Hosting-Umgebung, unterstützt.

eZ Platform Cloud ist ein PaaS (kurz für Platform as a Service), was bedeutet, dass alle benötigten Serverprozesse automatisch verwaltet werden. Dabei behält man die volle Kontrolle über die Codebasis und damit auch über die Konfiguration der eZ Platform Cloud. Dieser Ansatz wird auch als Infrastruktur als Code bezeichnet und ermöglicht die einfache Bereitstellung von verwalteten Services aus einem Katalog.

Für eZ Platform Cloud umfasst der Servicekatalog seit einigen Jahren Elasticsearch. Mit der Einführung von eZ Platform v3.1 und der Unterstützung von Elasticsearch ist die Bereitstellung von Elasticsearch auf der eZ Platform Cloud eine Frage der Konfiguration. Alle erforderlichen Änderungen und Details sind in der eZ Platform Elasticsearch-Dokumentation und der eZ Platform Cloud Elasticsearch-Dokumentation verfügbar.

Konfigurieren von Elasticsearch zur Ausführung auf der eZ Platform Cloud

Alle für die Bereitstellung erforderlichen Änderungen werden in der Versionskontrolle (d.h. im Git-Repository) gespeichert. Wir müssen Änderungen sowohl an der Service-Konfiguration vornehmen, um den Elasticsearch-Service zu aktivieren, als auch an der Anwendungskonfiguration, damit Elasticsearch als Backend verwendet werden kann.

Es empfiehlt sich, zuerst den Dienst zu aktivieren und sicherzustellen, dass er betriebsbereit ist, bevor die Anwendungskonfiguration geändert wird. Bevor Änderungen vorgenommen werden, sollte eine neue Umgebung für die Entwicklung und das Testen der Konfiguration vor einem Produktionseinsatz geschaffen werden. Anschließend wird der Elasticsearch-Dienst zunächst in der Konfigurationsdatei .platform/services.yaml hinzugefügt:

elasticsearch:
    type: elasticsearch:7.7
    disk: 512

Aus den obigen Ausführungen geht hervor, dass eZ Platform Cloud eine Instanz von Elasticsearch (Version 7.7) mit 512 Megabyte Festplattenspeicher bereitstellen soll. Die Anforderungen an Version und Festplattenspeicherplatz ändern sich je nach der eZ Platform Version und der Größe der Daten der Anwendung. Dies kann in Zukunft geändert werden.

Als nächstes muss der Service für eZ Platform zugänglich gemacht werden. Die Datei .platform.app.yaml muss bearbeitet werden, und eine Relation zum Elasticsearch-Service im Konfigurationsblock Beziehungen hinzugefügt werden:

relationships:
    database: 'mysqldb:user'
    # ... more services depending on your configuration
    essearch: "elasticsearch:elasticsearch"

Wenn diese Änderungen lokal durchgeführt werden, können Aktualisierungen auf das entfernte Repository übertragen werden. Am Ende des Protokolls befindet sich eine Liste der bereitgestellten Dienste. Die Ergebnisse sollten nun eine Elasticsearch enthalten:

Redeploying environment master
  # ... more deployment logs

  Opening environment
  Environment configuration
    app (type: php:7.3, size: S, disk: 3072)
    mysqldb (type: mariadb:10.4, size: S, disk: 1024)
    rediscache (type: redis:5.0, size: S)
    elasticsearch (type: elasticsearch:7.7, size: S, disk: 512)
    varnish (type: varnish:6.0, size: S)

Damit läuft der Service jetzt in der eZ Platform Cloud, aber er wird noch nicht von eZ Platform genutzt. Das liegt daran, dass noch keine Konfigurationsänderung an der Anwendung (eZ Platform) vorgenommen wurde. Dazu werden zwei Änderungen an der .env-Datei in unserem Projekt vorgenommen:

# eZ Platform Kernel
SEARCH_ENGINE=elasticsearch

# eZ Platform Elastic Search Engine
ELASTICSEARCH_DSN=http://essearch.internal:9200

Bei der ersten Konfiguration verwendet eZ Platform Elasticsearch als Such-Backend und der zweite Eintrag definiert den Endpunkt für den Service. Wenn die Konfigurationsänderungen in das Repository übertragen werden, führt der Build zu einer eZ Platform Installation, die Elasticsearch als Backend verwendet.

Schließlich muss die Elasticsearch-Laufzeitkonfiguration aktualisiert und der anfängliche Suchindex aufgefüllt werden. Im weiteren Verlauf werden die Aktualisierungen automatisch von eZ Platform durchgeführt. Hierzu wird eine SSH-Verbindung zur Umgebung geöffnet und die Konfigurations- und Reindexierungsbefehle ausgeführt:

web@app.0:~$ php bin/console ezplatform:elasticsearch:put-index-template

 [OK] Done.                                                                                                             

web@app.0:~$ php bin/console ezplatform:reindex
Re-indexing started for search engine: eZ Platform Elasticsearch Search Engine
Purging index...
Re-creating index for 17 items across 1 iteration(s), using a single (current) process:
 1/1 [============================] 100% 5 secs/5 secs
Finished re-indexing
web@app.0:~$ 

Nachdem sichergestellt ist, dass die Anwendung so funktioniert, wie in der Testumgebung, kann der Zweig mit dem Produktionszweig zusammengeführt und die Änderungen in die Produktion übernommen werden.

HINWEIS: Für die Entwicklung sollte eine lokale Instanz von Elasticsearch verwendet werden; der Endpunkt sollte auf eine andere Instanz zeigen. Alle .env-Werte können überschrieben werden, indem eine unversionierte .env.local-Datei hinzugefügt und die Konfigurationsoptionen von dort aus überschrieben werden: Überschreiben von Umgebungswerten über .env.local

Schlussfolgerung

Wie aus den obigen Ausführungen hervorgeht, ist die Implementierung von Elasticsearch als PaaS auf eZ Platform wie der eZ Platform Cloud problemlos möglich. Die Verwaltung der Services stellt sicher, dass man mit den neuesten Patches auf dem neuesten Stand bleibt, und Versions-Upgrades lassen sich problemlos mit den Umgebungen verwalten.

Es ist auch erwähnenswert, dass der Elasticsearch-Server nur von der lokalen Umgebung aus der Anwendungsinstanz verfügbar ist. Dies macht ihn unempfindlich gegen Datenverluste, die durch nachlässige Konfigurationspraktiken verursacht werden, die Elasticsearch-Server direkt dem öffentlichen Internet aussetzen.

Wenn jedoch zu Analyse- oder Debugging-Zwecken auf den Test der Elasticsearch-Daemonen der Produktionsinstanzen zugegriffen werden soll, kann dies auf sichere Weise über einen verschlüsselten SSH-Tunnel erfolgen. Dies kann nützlich sein, wenn Kibana genutzt werden soll, um Live-Daten aus dem Elasticsearch-Index zu untersuchen und zu visualisieren.

Elasticsearch ist nur eine von vielen Verbesserungen, die wir an der eZ Platform vorgenommen haben. Vollständige Details zu unserer neuesten Version im Blogbeitrag: Produkteinführung: Entdecken Sie eZ Platform v3.1

eZ Platform ist nun Ibexa DXP

Ibexa DXP wurde im Oktober 2020 veröffentlicht und ersetzt den Produktnamen eZ Platform. Damit einhergehend steht eine Weiterentwicklung der Technologie. Erfahren Sie mehr dazu in dem Blogpost Vorstellung der Ibexa DXP v3.2, um mehr über die DXP und den Produkten Ibexa Content, Ibexa Experience und Ibexa Commerce zu erfahren.

Vorstellung von Ibexa DXP 3.2

Weitere Insights