All Projects → yyyar → Gobetween

yyyar / Gobetween

Licence: other
☁️ Modern & minimalistic load balancer for the Сloud era

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Gobetween

Goproxy
🔥 Proxy is a high performance HTTP(S) proxies, SOCKS5 proxies,WEBSOCKET, TCP, UDP proxy server implemented by golang. Now, it supports chain-style proxies,nat forwarding in different lan,TCP/UDP port forwarding, SSH forwarding.Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。
Stars: ✭ 11,334 (+594.91%)
Mutual labels:  tcp, udp, tls, tcp-proxy, udp-proxy, tls-proxy
Leaf
A lightweight and fast proxy utility tries to include any useful features.
Stars: ✭ 530 (-67.5%)
Mutual labels:  proxy, tcp, udp, tls
Blinksocks
A framework for building composable proxy protocol stack.
Stars: ✭ 587 (-64.01%)
Mutual labels:  proxy, tcp, udp, tls
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 8,395 (+414.71%)
Mutual labels:  tls, udp, sni
sillyproxy
SillyProxy - Dynamic SNI based TLS proxy for terminating TLS (>=1.1) HTTP connections to multiple domains.
Stars: ✭ 19 (-98.84%)
Mutual labels:  tls, sni, tls-proxy
asyncio-socks-server
A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio.
Stars: ✭ 154 (-90.56%)
Mutual labels:  tcp, udp, proxy-server
XAsyncSockets
XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.
Stars: ✭ 28 (-98.28%)
Mutual labels:  tls, tcp, udp
Proxy admin free
Proxy是高性能全功能的http代理、https代理、socks5代理、内网穿透、内网穿透p2p、内网穿透代理、内网穿透反向代理、内网穿透服务器、Websocket代理、TCP代理、UDP代理、DNS代理、DNS加密代理,代理API认证,全能跨平台代理服务器。
Stars: ✭ 487 (-70.14%)
Mutual labels:  proxy, tcp, udp
Ssl Proxy
🔒 Simple zero-config SSL reverse proxy with real autogenerated certificates (LetsEncrypt, self-signed, provided)
Stars: ✭ 427 (-73.82%)
Mutual labels:  proxy, tls, letsencrypt
Gsnova
Private proxy solution & network troubleshooting tool.
Stars: ✭ 509 (-68.79%)
Mutual labels:  proxy, tcp, tls
Traefik
The Cloud Native Application Proxy
Stars: ✭ 36,089 (+2112.69%)
Mutual labels:  consul, load-balancer, letsencrypt
DDoS-Script
A script written in perl for ddos ​​with automatic detection of open and vulnerable port that gives up to 1.5 gb packages / s
Stars: ✭ 30 (-98.16%)
Mutual labels:  tcp, udp, udp-proxy
ptw
Pooling TLS Wrapper
Stars: ✭ 20 (-98.77%)
Mutual labels:  tls, tcp-proxy, tls-proxy
riemannx
A riemann client for elixir (TCP/UDP/TLS supported)
Stars: ✭ 23 (-98.59%)
Mutual labels:  tls, tcp, udp
Swiddler
TCP/UDP debugging tool.
Stars: ✭ 56 (-96.57%)
Mutual labels:  tls, tcp, udp
Cnp3
Computer Networking : Principles, Protocols and Practice (first and second edition, third edition is being written on https://github.com/cnp3/ebook)
Stars: ✭ 471 (-71.12%)
Mutual labels:  tcp, udp, tls
steady-tun
Secure TLS tunnel with pool of prepared upstream connections
Stars: ✭ 37 (-97.73%)
Mutual labels:  tls, tcp-proxy, tls-proxy
p3y
A single binary reverse proxy written in go. It was developed for use in Kubernetes, to wrap services like Prometheus with simple BasicAuth and TLS encryption.
Stars: ✭ 15 (-99.08%)
Mutual labels:  tls, proxy-server, tls-proxy
Linkerd Tcp
A TCP/TLS load balancer for Linkerd 1.x.
Stars: ✭ 516 (-68.36%)
Mutual labels:  tcp, load-balancer, tls
Mr2
Mr.2 can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration.
Stars: ✭ 1,102 (-32.43%)
Mutual labels:  proxy, tcp, udp

gobetween

Tag Build Status Go Report Card Docs Docker Snap Status Telegram License

gobetween - modern & minimalistic load balancer and reverse-proxy for the ☁️ Cloud era.

Current status: Maintenance mode, accepting PRs. Currently in use in several highly loaded production environments.

Features

  • Fast L4 Load Balancing

  • Clear & Flexible Configuration with TOML or JSON

    • File - read configuration from the file
    • URL - query URL by HTTP and get configuration from the response body
    • Consul - query Consul key-value storage API for configuration
  • Management REST API

    • System Information - general server info
    • Configuration - dump current config
    • Servers - list, create & delete
    • Stats & Metrics - for servers and backends including rx/tx, status, active connections & etc.
  • Discovery

    • Static - hardcode backends list in the config file
    • Docker - query backends from Docker / Swarm API filtered by label
    • Exec - execute an arbitrary program and get backends from its stdout
    • JSON - query arbitrary http url and pick backends from response json (of any structure)
    • Plaintext - query arbitrary http and parse backends from response text with customized regexp
    • SRV - query DNS server and get backends from SRV records
    • Consul - query Consul Services API for backends
    • LXD - query backends from LXD
  • Healthchecks

    • Ping - simple TCP ping healthcheck
    • Exec - execute arbitrary program passing host & port as options, and read healthcheck status from the stdout
    • Probe - send specific bytes to backend (udp, tcp or tls) and expect a correct answer (bytes or regexp)
  • Balancing Strategies (with SNI support)

    • Weight - select backend from pool based relative weights of backends
    • Roundrobin - simple elect backend from pool in circular order
    • Iphash - route client to the same backend based on client ip hash
    • Iphash1 - same as iphash but backend removal consistent (clients remain connecting to the same backend, even if some other backends down)
    • Leastconn - select backend with least active connections
    • Leastbandwidth - backends with least bandwidth
  • Integrates seamlessly with Docker and with any custom system (thanks to Exec discovery and healthchecks)

  • Single binary distribution

Architecture

gobetween

Usage

Hacking

Debug and Test

Run several web servers for tests in different terminals:

  • $ python -m SimpleHTTPServer 8000
  • $ python -m SimpleHTTPServer 8001

Instead of Python's internal HTTP module, you can also use a single binary (Go based) webserver like: https://github.com/udhos/gowebhello

gowebhello has support for SSL sertificates as well (HTTPS mode), in case you want to do quick demos of the TLS+SNI capabilities of gobetween.

Put localhost:8000 and localhost:8001 to static_list of static discovery in config file, then try it:

  • $ gobetween -c gobetween.toml

  • $ curl http://localhost:3000

Enable profiler and debug issues you encounter

[profiler]
enabled = true     # false | true
bind    = ":6060"  # "host:port"

Performance

It's Fast! See Performance Testing

The Name

It's a play on words: gobetween ("go between").

Also, it's written in Go, and it's a proxy so it's something that stays between 2 parties 😄

License

MIT. See LICENSE file for more details.

Authors & Maintainers

All Contributors

Community

  • Join gobetween Telegram group here.

Logo

Logo by Max Demchenko

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].