# US 12,113,855 B2 · Node clustering configuration

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,113,855 B2
- Document ID: US12113855B2
- Status: Granted
- Kind: B2
- Application number: 17/373,547
- Filed: 2021-07-12
- Published: 2021-11-04
- Granted: 2024-10-08
- Earliest claimed: 2019-10-31
- Assignees: Elasticsearch B.V.
- Applicants: Elasticsearch B.V.
- Inventors: Yannick Welsch; David Christopher Turner
- Web page: https://patentgrep.com/patent/US12113855B2

## CPC

- H04L 41/0853: by actively collecting configuration information or by backing up configuration information
- H04L 41/0668: by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
- H04L 41/0893: Assignment of logical groups to network elements
- H04L 67/1046: {Joining mechanisms}
- H04L 67/1051: {Group master selection mechanisms}
- H04L 67/1068: {Discovery involving direct consultation or announcement among potential requesting and potential source peers}
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- H04L 43/0805: by checking availability
- H04L 43/16: Threshold monitoring
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Node clustering configuration is disclosed herein. An example method includes determining nodes of a cluster, each of the nodes having a unique identifier and a cluster identifier for the cluster, determining a voting configuration for the cluster, the voting configuration defining a quorum of master-eligible nodes of the nodes, the voting configuration being adaptable so as to maintain an optimal level of fault tolerance for the cluster, adding and removing nodes that can change the voting configuration, configuring a cluster configuration through an API, and electing one of the master-eligible nodes as a master node.

## Claims

### Claim 1

A method to be performed by one or more computer processors in one or more nodes in a cluster, the method comprising:
determining a voting configuration for the cluster based on a cluster state and a voting configuration exclusions list, the exclusions list preventing a listed node from returning to the voting configuration, the voting configuration defining a quorum of master-eligible nodes of the nodes, the voting configuration being adaptable so as to maintain an optimal level of fault tolerance for the cluster, wherein reconfiguration is controlled through an Application Programming Interface;
establishing a fault tolerance level for the cluster, the fault tolerance level being determined as a number of nodes in the cluster compared to a number of nodes that can be lost from the cluster while the cluster maintains availability; and
electing one of the master-eligible nodes as a master node.

### Claim 2 (depends on 1)

The method according to claim 1, wherein reconfiguring the voting configuration comprises electing a new master node.

### Claim 3 (depends on 1)

The method according to claim 1 further comprising determining the cluster to be in an unavailable state when a number of nodes in the cluster falls below an available-node threshold.

### Claim 4 (depends on 1)

The method according to claim 1, wherein the cluster is divided into two or more portions that are not in communication with one another or communication within the cluster is disrupted, wherein the master node coordinates actions of the two or more portions.

### Claim 5 (depends on 1)

The method according to claim 1, wherein the step of electing is randomly scheduled to prevent two master-eligible nodes from initiating simultaneous elections.

### Claim 6 (depends on 1)

The method according to claim 1 wherein one or more of the master-eligible nodes is a voting-only master-eligible node.

### Claim 7 (depends on 1)

The method according to claim 1, wherein the voting configuration is initially established using cluster bootstrapping where a cluster identifier is stored by the nodes and an initial set of the nodes are selected to vote.

### Claim 8 (depends on 1)

The method according to claim 1, wherein the nodes in the cluster are configured to discover one another.

### Claim 9 (depends on 1)

The method according to claim 1, wherein the cluster is created when a threshold number of master-eligible nodes have been discovered, even when a portion of the nodes have not been fully resolved, wherein names of the portion of the nodes are added to the voting configuration.

### Claim 10 (depends on 1)

The method according to claim 1, further comprising reconfiguring the voting configuration when a change to the cluster occurs.

### Claim 11 (depends on 10)

The method according to claim 10, wherein reconfiguring includes selecting a best possible voting configuration which may exclude a portion of the nodes including a portion of the master-eligible nodes.

### Claim 12

A method to be performed by one or more computer processors in one or more nodes in a cluster, the method comprising:
bootstrapping the cluster by:
determining at least three master-eligible nodes;
resolving a list of names to persistent node IDs after discovery for the at least three master-eligible nodes;
allowing the master-eligible nodes to perform an automatic discovery process to create the cluster based on a cluster state and a voting configuration exclusions list, the exclusions list preventing a listed node from returning to a voting configuration; and
establishing an optimal level of fault tolerance for the cluster using the voting configuration, the fault tolerance level being determined as a number of nodes in the cluster compared to a number of nodes that can be lost from the cluster while the cluster maintains availability; and
reconfiguring the voting configuration based on a change to the cluster, the reconfiguring comprising updating the cluster state based on acceptance by a quorum in a current voting configuration and a quorum in a target voting configuration;
wherein the bootstrapping is invoked through an Application Programming Interface.

### Claim 13 (depends on 12)

The method according to claim 12, further comprising:
determining the voting configuration for the cluster, the voting configuration defining a quorum of the master-eligible nodes; and
electing a master node from the master-eligible nodes based on the voting configuration.

### Claim 14 (depends on 12)

The method according to claim 12 wherein the cluster includes nodes that are not master-eligible nodes, further wherein the master node is configured to manage a cluster index tracking which of the nodes are included in the cluster and deciding which shards to allocate to which of the nodes.

### Claim 15 (depends on 12)

The method according to claim 12, wherein there are an odd number of master-eligible nodes in the cluster.

### Claim 16 (depends on 12)

The method according to claim 12, further comprising determining the cluster to be in an unavailable state when a number of nodes in the cluster falls below an available-node threshold.

### Claim 17

A method of reconfiguring a cluster, the method to be performed by one or more computer processors in one or more nodes in the cluster, the method comprising:
selecting one or more nodes to be removed;
determining a count of master-eligible nodes in the cluster;
determining a number of master-eligible nodes within the one or more nodes to be removed;
removing the selected one or more nodes if the number of master-eligible nodes to be removed is less than half the count of master-eligible nodes in the cluster;
removing less than half of the count of master-eligible nodes in the selected one or more nodes if the number of master-eligible nodes to be removed is equal to or greater than half the count of master-eligible nodes in the cluster and auto-configuring the cluster; and
removing any remaining master-eligible nodes selected to be removed that have not been removed;
wherein nodes are added to or removed from the cluster using an Application Programming Interface.
