# US 12,225,077 B2 · System and method for load balancing in a multitenant environment

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

- Number: US 12,225,077 B2
- Document ID: US12225077B2
- Status: Granted
- Kind: B2
- Application number: 18/651,958
- Filed: 2024-05-01
- Published: 2024-08-22
- Granted: 2025-02-11
- Earliest claimed: 2020-09-17
- Assignees: Open Text Holdings, Inc.
- Applicants: Open Text Holdings, Inc.
- Inventors: Anirudh Mahto; Ankit Kumar Mahto
- Web page: https://patentgrep.com/patent/US12225077B2

## CPC

- H04L 67/1008: based on parameters of servers, e.g. available memory or workload (monitoring of computer activity G06F11/30)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Embodiments provide systems and methods to load balance using tenant affinities. A method includes configuring a load balancer with a set of tenant affinities, the set of tenant affinities including a tenant affinity for each of a plurality of tenants with respect to each of a plurality of computing nodes that provide services to users in a multitenant environment. Load balancing may include receiving a user request, associated with a tenant, for a service provided by the computing nodes, determining a highest tenant affinity computing node for the tenant using the set of tenant affinities and directing the user request to the highest tenant affinity computing node for the tenant.

## Claims

### Claim 1

A multitenant system comprising:
a plurality of computing nodes that provide a plurality of services;
a load balancer system communicatively coupled to the plurality of computing nodes, the load balancer system comprising:
a memory for storing load balancer data, the load balancer data comprising:
tenant affinity data, the tenant affinity data comprising tenant affinities for a plurality of computing node-tenant pairs;
capacity data for the plurality of computing nodes;
a processor; and
load balancer code executable by the processor, the load balancer code comprising instructions for:
receiving a user request for a first service from the plurality of services from a user who is a member of a first tenant;
limiting the plurality of computing nodes to eligible computing nodes for servicing the user request; and
assigning, using the load balancer data, the user request to an eligible computing node from the eligible computing nodes that has a highest tenant affinity for the first tenant.

### Claim 2 (depends on 1)

The multitenant system of claim 1, wherein the plurality of computing nodes are limited to the eligible computing nodes for servicing the user request based on support for the first service.

### Claim 3 (depends on 2)

The multitenant system of claim 2, wherein the plurality of computing nodes are limited to the eligible computing nodes for servicing the user request based on available capacity.

### Claim 4 (depends on 2)

The multitenant system of claim 2, wherein the plurality of computing nodes are limited to the eligible computing nodes for servicing the user request based on proximity.

### Claim 5 (depends on 4)

The multitenant system of claim 4, wherein the eligible computing nodes for servicing the user request are further selected based on available capacity.

### Claim 6 (depends on 1)

The multitenant system of claim 1, wherein the load balancer code is executable to determine the tenant affinities for the plurality of computing node-tenant pairs.

### Claim 7 (depends on 1)

The multitenant system of claim 1, wherein the tenant affinities for the plurality of computing node-tenant pairs are based on a number of users from a respective tenant that are assigned to a respective computing node.

### Claim 8 (depends on 7)

The multitenant system of claim 7, wherein the tenant affinities for the plurality of computing node-tenant pairs comprise a percentage of a user base of the respective computing node from the respective tenant.

### Claim 9

A multitenant system comprising:
a plurality of computing nodes that provide a service;
a load balancer system communicatively coupled to the plurality of computing nodes, the load balancer system comprising:
a memory for storing load balancer data;
a processor; and
load balancer code executable by the processor, the load balancer code comprising instructions for:
receiving tenant affinity data with respect to a plurality of tenants from the plurality of computing nodes, the tenant affinity data comprising tenant affinities for a plurality of computing node-tenant pairs;
receiving capacity data from the plurality of computing nodes;
storing the tenant affinity data and the capacity data in the memory as at least a portion of the load balancer data; and
distributing user requests for the service to the plurality of computing nodes using the tenant affinity data and the capacity data received from the plurality of computing nodes.

### Claim 10 (depends on 9)

The multitenant system of claim 9, wherein the tenant affinities for the plurality of computing node-tenant pairs are based on a number of users from a respective tenant that are assigned to a respective computing node.

### Claim 11 (depends on 10)

The multitenant system of claim 10, wherein the tenant affinities for the plurality of computing node-tenant pairs comprise a percentage of a user base of the respective computing node from the respective tenant.

### Claim 12 (depends on 9)

The multitenant system of claim 9, wherein the user requests for the service include user requests from members of a first tenant and wherein distributing the user requests for the service to the plurality of computing nodes using the tenant affinity data and the capacity data received from the plurality of computing nodes comprises:
determining, from the plurality of computing nodes, an available capacity computing node that has a highest tenant affinity for the first tenant from the plurality of tenants; and
assigning the user requests from the members of the first tenant to the available capacity computing node that has the highest tenant affinity for the first tenant.

### Claim 13 (depends on 12)

The multitenant system of claim 12, wherein the user requests for the service include user requests from members of a second tenant and wherein distributing the user requests for the service to the plurality of computing nodes comprises:
determining, from the plurality of computing nodes, an available capacity computing node that has a highest tenant affinity for the second tenant; and
assigning the user requests from the members of the second tenant to the available capacity computing node that has the highest tenant affinity for the second tenant.

### Claim 14 (depends on 13)

The multitenant system of claim 13, wherein the available capacity computing node that has the highest tenant affinity for the first tenant is a different computing node from the available capacity computing node that has the highest tenant affinity for the second tenant.

### Claim 15

A multitenant system comprising:
a plurality of computing nodes that provide a service;
a load balancer system communicatively coupled to the plurality of computing nodes, the load balancer system comprising:
a memory for storing load balancer data, the load balancer data comprising:
tenant affinity data, the tenant affinity data comprising tenant affinities for a plurality of computing node-tenant pairs;
capacity data for the plurality of computing nodes;
a processor; and
load balancer code executable by the processor, the load balancer code comprising instructions for:
receiving a user request for the service from a user that is a member of a first tenant from a plurality of tenants;
performing a first load balancing, performing the first load balancing comprising assigning the user request to a first computing node from the plurality of computing nodes according to first load balancing criteria; and
performing a second load balancing, performing the second load balancing comprising assigning, using the load balancer data, the user request to an available capacity computing node, from the plurality of computing nodes, that has a highest tenant affinity for the first tenant.

### Claim 16 (depends on 15)

The multitenant system of claim 15, wherein the load balancer code comprises instructions for:
determining that a tenant affinity threshold has been met for the first tenant, wherein the second load balancing is performed for the user request based on a determination that the tenant affinity threshold has been met for the first tenant.

### Claim 17 (depends on 16)

The multitenant system of claim 16, wherein the second load balancing is performed after and overrides the first load balancing.

### Claim 18 (depends on 16)

The multitenant system of claim 16, wherein the first load balancing assigns the user request to the first computing node based on the first computing node having a least number of assigned users.

### Claim 19 (depends on 15)

The multitenant system of claim 15, wherein the tenant affinities for the plurality of computing node-tenant pairs are based on a number of users from a respective tenant that are assigned to a respective computing node.

### Claim 20 (depends on 19)

The multitenant system of claim 19, wherein the tenant affinities for the plurality of computing node-tenant pairs comprise a percentage of a user base of the respective computing node from the respective tenant.
