![Schwung dazwischen](https://images.downcodes.com/uploads/20250202/img_679f59922efad30.png)
Schwung zwischen dem modernen und minimalistischen Lastausgleich und Umkehrproxy für die ☁️ Cloud -Ära.
Aktueller Status : Wartungsmodus, Annahme von PRs . Derzeit werden in mehreren hochbelasteten Produktionsumgebungen verwendet.
Merkmale
Schneller L4 -Lastausgleich
- TCP - Mit optionalem Proxy -Protokollunterstützung
- TLS - TLS -Terminierung + ACME & TLS -Proxy
- UDP - mit optionalen virtuellen Sitzungen und transparenten Modus
Klare und flexible Konfiguration mit TOML oder JSON
- Datei - Konfiguration aus der Datei lesen
- URL - Abfragen von URL nach HTTP und erhalten Sie Konfiguration aus dem Antwortkörper
- Konsul - Abfragekonsul -Schlüsselwert -Speicher -Speicher -API für die Konfiguration
Management REST API
- Systeminformationen - Allgemeine Serverinformationen
- Konfiguration - Aktuelle Konfiguration Dumpeln Sie
- Server - Liste, Erstellen und Löschen
- Statistiken & Metriken - für Server und Backends einschließlich RX/TX, Status, aktive Verbindungen usw.
Entdeckung
- Static - Hardcode Backends -Liste in der Konfigurationsdatei
- Docker - Abfragen von Backends von Docker / Swarm API, gefiltert von Etikett
- Exec - Führen Sie ein willkürliches Programm aus und erhalten
- JSON - Abfragen beliebiger HTTP -URL und Wählen Sie Backends aus der Antwort JSON (einer beliebigen Struktur)
- PlainText - Abfragen beliebiger HTTP- und Analyse von Backends aus dem Antworttext mit benutzerdefiniertem Regexp
- SRV - DNS -Server abfragen und Backends von SRV -Datensätzen erhalten
- Consul - Abfrage -Konsuldienste -API für Backends
- LXD - Abfrage -Backends von LXD
HealthChecks
- Ping - Einfacher TCP Ping HealthCheck
- Exec - Führen Sie ein beliebiges Programm aus, das Host & Port als Optionen übergeben und den Status des HealthChecks aus dem STDOut lesen
- Sonde - Senden Sie bestimmte Bytes an Backend (UDP, TCP oder TLS) und erwarten Sie eine korrekte Antwort (Bytes oder Regexp)
Ausgleichstrategien (mit SNI -Unterstützung)
- Gewicht - Wählen Sie Backend aus poolbasierten relativen Gewichten von Backends aus
- Roundrobin - Einfacher Auswahl -Backend aus dem Pool in kreisförmiger Reihenfolge
- IPHASH - Leiten Sie den Client basierend auf dem Client IP -Hash in das gleiche Backend.
- IPHASH1 - Wie iPhash, aber Backendentfernung konsistent (Clients verbinden sich weiterhin mit demselben Backend, auch wenn einige andere Backends heruntergekommen sind)
- Kleinstem Conn - Wählen Sie Backend mit den am wenigsten aktiven Verbindungen aus
- Kleinste Bandbreite - Backends mit der geringsten Bandbreite
Integriert sich nahtlos in Docker und in jedes benutzerdefinierte System (dank Exec -Entdeckung und HealthChecks)
Einzelbinärverteilung
Architektur
Verwendung
- Installieren Sie mit SNAP: https://snapcraft.io/gobetween
- Andere Installationsoptionen
- Konfigurationsreferenz lesen
- Führen Sie
gobetween --help
für die volle Hilfe bei allen verfügbaren Befehlen und Optionen aus.
Hacking
- Installieren Sie Go 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
Debuggen und Test
Führen Sie mehrere Webserver für Tests in verschiedenen Terminals aus:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
Anstelle des internen HTTP -Moduls von Python können Sie auch einen einzelnen binären (GO -basierten) Webserver wie: https://github.com/udhos/gowebhello verwenden
Gowebhello unterstützt auch SSL -Sertifikate ( HTTPS -Modus), falls Sie schnelle Demos der TLS+SNI -Funktionen der Gobtween durchführen möchten.
localhost:8000
und localhost:8001
an static_list
der statischen Erkennung in der Konfigurationsdatei und dann versuchen Sie es dann:
Aktivieren Sie Profiler- und Debugg -Themen, denen Sie begegnen
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
Leistung
Es ist schnell! Siehe Leistungstests
Der Name
Es ist ein Wortspiel: Gobtween ("Gehen Sie zwischen").
Außerdem ist es in Go geschrieben und es ist ein Stellvertreter, also bleibt es etwas, das zwischen 2 Partys bleibt?
Lizenz
MIT. Weitere Informationen finden Sie unter Lizenzdatei.
Autoren und Betreuer
- Yaroslav Pogrebnyak
- Nick Doikov
- Ievgen Ponomarenko
- Illarion Kovalchuk
Alle Mitwirkenden
Gemeinschaft
- Schließen Sie sich der Gobetween -Telegrammgruppe hier an.
Logo
Logo von Max Demchenko