# US 11,122,118 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 11,122,118 B2
- Document ID: US11122118B2
- Status: Granted
- Kind: B2
- Application number: 16/670,763
- Filed: 2019-10-31
- Published: 2021-05-06
- Granted: 2021-09-14
- 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/US11122118B2

## 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, and electing one of the master-eligible nodes as a master node.

## Claims

### Claim 1

A method, comprising:
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 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;
electing one of the master-eligible nodes as a master node; and
performing a shut-down state operation prior to committing to the master node election in response to determining an unsafe operation.

### 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 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.

### Claim 4 (depends on 3)

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

### Claim 5 (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 6 (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 7 (depends on 6)

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

### Claim 8 (depends on 1)

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

### Claim 9 (depends on 1)

The method according to claim 1, wherein the master-eligible nodes utilize storage that persists across restarts.

### Claim 10 (depends on 1)

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

### Claim 11 (depends on 1)

The method according to claim 1, wherein the cluster is created when a threshold number of the 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 12 (depends on 1)

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

### Claim 13 (depends on 12)

The method according to claim 12, 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 14

A method, comprising:
bootstrapping a cluster by
determining master-eligible nodes;
allowing the master-eligible nodes to perform an automatic discovery process to create a 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, each of the master-eligible nodes having a unique identifier and a cluster identifier;
establishing an optimal level of fault tolerance for the cluster using a voting configuration; 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.

### Claim 15 (depends on 14)

The method according to claim 14, further comprising:
determining a 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 16 (depends on 15)

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

### Claim 17 (depends on 14)

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

### Claim 18 (depends on 14)

The method according to claim 14, 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 19

A system, comprising:
a processor; and
a memory for storing instructions, the processor being configured to execute the instructions to:
determine nodes in a cluster, each of the nodes having a unique identifier and a cluster identifier for the cluster;
determine 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;
elect one of the nodes as a master node based on the voting configuration; and
perform a shut-down state operation prior to committing to the master node election in response to determining an unsafe operation.

### Claim 20 (depends on 19)

The system according to claim 19, wherein the master node is configured to manage a cluster index, track which of the nodes are included in the cluster, and decide which shards to allocate to which of the nodes.
