Giter Club home page Giter Club logo

mqtt-load-balancer's Introduction

MQTT load balancing with HAProxy

In IoT applications a lot of devies are connected to the same backend e.g. via MQTT. Even strong MQTT broker have their limits according to max connections. Therefore load balancing incoming MQTT TCP connections can be a solution to distribute the connection over multiple brokers. This example shows how to setup an MQTT load balancer with HAProxy and Docker. Moquette is used as MQTT broker, but you could also replace it with any other broker.

Running the example

Prerequisites:

  • Docker
  • Docker Compose

Build HAProxy docker image and start it together with broker instances:

git clone https://github.com/dnobel/mqtt-load-balancer.git
cd mqtt-load-balancer/haproxy-lb
docker build -t haproxy-lb .
cd ..
docker-compose up 

Goto http://localhost:8080 and observe incoming connections.

Connect with multiple MQTT clients and see how they will be load balanced between the MQTT instances.

HAProxy configuration

HAProxy is a perfect HTTP/TCP proxy and load balancer and can be easily configured. We build our own docker image by inheriting from the HAProxy image and providing our own config file. The config file defines a stats pages and the TCP proxy.

HAProxy not only load balances the incoming TCP connections, it also monitors the MQTT brokers by checking for an open port. If one MQTT broker instance goes down, HAProxy redirects all incoming connections to the second broker, until the first one comes up again.

mqtt-load-balancer's People

Contributors

dnobel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.