An open API service indexing awesome lists of open source software.

https://github.com/swisscom/cf-gobetween

gobetween - ready for Cloud Foundry
https://github.com/swisscom/cf-gobetween

cloud-foundry go

Last synced: 8 months ago
JSON representation

gobetween - ready for Cloud Foundry

Awesome Lists containing this project

README

          

gobetween

**gobetween** - modern & minimalistic load balancer and reverse-proxy for the :cloud: Cloud era.

**Current status**: *Under active development*. Currently in use in several highy loaded production environments.

## Features

* [Fast L4 Load Balancing](https://github.com/yyyar/gobetween/wiki)
* **TCP** - with optional [The PROXY Protocol](https://github.com/yyyar/gobetween/wiki/Proxy-Protocol) support
* **TLS** - [TLS Termination](https://github.com/yyyar/gobetween/wiki/Protocols#tls) + [ACME](https://github.com/yyyar/gobetween/wiki/Protocols#tls) & [TLS Proxy](https://github.com/yyyar/gobetween/wiki/Tls-Proxying)
* **UDP** - with optional virtual sessions

* [Clear & Flexible Configuration](https://github.com/yyyar/gobetween/wiki/Configuration) with [TOML](config/gobetween.toml) or [JSON](config/gobetween.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](https://github.com/yyyar/gobetween/wiki/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](https://github.com/yyyar/gobetween/wiki/Discovery)
* **Static** - hardcode backends list in config file
* **Docker** - query backends from Docker / Swarm API filtered by label
* **Exec** - execte arbitrary program and get backends from it's 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](https://github.com/yyyar/gobetween/wiki/Healthchecks)
* **Ping** - simple TCP ping healtcheck
* **Exec** - execute arbitrary program passing host & port as options, and read healtcheck status from the stdout
* **Probe** - send specific bytes to backend (udp, tcp or tls) and expect correct answer (bytes or regexp)

* [Balancing Strategies](https://github.com/yyyar/gobetween/wiki/Balancing) (with [SNI](https://github.com/yyyar/gobetween/wiki/Server-Name-Indication) 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 healtchecks)

* Single binary distribution

## Architecture
gobetween

## Usage
Change `manifest.yml` and `config/gobetween.toml` according to your needs and get started instantly.
All configuration options and descriptions are available in the [official docs](http://gobetween.io/documentation.html).
Happy `cf push` -ing!

## Performance
It's Fast! See [Performance Testing](https://github.com/yyyar/gobetween/wiki/Performance-tests)

## The Name
It's 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 :smile:

## License
MIT. See LICENSE file for more details.

## Authors & Maintainers
- [Yaroslav Pogrebnyak](http://pogrebnyak.info)
- [Nick Doikov](https://github.com/nickdoikov)
- [Ievgen Ponomarenko](https://github.com/kikom)
- [Illarion Kovalchuk](https://github.com/illarion)

## Logo
Logo by [Max Demchenko](https://www.linkedin.com/in/max-demchenko-116170112)