Node-Rollen jenseits von Master und Data: Ingest, ML, Coordinating und Transform verstehen
AI generated
_doc
_index
Elasticsearch / Cluster-Architektur
Node-Rollen jenseits von Master und Data
Ingest, Machine Learning, Coordinating und Transform im Detail

Ein Elasticsearch-Cluster besteht in den meisten Einführungen nur aus zwei Rollen: Master-Nodes, die den Cluster-Zustand verwalten, und Data-Nodes, die Shards speichern und Anfragen beantworten. Sobald ein Cluster wächst oder zusätzliche Arbeitslasten wie Ingest-Pipelines, Machine-Learning-Jobs oder kontinuierliche Transforms hinzukommen, reicht diese einfache Aufteilung nicht mehr aus. Elasticsearch kennt eine ganze Reihe weiterer, spezialisierter Node-Rollen, die jeweils eine bestimmte Aufgabe übernehmen und sich gezielt von der restlichen Cluster-Last isolieren lassen. Wer versteht, was Ingest-, Coordinating-Only-, Machine-Learning- und Transform-Nodes tatsächlich leisten und ab welcher Cluster-Größe eine dedizierte Trennung sinnvoll wird, kann Ressourcen gezielter zuweisen, Ausfälle besser eingrenzen und die Suchperformance eines Magento-Shops auch bei wachsendem Traffic stabil halten.

10 Min. Lesezeit Ingest-Pipelines im Cluster Coordinating-Only-Nodes Dedizierte Rollentrennung ab welcher Größe

1. Warum die einfache Master-plus-Data-Aufteilung an Grenzen stößt

In einem kleinen Cluster mit drei bis fünf Nodes übernimmt praktisch jeder Node alle Rollen gleichzeitig: Master-eligible, Data und implizit auch Ingest und Coordinating. Das funktioniert, solange die Gesamtlast überschaubar bleibt und ein einzelner Node genug Kapazität für alle Aufgaben mitbringt. Sobald jedoch zusätzliche Arbeitslasten wie aufwändige Ingest-Pipelines mit vielen Prozessoren oder rechenintensive Machine-Learning-Jobs hinzukommen, konkurrieren diese Aufgaben direkt mit der eigentlichen Suchanfrage um CPU, Heap und Netzwerkbandbreite auf denselben Nodes.

Das Ergebnis ist häufig eine schwer nachvollziehbare Performance-Degradation: Suchanfragen werden langsamer, obwohl sich am eigentlichen Suchindex nichts geändert hat, weil im Hintergrund ein Ingest-Pipeline-Lauf oder ein Machine-Learning-Job denselben Node auslastet. Eine gezielte Rollentrennung löst dieses Problem, indem sie unterschiedliche Arbeitslasten auf unterschiedliche, dedizierte Nodes verteilt, sodass ein überlasteter Ingest-Node niemals die Antwortzeit einer Produktsuche beeinflusst.

2. Ingest-Nodes: Pipelines direkt im Cluster verarbeiten

Ingest-Nodes führen Ingest-Pipelines aus, bevor ein Dokument tatsächlich indexiert wird: Sie können Felder umbenennen, Werte per Grok-Pattern aus unstrukturiertem Text extrahieren, Geodaten anreichern oder ganze Dokumente anhand von Bedingungen verwerfen. Diese Verarbeitung findet vollständig innerhalb des Clusters statt und ersetzt damit häufig eine externe Logstash- oder ETL-Schicht, die andernfalls vor der eigentlichen Indexierung notwendig wäre.

Bei einfachen Pipelines mit wenigen Prozessoren reicht es meist aus, dass jeder Data-Node implizit auch die Ingest-Rolle übernimmt. Sobald jedoch Pipelines mit vielen Prozessoren, aufwändigen Skript-Prozessoren oder hoher Dokumentenrate zum Einsatz kommen, lohnt sich die Auslagerung auf dedizierte Ingest-Nodes, damit die eigentliche Indexierung und Suche auf den Data-Nodes von dieser zusätzlichen CPU-Last verschont bleibt.


# elasticsearch.yml eines dedizierten Ingest-Nodes
node.name: es-ingest-01
node.roles: [ ingest ]

# Beispiel-Pipeline zur Attribut-Normalisierung vor der Indexierung
PUT _ingest/pipeline/produkt-attribute-normalisieren
{
  "processors": [
    { "lowercase": { "field": "farbe" } },
    { "trim": { "field": "hersteller" } },
    {
      "remove": {
        "field": "temp_import_flag",
        "ignore_missing": true
      }
    }
  ]
}

3. Coordinating-Only-Nodes: Anfragen bündeln ohne eigene Datenhaltung

Ein Coordinating-Only-Node hat keine der anderen Rollen aktiviert: kein Master, kein Data, kein Ingest. Seine einzige Aufgabe besteht darin, eingehende Suchanfragen entgegenzunehmen, sie an die zuständigen Data-Nodes weiterzuleiten, die Teilergebnisse der einzelnen Shards zusammenzuführen und das fertige Ergebnis an den Client zurückzugeben. Weil er selbst keine Shards hält, benötigt er keinen großen Heap für Datenhaltung, sondern vor allem ausreichend Speicher für das Zusammenführen und Sortieren vieler Teilergebnisse.

In der Praxis übernehmen bei kleinen Clustern die Data-Nodes diese Koordinationsaufgabe zusätzlich mit. Bei sehr breiten Fan-out-Queries, etwa Suchanfragen über sehr viele Shards oder Indizes gleichzeitig, kann ein dedizierter Coordinating-Only-Node jedoch als stabiler, vorhersagbarer Einstiegspunkt dienen, hinter dem sich die eigentliche Cluster-Topologie verbirgt, ähnlich einem Lastverteiler direkt innerhalb des Elasticsearch-Clusters.

4. Machine-Learning-Nodes: Ressourcenisolierung für ML-Jobs

Machine-Learning-Jobs, etwa zur Anomalieerkennung in Bestellzahlen oder zur automatischen Kategorisierung von Suchanfragen, sind speicher- und CPU-intensiv und laufen zeitlich unabhängig von normalen Suchanfragen. Ohne dedizierte Machine-Learning-Nodes konkurrieren diese Jobs mit der regulären Suchlast um denselben Heap, was bei einem plötzlichen Anstieg der Job-Aktivität zu spürbaren Verzögerungen bei ganz normalen Produktsuchen führen kann.

Die Machine-Learning-Rolle sorgt dafür, dass entsprechende Jobs ausschließlich auf Nodes mit dieser Rolle geplant werden, während Data- und Coordinating-Nodes davon vollständig unberührt bleiben. Für einen Magento-Betrieb mit klassischer Produktsuche ohne eigene Machine-Learning-Auswertungen ist diese Rolle meist nicht relevant, gewinnt aber an Bedeutung, sobald etwa Suchverhalten oder Traffic-Anomalien automatisiert ausgewertet werden sollen.

5. Transform-Nodes: kontinuierliche Aggregationen als eigene Rolle

Transforms erzeugen aus einem bestehenden Quellindex fortlaufend einen zweiten, bereits aggregierten Zielindex, etwa eine tägliche Zusammenfassung von Bestellungen pro Kategorie oder eine kontinuierlich aktualisierte Kennzahl zu den meistgesuchten Begriffen. Die Berechnung dieser Aggregationen läuft periodisch im Hintergrund und kann bei großen Quellindizes durchaus rechenintensiv sein.

Die Transform-Rolle bündelt diese Hintergrundlast auf eigenen Nodes, sodass ein aufwändiger Transform-Lauf niemals die Latenz einer regulären Suchanfrage beeinflusst. Gerade bei Reporting- oder Analytics-Anwendungsfällen rund um einen Magento-Shop, etwa einer eigenen internen Auswertung des Suchverhaltens, lohnt sich diese Trennung, sobald die Transform-Jobs regelmäßig und mit spürbarer Rechenlast laufen.

6. Ab welcher Cluster-Größe sich dedizierte Rollentrennung lohnt

Bei Clustern mit bis zu etwa fünf Nodes und moderater Last überwiegt meist der Verwaltungsaufwand einer strikten Rollentrennung den tatsächlichen Nutzen. Alle Nodes teilen sich Master-, Data- und implizite Ingest-Aufgaben, und die zusätzliche Betriebskomplexität separater Node-Typen steht in keinem sinnvollen Verhältnis zur gewonnenen Isolation.

Ab etwa sechs bis acht Nodes oder sobald erkennbare Ressourcenkonflikte zwischen unterschiedlichen Arbeitslasten auftreten, etwa spürbare Latenzspitzen während eines Ingest-Laufs, wird eine dedizierte Trennung sinnvoll. Als grobe Faustregel gilt: Zunächst dedizierte Master-Nodes einführen, sobald Cluster-Stabilität kritisch wird, danach bei Bedarf Coordinating-Only- oder Ingest-Nodes, und Machine-Learning- sowie Transform-Nodes erst, wenn die entsprechenden Funktionen tatsächlich aktiv und regelmäßig genutzt werden.

7. Praktische Topologie-Beispiele für Shops unterschiedlicher Größe

Ein kleiner Magento-Shop mit überschaubarem Katalog kommt oft mit drei Nodes aus, die jeweils alle Rollen kombinieren, ergänzt um eine einfache Ingest-Pipeline zur Attribut-Normalisierung direkt auf den Data-Nodes. Diese Topologie ist einfach zu betreiben und bietet für den erwarteten Traffic ausreichend Reserve.

Ein mittlerer bis großer Shop mit hohem Suchtraffic und zusätzlichen Auswertungen profitiert dagegen von einer klar getrennten Topologie: drei dedizierte Master-Nodes für Stabilität, mehrere reine Data-Nodes für Indexierung und Speicherung, zwei Coordinating-Only-Nodes als stabiler Suchzugang und ein separater Node mit Ingest- und Transform-Rolle für Attribut-Anreicherung und periodische Reports, ohne dass diese Hintergrundlast jemals die eigentliche Produktsuche beeinträchtigt.


# Beispiel-Topologie für einen mittleren bis großen Shop

# node.roles: [ master ]        -> drei dedizierte Master-Nodes
# node.roles: [ data, data_hot ] -> mehrere reine Data-Nodes
# node.roles: []                 -> zwei Coordinating-Only-Nodes
# node.roles: [ ingest, transform ] -> ein Node für Anreicherung und Reports

node.name: es-data-03
node.roles: [ data, data_hot ]
node.attr.zone: eu-central-1a

8. Rollen-Konfiguration in elasticsearch.yml und Node-Attribute

Die Rollenzuweisung erfolgt über die Einstellung node.roles in der elasticsearch.yml jedes einzelnen Nodes, als Liste der aktivierten Rollen wie master, data, ingest, ml oder transform. Ein Coordinating-Only-Node erhält bewusst eine leere Liste, wodurch keine der spezialisierten Rollen aktiv ist.

Zusätzlich lassen sich über benutzerdefinierte Node-Attribute, etwa eine Zone- oder Hardware-Kennzeichnung, gezielte Shard-Zuweisungen und Ausschlüsse steuern, sodass sich Rollentrennung und physische oder virtuelle Verteilung auf Racks, Availability-Zones oder Hardware-Klassen kombinieren lassen. Diese Kombination ist besonders relevant, wenn Ingest- oder Machine-Learning-Nodes bewusst auf Instanzen mit anderem CPU-zu-Speicher-Verhältnis laufen sollen als die eigentlichen Data-Nodes.

9. Monitoring und Fallstricke bei gemischten Rollen

Ein häufiger Fallstrick ist die versehentliche Vermischung von Rollen auf Nodes mit begrenztem Heap, etwa wenn ein kleiner Data-Node zusätzlich die Machine-Learning-Rolle erhält und dadurch regelmäßig an seine Speichergrenze stößt. Die Node-Stats-API zeigt pro Node auf, wie stark Heap, CPU und Thread-Pools durch die jeweiligen Rollen ausgelastet sind, und liefert damit die Grundlage für fundierte Trennungsentscheidungen.

Ebenso wichtig ist die Beobachtung der Thread-Pools write, search und der Ingest-spezifischen Pools getrennt voneinander: Steigen die Warteschlangen eines bestimmten Pools kontinuierlich an, während andere Pools ruhig bleiben, ist das ein klares Signal dafür, dass genau diese Arbeitslast von den übrigen Rollen isoliert werden sollte, statt pauschal die gesamte Cluster-Kapazität zu erhöhen.

Rolle Aufgabe Ressourcenprofil Typische Node-Anzahl
Master Cluster-Zustand verwalten, Wahlprozesse koordinieren Wenig Heap, geringe CPU-Last 3 dedizierte Nodes ab mittlerer Clustergröße
Data Shards speichern, Indexierung und Suche ausführen Hoher Heap- und Speicherbedarf Je nach Datenvolumen skalierend
Ingest Pipelines vor der Indexierung ausführen CPU-intensiv bei komplexen Pipelines 1 bis 2 Nodes bei aufwändigen Pipelines
Coordinating-Only Anfragen bündeln, Teilergebnisse zusammenführen Moderater Heap für Ergebnis-Merging 2 Nodes als stabiler Suchzugang
Machine Learning ML-Jobs isoliert ausführen Hoher Speicherbedarf bei aktiven Jobs Nur bei aktiver ML-Nutzung nötig
Transform Kontinuierliche Aggregationen berechnen CPU-intensiv bei großen Quellindizes 1 Node bei regelmäßigen Transform-Läufen

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

Node-Rollen in Elasticsearch: Das Wichtigste auf einen Blick

Ausgangsproblem

Master- und Data-Rolle allein reichen nicht aus, sobald Ingest-Pipelines, Machine-Learning-Jobs oder Transforms um dieselben Ressourcen konkurrieren.

Spezialisierte Rollen

Ingest-, Coordinating-Only-, Machine-Learning- und Transform-Nodes isolieren jeweils eine bestimmte Arbeitslast von der regulären Suche.

Faustregel zur Trennung

Dedizierte Master-Nodes zuerst, danach Coordinating-Only oder Ingest bei Bedarf, Machine-Learning und Transform erst bei tatsächlicher Nutzung.

Praxisrelevanz

Für kleine Magento-Shops reicht meist eine kombinierte Rolle, größere Shops mit hohem Traffic profitieren von klar getrennten Node-Typen.

11. FAQ: Node-Rollen in Elasticsearch: Das Wichtigste auf einen Blick

1Was unterscheidet einen Ingest-Node von einem klassischen Data-Node?
Ein Ingest-Node führt Pipelines aus, die Dokumente vor der eigentlichen Indexierung transformieren, während ein Data-Node die fertigen Dokumente als Shards speichert und durchsucht.
2Wofür wird ein Coordinating-Only-Node eingesetzt?
Er nimmt Suchanfragen entgegen, verteilt sie an die zuständigen Data-Nodes und führt die Teilergebnisse zusammen, ohne selbst Shards zu speichern.
3Braucht jeder Magento-Shop dedizierte Machine-Learning-Nodes?
Nein, diese Rolle ist nur relevant, wenn tatsächlich Machine-Learning-Jobs wie Anomalieerkennung im Cluster aktiv genutzt werden.
4Was macht die Transform-Rolle konkret?
Sie berechnet fortlaufend aggregierte Zielindizes aus einem Quellindex, etwa für Reporting oder Analytics, und isoliert diese Rechenlast von der Suche.
5Ab wie vielen Nodes lohnt sich eine dedizierte Rollentrennung?
Als Faustregel ab etwa sechs bis acht Nodes oder sobald spürbare Ressourcenkonflikte zwischen unterschiedlichen Arbeitslasten auftreten.
6Wie wird die Rolle eines Nodes konfiguriert?
Über die Einstellung node.roles in der elasticsearch.yml des jeweiligen Nodes, als Liste der gewünschten Rollen.
7Wie sieht die Konfiguration eines Coordinating-Only-Nodes aus?
Er erhält eine leere node.roles Liste, wodurch keine der spezialisierten Rollen wie master, data oder ingest aktiv ist.
8Welche Kennzahlen helfen bei der Entscheidung zur Rollentrennung?
Die Node-Stats-API zeigt Heap-, CPU- und Thread-Pool-Auslastung pro Node und macht Ressourcenkonflikte zwischen Rollen sichtbar.
9Können Ingest- und Transform-Rolle auf demselben Node kombiniert werden?
Ja, das ist möglich und bei moderater Last auch sinnvoll, solange beide Arbeitslasten zusammen nicht den verfügbaren Heap überlasten.
10Was ist der größte Fallstrick bei gemischten Node-Rollen?
Eine unbeabsichtigte Kombination von speicherintensiven Rollen wie Data und Machine Learning auf demselben, zu klein dimensionierten Node.