Overview

The load balancer is the entry point to your high availability installation and optimally distributes requests to the server nodes in your system. You will need to setup your load balancer.

How Does It Work?

Once the Artifactory node receives the request from the load balancer, the Artifactory router is responsible to forward each request to the JFrog services (Xray, Mission Control, Distribution and Pipelines) accordingly.

For a complete system overview see the system architecture page.

Available JFrog subscription levels:
Self-Hosted


Setting up Your Load Balancer

JFrog supports using a reverse proxy, which is a type of proxy server that retrieves resources from one or more servers. In HA configurations, you will need to use a load balancer instead of a reverse proxy. One load balancer is required per JFrog Platform Deployment (JPD). The load balancer should be configured to the Artifactory instances in your JPD. For more information, see Using a Load Balancer in High Availability Setups.

If you have enabled TLS in your JFrog Platform Deployment, your JFrog Router blocks all non-TLS connections. Therefore, you will need to set up a secure connection between your Load Balancer and your JFrog Platform Deployment as well.
To do that you will need to add the JPD TLS certificate to your load balancer key store. For more information, see Managing TLS Certificates

Configuring Health Check

Use the following end point for configuring the health check for your load balancer for the JFrog Platform.

Description: Get a simple status response about the state of a JFrog Product
Returns 200 code with an 'OK' text if the product is working properly, if not will return an HTTP error code with a reason.
Since: Artifactory 7.0.0, Xray 4.0.0, Mission Control 4.0.0, Distribution 2.0.0, Pipelines 1.0.0
Security: Requires a valid user (can be anonymous)
Usage: GET /router/api/v1/system/health
Produces: text/plain
Sample Output:

GET /router/api/v1/system/health

Healthy Response:
200 OK
Content-Type: application/json
{
  "router": {
    "node_id": "abcef-1324-wxyz",
    "state": "HEALTHY",
    "message": "OK"
  },
  "services": [
    {
      "service_id": "jfsvc@123",
      "node_id": "hijkl-56789-mnopq",
      "state": "HEALTHY",
      "message": "OK"
    },
    ...
  ]
}