gobetween logo

gobetween

Minimalist L4 load balancer that discovers its own backends from Docker, Consul, SRV, and more

Repository activity
  • Stars2k
  • Forks220
  • Open Issues102
License

Other

Languages
  • Go
  • Makefile
  • Shell
gobetween screenshot

About gobetween

gobetween stays at Layer 4, balancing raw TCP, TLS, and UDP rather than parsing HTTP. That keeps it fast and protocol-agnostic, and it pairs the proxy with TLS termination, TLS pass-through, and ACME certificates so encrypted traffic works without a separate front end.

What sets it apart is that the backend list does not have to be static. Discovery plugins pull live targets from Docker, Consul, LXD, SRV records, plaintext or JSON endpoints, or an exec script, so the pool tracks your infrastructure as it changes. Configuration comes from TOML or JSON files, a URL, or Consul KV, and a management REST API exposes current config, server lists, stats, and metrics at runtime.

Written in Go, gobetween ships as a single binary with a snap install option and is in maintenance mode while still accepting pull requests. Self-host on any platform. MIT licensed.

Key features

  • L4 balancing for TCP, TLS, and UDP traffic
  • TLS termination, TLS pass-through, and ACME certificates
  • Backend discovery from Docker, Consul, LXD, SRV, and exec
  • Management REST API for config, servers, stats, and metrics
  • PROXY protocol support and per-protocol health checks

Details

First released
2016
Platforms
CLI
Deployment
Self-hostable
Language
Go
Layer
L4 (TCP · TLS · UDP)
License
MIT