Gobetween - Balancer de charge moderne et minimaliste et proxy inversé pour l'ère des nuages.
État actuel : mode de maintenance, accepter les PRS . Actuellement utilisé dans plusieurs environnements de production hautement chargés.
Caractéristiques
Équilibrage de chargement L4 rapide
- TCP - Avec facultatif, le support du protocole proxy
- TLS - TLS termination + ACME & TLS Proxy
- UDP - avec des sessions virtuelles en option et en mode transparent
Configuration claire et flexible avec Toml ou JSON
- Fichier - Lire la configuration à partir du fichier
- URL - URL de requête par HTTP et obtenir la configuration de l'organisme de réponse
- Consul - API de stockage de valeurs de clé Consul de requête pour la configuration
API de gestion de gestion
- Informations système - Informations sur le serveur général
- Configuration - vider la configuration actuelle
- Serveurs - Liste, créez et supprimez
- Statistiques et métriques - pour les serveurs et les backends, y compris Rx / Tx, l'état, les connexions actives et etc.
Découverte
- STATIQUE - Liste des backends du code dur dans le fichier de configuration
- Docker - Backends de requête de l'API Docker / Swarm filtré par étiquette
- Exec - Exécuter un programme arbitraire et obtenir des backends de son stdout
- JSON - requête URL HTTP arbitraire et backends de la réponse JSON (de toute structure)
- PlainText - requête arbitraire HTTP et analyse d'analyse à partir du texte de réponse avec regexp personnalisé
- SRV - requête le serveur DNS et obtenez des backends à partir des enregistrements SRV
- Consul - API des services de requête Consul pour les backends
- LXD - Backends de requête de LXD
Chèques de santé
- Ping - simple tcp ping healthcheck
- Exec - Exécuter un programme arbitraire passant l'hôte et le port comme options et lisez le statut HealthCheck à partir du stdout
- Sonde - Envoyez des octets spécifiques au backend (UDP, TCP ou TLS) et attendez-vous à une réponse correcte (octets ou regexp)
Équilibrage des stratégies (avec soutien SNI)
- Poids - Sélectionnez le backend parmi les poids relatifs basés sur la piscine des backends
- Roundrobin - Backend simple élu de la piscine dans l'ordre circulaire
- IPhash - achemine le client vers le même backend en fonction du hachage IP du client
- IPhash1 - Identique à iPhash mais le suppression du backend cohérent (les clients restent se connecter au même backend, même si d'autres backends)
- LemberConn - Sélectionnez Backend avec des connexions les moins actives
- Le moins de bande de bande - backends avec le moins de bande passante
S'intègre parfaitement à Docker et à tout système personnalisé (grâce à l'exécutif de découverte et de chèques de santé)
Distribution binaire unique
Architecture
Usage
- Installer avec Snap: https://snapcraft.io/gobetween
- Autres options d'installation
- Lire la référence de configuration
- Exécutez
gobetween --help
Help pour une aide complète sur toutes les commandes et options disponibles.
Piratage
- Installer Go 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
Déboguer et tester
Exécutez plusieurs serveurs Web pour des tests dans différents terminaux:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
Au lieu du module HTTP interne de Python, vous pouvez également utiliser un seul serveur binaire (basé sur GO) comme: https://github.com/udhos/gowebhello
Gowebhello a également pris en charge SSL SERTIFACTES (mode HTTPS ), au cas où vous souhaitez faire des démos rapides des capacités TLS + SNI de Gobetween.
Mettez localhost:8000
et localhost:8001
sur static_list
de la découverte statique dans le fichier de configuration, puis essayez:
Activer les problèmes de profileur et de débogage que vous rencontrez
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
Performance
C'est rapide! Voir les tests de performance
Le nom
C'est un jeu sur les mots: gobetween ("allez entre").
De plus, il est écrit en Go, et c'est un proxy, donc c'est quelque chose qui reste entre 2 parties?
Licence
Mit. Voir le fichier de licence pour plus de détails.
Auteurs et maintenteurs
- Yaroslav pogrebnyak
- Nick Doikov
- Ievgen Ponomarenko
- Illarion Kovalchuk
Tous les contributeurs
Communauté
- Rejoignez le groupe Telegram entre Gobetween ici.
Logo
Logo par Max Demchenko