# Overview

<!--- Template Guidance 
This is the architectural overview of your product and where you explain key concepts and introduce domain specific terminology. 
Don't rely on text alone: diagrams tend to go a long way to make these concepts clear. 
The goal is to ensure that people get a good mental model of what problem the product is solving and how it is solving it.
The target audience here is system designers and architects. 

NOTE: Take a look at the overview of NLB (community/community/content/product/networking/nlb/overview/_index.md) for a good reference example.
-->

A __Network Load Balancer (or NLB)__ is a Layer 4 (TCP/UDP) load balancer that distributes incoming traffic to Compute instances managed by an [Instance Pool]({{< ref "product/compute/instances/how-to/instance-pools/" >}}).

![](nlb.svg)

## Terminology
Several types of load balancing strategies are available during service configuration:

Round Robin
: incoming traffic will be forwarded to each member of the Instance Pool in
  equal proportions and in circular order.

Source-Hash
: incoming traffic will be balanced on different members of the target Instance
  Pool depending on the source IP address. A given source IP address will
  always forward to the same Instance.

Maglev-Hash
: consistent hashing with minimal disruption. Each destination will receive an
  almost equal number of connections.


There is no difference in terms of raw performance between the strategies. The
choice depends on your specific application and needs.


## Features
A NLB is composed of several services, each bound to an Instance Pool that resides in the same zone as the NLB. Services will efficiently forward connections reaching the NLB's IP address to the member instances of the Instance Pool.

While the instances remain individually accessible through their public IP, the NLB will expose a single IP address for all services and distribute the incoming traffic across the members of the Instance Pool following the service's rules.

NLB services will update automatically when the Instance Pool scales up or down, distributing traffic across all reachable member instances of the pool and excluding unreachable ones by using an integrated health check functionality.

NLB acts only on incoming traffic, so all return traffic from the backend to the client that originated the request goes out directly from the pool member instance.

Each NLB is composed of up to 10 services - each service with its own configuration. Each NLB service can target a different Instance Pool residing in the same zone as the NLB, and is independent from other services.

Each NLB Service is composed of the following parts:

- A target Instance Pool
- A load balancing strategy
- A triplet indicating the Protocol, Service Port and Target Port for the traffic to be balanced.
- A Health Check probe

> [!NOTE]
> While it's possible to edit and modify most of the parameters of a service, it is not possible 
> to modify the targeted Instance Pool. Moreover, an Instance Pool cannot be deleted if it is 
> targeted by a service.

Network Load Balancer supports [labels]({{< ref "/product/compute/instances/how-to/labels/" >}}).

<<<<<<< Updated upstream
=======

## Availability

| Zone                                     | Country      | City      | Availability         |
| :---                                     | :---         | :---      | :---:                |
| {{< icon flag-at-4x3 >}} __`at-vie-1`__  | Austria      | Vienna    | {{< icon "check" >}} |
| {{< icon flag-at-4x3 >}} __`at-vie-2`__  | Austria      | Vienna    | {{< icon "check" >}} |
| {{< icon flag-bg-4x3 >}} __`bg-sof-1`__  | Bulgaria     | Sofia     | {{< icon "check" >}} |
| {{< icon flag-ch-4x3 >}} __`ch-dk-2`__   | Switzerland  | Zurich    | {{< icon "check" >}} |
| {{< icon flag-ch-4x3 >}} __`ch-gva-2`__  | Switzerland  | Geneva    | {{< icon "check" >}} |
| {{< icon flag-de-4x3 >}} __`de-fra-1`__  | Germany      | Frankfurt | {{< icon "check" >}} |
| {{< icon flag-de-4x3 >}} __`de-muc-1`__  | Germany      | Munich    | {{< icon "check" >}} |
| {{< icon flag-hr-4x3 >}} __`hr-zag-1`__  | Croatia      | Zagreb    | {{< icon "check" >}} |


## Limitations

* Network Load Balancers are limited by default to 5 per account. Please note that __each NLB will count__ towards your
[Elastic IP]({{< ref "/product/networking/eip/" >}}) quota as well. Please contact our support if you need to increase your quota.
* Network Load Balancers only work with
[Instance Pools]({{< ref "/product/compute/instances/how-to/instance-pools/" >}}).
It is not possible to provide an arbitrary list of instances as a target.
* Each NLB can have up to 10 Services at most.
* NLB only forwards connections to Instance Pool members. It is not possible to terminate TCP or SSL/TLS connections with NLB.
* Once a service is created, it is not possible to modify its target Instance Pool.
* Names of NLBs need to be unique in the context of an organization.
* Names of NLB Services need to be unique in the context of the NLB itself.
>>>>>>> Stashed changes

