Skip to content

Decision: Mapping of OpenSearch node types to roles #8

@siegfriedweber

Description

@siegfriedweber

OpenSearch node types

An OpenSearch node (instance) can take one or several of the following node types:

  • Cluster manager
  • Cluster manager eligible
  • Data
  • Ingest
  • Coordinating
  • Dynamic
  • Warm
  • Search

see https://docs.opensearch.org/docs/latest/tuning-your-cluster/#nodes

A typical cluster only contains some node types and some nodes consist of several types, e.g.

  • 3 nodes of type ["Cluster manager"]
  • 8 nodes of type ["Data", "Ingest", "Coordinating"]

Proposed solution

Every node type is modelled as a separate role, but extra types per role can be defined on role or role-group level, e.g.

---
apiVersion: opensearch.stackable.tech/v1alpha1
kind: OpenSearchCluster
metadata:
  name: opensearch
spec:
  clusterManager: # implicit node type "Cluster manager"
    roleGroups:
      default:
        replicas: 3
  data: # implicit node type "Data"
    extraNodeTypes: # set the node types of the role-groups to ["Data", "Ingest", "Coordinating"]
      - ingest
      - coordinating
    roleGroups:
      hot:
        replicas: 2
      warm:
        extraNodeTypes: # set the node type of the role-group to ["Data", "Ingest", "Coordinating", "Warm"]
          - warm
        replicas: 6

Advantages:

  • Role and role-group configurations are similar to the other operators.

Disadvantages:

  • In a typical setup, extraNodeTypes must be defined.

Alternative solution

There is only the role "nodes" with the implicit types ["Cluster manager eligible", "Data", "Ingest", "Coordinating']. The node types can be overriden at the role-group level:

---
apiVersion: opensearch.stackable.tech/v1alpha1
kind: OpenSearchCluster
metadata:
  name: opensearch
spec:
  nodes: # implicit node types ["Cluster manager eligible", "Data", "Ingest", "Coordinating']
    roleGroups:
      clusterManager:
        nodeTypes: # overrides the implicit node types
          - clusterManager
        replicas: 3
      dataHot:
        nodeTypes: # overrides the implicit node types
          - data
          - ingest
          - coordinating
        replicas: 2
      dataWarm:
        nodeTypes: # overrides the implicit node types
          - data
          - ingest
          - coordinating
          - warm
        replicas: 6

Advantages:

  • Simple clusters work out of the box without the need to configure node types.
  • The configuration is closer to the Helm chart where node types are configured via node.roles.

Disadvantages:

  • The role/role-group configuration is different to other operators.
  • Configurations at the role level are not as useful as in the proposed solution.
  • Role-groups should be named more carefully, e.g. the role-group names of data nodes should contain the term "data".

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions