Cross-Cluster Search: verteilte Abfragen über mehrere Elasticsearch-Cluster
AI generated
_doc
_index
Elasticsearch / Verteilte Architektur
Cross-Cluster Search
verteilte Abfragen über mehrere Cluster hinweg

Wächst ein Unternehmen über mehrere Regionen oder Marken hinweg, entstehen oft mehrere eigenständige Elasticsearch-Cluster, die unabhängig voneinander betrieben, skaliert und aktualisiert werden. Cross-Cluster Search erlaubt es, eine einzelne Suchanfrage über die Grenzen dieser getrennten Cluster hinweg auszuführen, ohne die Daten vorher in einem gemeinsamen Cluster zusammenführen zu müssen. Für Betreiber mehrerer regional getrennter Magento-Instanzen mit jeweils eigenem Suchindex bedeutet das die Möglichkeit, eine zentrale, konzernweite Suche anzubieten, ohne die bestehende, bewusst getrennte Cluster-Topologie aufzugeben. Wie die Remote-Cluster-Konfiguration im Detail funktioniert, welche Latenz- und Konsistenz-Kompromisse dabei entstehen und wo die praktischen Grenzen liegen, entscheidet darüber, ob sich Cross-Cluster Search für den jeweiligen Anwendungsfall wirklich eignet.

11 Min. Lesezeit Sniff- und Proxy-Modus Regionale Shop-Cluster Cross-Cluster-API-Keys

1. Was Cross-Cluster Search ist und wofür es gedacht ist

Cross-Cluster Search, kurz CCS, erlaubt es einem koordinierenden Cluster, eine Suchanfrage nicht nur gegen die eigenen, lokalen Indizes auszuführen, sondern gleichzeitig auch gegen Indizes auf einem oder mehreren als remote registrierten Clustern. Aus Sicht des anfragenden Clients sieht das Ergebnis wie eine einzige, zusammengeführte Antwort aus, obwohl die zugrunde liegenden Daten physisch auf komplett getrennten Cluster-Installationen liegen, die unabhängig voneinander Master-Wahlen, Shard-Verteilung und Versionsupdates verwalten.

Der zentrale Anwendungsfall ist eine föderierte Suche über organisatorisch oder geografisch getrennte Datenbestände, ohne diese in einem einzigen, gemeinsamen Cluster konsolidieren zu müssen. Das ist besonders relevant, wenn regulatorische Vorgaben eine physische Datentrennung nach Region verlangen, gleichzeitig aber eine konzernweite Übersicht gewünscht ist.

2. Remote-Cluster-Konfiguration: Sniff- und Proxy-Modus

Ein Remote-Cluster wird über die Cluster-Settings-API oder direkt in der elasticsearch.yml registriert, wobei zwei Verbindungsmodi zur Auswahl stehen. Im Sniff-Modus verbindet sich der koordinierende Cluster zunächst mit einem oder mehreren angegebenen Seed-Nodes und ermittelt darüber automatisch weitere, für Cross-Cluster-Anfragen geeignete Nodes im entfernten Cluster.

Im Proxy-Modus dagegen läuft die gesamte Kommunikation über eine einzelne, konfigurierte Adresse, typischerweise einen Load Balancer oder Reverse Proxy vor dem entfernten Cluster, wodurch keine direkte Netzwerksicht auf einzelne Node-Adressen des entfernten Clusters notwendig ist. Für Setups mit strikter Netzwerksegmentierung zwischen Regionen ist der Proxy-Modus meist die praktikablere Wahl.


PUT _cluster/settings
{
  "persistent": {
    "cluster.remote": {
      "us_cluster": {
        "mode": "proxy",
        "proxy_address": "us-es-proxy.internal:9443"
      },
      "eu_cluster": {
        "mode": "sniff",
        "seeds": [ "eu-es-node-01.internal:9300" ]
      }
    }
  }
}

3. Ausführung einer Cross-Cluster-Query: Aufbau und Syntax

Eine Cross-Cluster-Anfrage unterscheidet sich syntaktisch kaum von einer gewöhnlichen Suchanfrage, der Indexname wird lediglich um den Cluster-Alias und einen Doppelpunkt ergänzt, etwa eu_cluster:produkte oder us_cluster:produkte. Mehrere Cluster und lokale Indizes lassen sich in derselben Anfrage kombinieren, sodass ein einzelner Suchaufruf sowohl lokale als auch entfernte Daten gleichzeitig durchsucht.

Intern zerlegt der koordinierende Cluster die Anfrage in Teilanfragen pro Cluster, sendet diese parallel an die jeweiligen Remote-Cluster und führt die zurückkommenden Teilergebnisse anschließend zu einer gemeinsamen, nach Relevanz sortierten Ergebnisliste zusammen, genau wie bei der Zusammenführung von Shard-Ergebnissen innerhalb eines einzelnen Clusters.


GET eu_cluster:produkte,us_cluster:produkte,produkte/_search
{
  "query": {
    "match": { "name": "wanderschuhe" }
  },
  "size": 20
}

4. Latenz-Trade-offs bei verteilten Abfragen

Jede Cross-Cluster-Anfrage ist grundsätzlich so langsam wie der langsamste beteiligte Remote-Cluster, da der koordinierende Cluster auf die Antworten aller angefragten Cluster warten muss, bevor er das Gesamtergebnis zurückgeben kann. Bei geografisch weit entfernten Clustern, etwa zwischen Europa und den USA, addiert sich allein die Netzwerklaufzeit spürbar zur eigentlichen Suchzeit hinzu.

Der Minimize-Roundtrips-Parameter reduziert die Anzahl der Netzwerk-Roundtrips, indem er mehr Verarbeitung auf den entfernten Clustern selbst ausführen lässt, verringert die Latenz bei weit entfernten Clustern aber nur begrenzt. Für latenzkritische, konzernweite Suchanfragen sollte deshalb realistisch mit einer spürbar höheren Antwortzeit gerechnet werden als bei einer rein lokalen Suche.

5. Konsistenz-Grenzen: kein globales Read-Consistency-Modell

Cross-Cluster Search bietet keine globale, clusterübergreifende Konsistenzgarantie. Jeder beteiligte Cluster liefert sein Ergebnis basierend auf seinem eigenen, lokalen Zustand zum Zeitpunkt der Anfrage, ohne dass eine übergreifende Synchronisation zwischen den Clustern stattfindet. Ändert sich ein Dokument in einem Remote-Cluster genau während eine Cross-Cluster-Anfrage läuft, kann das in einer inkonsistenten Momentaufnahme resultieren.

Für die meisten Suchanwendungsfälle ist dieses Verhalten unkritisch, weil Suche ohnehin selten transaktionale Konsistenz erfordert. Bei Anwendungsfällen, die auf exakte, sofort konsistente Zahlen angewiesen sind, etwa Bestandsabfragen in Echtzeit, sollte Cross-Cluster Search dagegen nicht als alleinige Datenquelle dienen.

6. Sicherheit: Cross-Cluster-API-Keys und Berechtigungen

Für produktive Setups empfiehlt sich statt der klassischen zertifikatsbasierten Remote-Cluster-Verbindung ein Cross-Cluster-API-Key, der gezielt auf einzelne Indizes und Berechtigungen des entfernten Clusters eingeschränkt werden kann. Damit erhält der koordinierende Cluster nur Zugriff auf genau die Indizes, die für die föderierte Suche tatsächlich freigegeben werden sollen, nicht auf den gesamten entfernten Cluster.

Diese granulare Rechtevergabe ist besonders wichtig, wenn getrennte Teams die beteiligten Cluster jeweils eigenständig betreiben, etwa unterschiedliche regionale Magento-Instanzen mit eigenen Betriebsverantwortlichen. Ein sauber eingeschränkter API-Key verhindert, dass eine zentrale Suchintegration versehentlich Zugriff auf Indizes erhält, die eigentlich nicht für die konzernweite Suche vorgesehen sind.


POST /_security/cross_cluster/api_key
{
  "name": "zentrale-suche-eu-cluster",
  "access": {
    "search": [
      { "names": [ "produkte*" ], "allow_restricted_indices": false }
    ]
  }
}

7. Praktischer Anwendungsfall: regional getrennte Shop-Cluster mit zentraler Suche

Ein Handelsunternehmen betreibt jeweils einen eigenständigen Elasticsearch-Cluster für die Magento-Instanzen in Deutschland, Frankreich und den USA, unter anderem aus Latenzgründen, aber auch wegen regulatorischer Vorgaben zur Datenhaltung. Für ein internes Team, das eine konzernweite Sicht auf Produktverfügbarkeit und Suchtrends benötigt, wäre eine vollständige Datenkonsolidierung in einem gemeinsamen Cluster unverhältnismäßig aufwändig und würde die bestehende regionale Trennung unterlaufen.

Cross-Cluster Search löst genau dieses Problem: Ein zentrales, internes Analyse-Tool registriert alle drei regionalen Cluster als Remote-Cluster und kann darüber eine gemeinsame Suche über alle drei Produktkataloge ausführen, während jede regionale Magento-Instanz selbst weiterhin ausschließlich gegen ihren eigenen, lokalen Cluster sucht und von der zusätzlichen Cross-Cluster-Last unberührt bleibt.

8. Skip-Unavailable und Fehlerbehandlung bei nicht erreichbaren Clustern

Ist ein registrierter Remote-Cluster zum Zeitpunkt einer Anfrage nicht erreichbar, entscheidet die Einstellung skip_unavailable pro Cluster darüber, wie sich die Gesamtanfrage verhält. Ist sie auf true gesetzt, liefert die Anfrage weiterhin ein Ergebnis aus den erreichbaren Clustern, ergänzt um einen Hinweis auf den übersprungenen Cluster, statt komplett fehlzuschlagen.

Ist skip_unavailable dagegen auf false gesetzt, dem Standardwert, schlägt die gesamte Anfrage fehl, sobald auch nur ein beteiligter Cluster nicht erreichbar ist. Für eine konzernweite Suche, bei der ein einzelner, temporär nicht erreichbarer Regional-Cluster nicht die gesamte Funktion lahmlegen soll, ist die Konfiguration auf true in den meisten Fällen die robustere Wahl.

9. Grenzen und wann sich Cross-Cluster Search nicht lohnt

Cross-Cluster Search ersetzt keine Datenkonsolidierung, wenn tatsächlich eine gemeinsame, konsistente Datenbasis mit einheitlichem Relevanz-Scoring über alle Regionen hinweg benötigt wird, etwa weil unterschiedliche Cluster leicht unterschiedliche Mapping- oder Analyzer-Konfigurationen verwenden und dadurch Scores nicht direkt vergleichbar sind.

Auch bei sehr latenzkritischen, häufig wiederholten Anfragen, etwa der Live-Suche direkt im Storefront, ist Cross-Cluster Search selten die richtige Wahl, weil die zusätzliche Netzwerklaufzeit zwischen den Clustern spürbar wird. Für interne, seltener ausgeführte, konzernweite Auswertungen und Reports ist der Ansatz dagegen gut geeignet, ohne die operative Trennung der regionalen Cluster aufzugeben.

Aspekt Lokale Suche Cross-Cluster Search Praxisrelevanz
Datenhaltung Ein gemeinsamer Cluster Mehrere eigenständige Cluster Erhält bestehende regionale Trennung
Latenz Nur lokale Netzwerklaufzeit Zusätzliche Laufzeit zum langsamsten Remote-Cluster Ungeeignet für sehr latenzkritische Live-Suche
Konsistenz Einheitlicher Cluster-Zustand Unabhängige Momentaufnahmen pro Cluster Nicht für exakte Echtzeitbestände geeignet
Berechtigungen Ein einheitliches Rollenmodell Gezielte Cross-Cluster-API-Keys pro Cluster Erlaubt getrennte Team-Verantwortlichkeiten
Typischer Einsatz Storefront-Suche Konzernweite Reports und Analysen Ergänzung, kein Ersatz für lokale Suche

Mironsoft

Suchindex-Setup, Relevanz-Tuning und Magento-Suche

Magento-Suche, die die falschen Produkte zuerst zeigt?

Wir richten Elasticsearch oder OpenSearch für Magento sauber ein, tunen Relevanz und Facetten auf das tatsächliche Sortiment und optimieren Indexierungsprozesse für große Kataloge.

Relevanz-Tuning

Suchergebnisse und Facetten auf die tatsächlichen Kundenbedürfnisse abstimmen.

Such-Migration

Umstieg von Solr oder MySQL-Suche auf Elasticsearch/OpenSearch sauber begleiten.

Index-Performance

Indexierungsprozesse für große Kataloge zuverlässig und performant gestalten.

10. Zusammenfassung

Cross-Cluster Search: Das Wichtigste auf einen Blick

Grundidee

Cross-Cluster Search führt eine Suchanfrage über mehrere eigenständige, als remote registrierte Cluster hinweg aus, ohne die Daten physisch zu konsolidieren.

Verbindungsmodi

Sniff-Modus ermittelt Remote-Nodes automatisch über Seed-Nodes, Proxy-Modus läuft über eine einzelne, zentrale Adresse und eignet sich besser für segmentierte Netzwerke.

Trade-offs

Latenz orientiert sich am langsamsten beteiligten Cluster, eine globale, clusterübergreifende Konsistenzgarantie existiert nicht.

Praxisrelevanz

Gut geeignet für konzernweite Reports über regional getrennte Shop-Cluster, weniger geeignet für sehr latenzkritische Live-Suche im Storefront.

11. FAQ: Cross-Cluster Search: Das Wichtigste auf einen Blick

1Was ist der Unterschied zwischen Cross-Cluster Search und Cross-Cluster Replication?
Cross-Cluster Search führt Anfragen live über mehrere Cluster aus, während Cross-Cluster Replication Daten dauerhaft von einem Leader- zu einem Follower-Cluster synchronisiert.
2Wie wird ein Remote-Cluster registriert?
Über die Cluster-Settings-API oder die elasticsearch.yml, mit Angabe eines Cluster-Alias sowie entweder Seed-Nodes im Sniff-Modus oder einer Proxy-Adresse im Proxy-Modus.
3Wie unterscheidet sich der Sniff- vom Proxy-Modus?
Sniff-Modus ermittelt Remote-Nodes automatisch über angegebene Seed-Nodes, Proxy-Modus leitet die gesamte Kommunikation über eine einzelne, konfigurierte Adresse.
4Wie sieht die Syntax für eine Cross-Cluster-Anfrage aus?
Der Indexname wird um den Cluster-Alias und einen Doppelpunkt ergänzt, etwa eu_cluster:produkte, wobei sich mehrere Cluster in einer Anfrage kombinieren lassen.
5Bietet Cross-Cluster Search eine globale Konsistenzgarantie?
Nein, jeder beteiligte Cluster liefert sein Ergebnis basierend auf seinem eigenen, lokalen Zustand ohne übergreifende Synchronisation.
6Wie wird der Zugriff auf entfernte Cluster abgesichert?
Über Cross-Cluster-API-Keys, die gezielt auf einzelne Indizes und Berechtigungen des entfernten Clusters eingeschränkt werden können.
7Was passiert, wenn ein Remote-Cluster nicht erreichbar ist?
Die Einstellung skip_unavailable entscheidet pro Cluster, ob die Gesamtanfrage mit einem Teilergebnis fortfährt oder komplett fehlschlägt.
8Für welchen Anwendungsfall eignet sich Cross-Cluster Search bei Magento-Shops besonders gut?
Für konzernweite Auswertungen über regional getrennte Shop-Cluster hinweg, ohne die bestehende regionale Datentrennung aufzugeben.
9Warum ist Cross-Cluster Search für die Live-Suche im Storefront meist ungeeignet?
Weil die zusätzliche Netzwerklaufzeit zum langsamsten beteiligten Cluster die Antwortzeit spürbar erhöht.
10Können Relevanz-Scores zwischen unterschiedlichen Clustern direkt verglichen werden?
Nur eingeschränkt, weil unterschiedliche Mapping- oder Analyzer-Konfigurationen zwischen Clustern zu nicht direkt vergleichbaren Scores führen können.