Skip to content
2023 API Summit Hackathon: Experiment with AI for APIs (August 28 - September 27) Learn More →
Kong Logo | Kong Docs Logo
search
  • We're Hiring!
  • Docs
    • Kong Gateway
      Lightweight, fast, and flexible cloud-native API gateway
      Kong Konnect
      Single platform for SaaS end-to-end connectivity
      Kong Mesh
      Enterprise service mesh based on Kuma and Envoy
      decK
      Helps manage Kong’s configuration in a declarative fashion
      Kong Ingress Controller
      Works inside a Kubernetes cluster and configures Kong to proxy traffic
      Kong Gateway Operator
      Manage your Kong deployments on Kubernetes using YAML Manifests
      Insomnia
      Collaborative API development platform
      Kuma
      Open-source distributed control plane with a bundled Envoy Proxy integration
  • API Specs
  • Plugin Hub
    • Explore the Plugin Hub
      View all plugins View all plugins View all plugins arrow image
    • Functionality View all View all arrow image
      View all plugins
      Authentication's icon
      Authentication
      Protect your services with an authentication layer
      Security's icon
      Security
      Protect your services with additional security layer
      Traffic Control's icon
      Traffic Control
      Manage, throttle and restrict inbound and outbound API traffic
      Serverless's icon
      Serverless
      Invoke serverless functions in combination with other plugins
      Analytics & Monitoring's icon
      Analytics & Monitoring
      Visualize, inspect and monitor APIs and microservices traffic
      Transformations's icon
      Transformations
      Transform request and responses on the fly on Kong
      Logging's icon
      Logging
      Log request and response data using the best transport for your infrastructure
  • Support
  • Community
  • Kong Academy
Get a Demo Start Free Trial
Kong Gateway
3.0.x
  • Home icon
  • Kong Gateway
  • Get Started
  • Load Balancing
github-edit-pageEdit this page
report-issueReport an issue
  • Kong Gateway
  • Kong Konnect
  • Kong Mesh
  • Plugin Hub
  • decK
  • Kong Ingress Controller
  • Kong Gateway Operator
  • Insomnia
  • Kuma

  • Docs contribution guidelines
  • 3.4.x (latest)
  • 3.3.x
  • 3.2.x
  • 3.1.x
  • 3.0.x
  • 2.8.x
  • 2.7.x
  • 2.6.x
  • Archive (pre-2.6)
enterprise-switcher-icon Switch to OSS
On this pageOn this page
  • Enable load balancing
    • Prerequisites
    • Steps to enable load balancing
  • What’s next
You are browsing documentation for an outdated version. See the latest documentation here.

Load Balancing

Load balancing is a method of distributing API request traffic across multiple upstream services. Load balancing improves overall system responsiveness and reduces failures by preventing overloading of individual resources.

In the following example, you’ll use an application deployed across two different servers, or upstream targets. Kong Gateway needs to load balance across both servers, so that if one of the servers is unavailable, it automatically detects the problem and routes all traffic to the working server.

An upstream refers to the service applications sitting behind Kong Gateway, to which client requests are forwarded. In Kong Gateway, an upstream represents a virtual hostname and can be used to health check, circuit break, and load balance incoming requests over multiple target backend services.

In this section, you’ll re-configure the service created earlier, (example_service) to point to an upstream instead of a specific host. For the purposes of our example, the upstream will point to two different targets, httpbin.org and mockbin.org. More commonly, targets will be instances of the same backend service running on different host systems.

Here is a diagram illustrating the setup:

Upstream targets

Enable load balancing

In this section, you will create an upstream named example_upstream and add two targets to it.

Prerequisites

This chapter is part of the Get Started with Kong series. For the best experience, it is recommended that you follow the series from the beginning.

Start with the introduction, Get Kong, which includes a list of prerequisites and instructions for running a local Kong Gateway.

Step two of the guide, Services and Routes, includes instructions for installing a mock service used throughout this series.

If you haven’t completed these steps already, complete them before proceeding.

Steps to enable load balancing

  1. Create an upstream

    Use the Admin API to create an upstream named example_upstream:

    curl -X POST http://localhost:8001/upstreams \
      --data name=example_upstream
    
  2. Create upstream targets

    Create two targets for example_upstream. Each request creates a new target, and sets the backend service connection endpoint:

    curl -X POST http://localhost:8001/upstreams/example_upstream/targets \
      --data target='mockbin.org:80'
    curl -X POST http://localhost:8001/upstreams/example_upstream/targets \
      --data target='httpbin.org:80'
    
  3. Update the service

    In the services and routes section of this guide, you created example_service which pointed to an explicit host, http://mockbin.org. Now you’ll modify that service to point to the upstream instead:

    curl -X PATCH http://localhost:8001/services/example_service \
      --data host='example_upstream'
    

    You now have an upstream with two targets, httpbin.org and mockbin.org, and a service pointing to that upstream.

  4. Validate

    Validate that the upstream you configured is working by visiting the route http://localhost:8000/mock using a web browser or CLI.

    • Web browser: Visit http://localhost:8000/mock and refresh the page several times to see the site change from httpbin to mockbin.
    • CLI: Execute the command curl -s http://localhost:8000/mock/headers |grep -i -A1 '"host"' several times. You will see the hostname change between httpbin and mockbin.

What’s next

You’ve completed the Get Started with Kong guide, but a lot more is possible with Kong Gateway. The following are guides to advanced features of Kong Gateway:

  • Monitoring with Kong Gateway
  • Securing Kong Gateway with RBAC
  • Managing Workspaces and Team with Kong Gateway

Previous Key Authentication
Thank you for your feedback.
Was this page useful?
Too much on your plate? close cta icon
More features, less infrastructure with Kong Konnect. 1M requests per month for free.
Try it for Free
  • Kong
    THE CLOUD CONNECTIVITY COMPANY

    Kong powers reliable digital connections across APIs, hybrid and multi-cloud environments.

    • Company
    • Customers
    • Events
    • Investors
    • Careers Hiring!
    • Partners
    • Press
    • Contact
  • Products
    • Kong Konnect
    • Kong Gateway
    • Kong Mesh
    • Get Started
    • Pricing
  • Resources
    • eBooks
    • Webinars
    • Briefs
    • Blog
    • API Gateway
    • Microservices
  • Open Source
    • Install Kong Gateway
    • Kong Community
    • Kubernetes Ingress
    • Kuma
    • Insomnia
  • Solutions
    • Decentralize
    • Secure & Govern
    • Create a Dev Platform
    • API Gateway
    • Kubernetes
    • Service Mesh
Star
  • Terms•Privacy
© Kong Inc. 2023