Gobetween : equilibrador de carga moderno y minimalista y proxima inversa para la era de la nube ☁️.
Estado actual : modo de mantenimiento, aceptando PR . Actualmente en uso en varios entornos de producción altamente cargados.
Características
Equilibrio de carga rápido l4
- TCP : con el soporte del protocolo proxy
- TLS - TLS TERMINACIÓN + ACME & TLS Proxy
- UDP : con sesiones virtuales opcionales y modo transparente
Configuración clara y flexible con Toml o JSON
- Archivo : lea la configuración del archivo
- URL - URL de consulta por http y obtener la configuración del cuerpo de respuesta
- API de almacenamiento de valor del valor de la tecla del cónsul : consulta para la configuración
API REST de gestión
- Información del sistema - Información general del servidor
- Configuración - Doble la configuración actual
- Servidores - Lista, creación y eliminación
- Estadísticas y métricas : para servidores y backends, incluidos RX/TX, estado, conexiones activas y etc.
Descubrimiento
- Lista de backends static - hardcode en el archivo de configuración
- Docker : la consulta de retroceso de la API Docker / Swarm filtrada por la etiqueta
- Ejecutor : ejecute un programa arbitrario y obtenga backends de su stdout
- JSON - Consulta URL HTTP arbitraria y recogida de backends de la respuesta JSON (de cualquier estructura)
- Texto de formación de formación : consulta arbitraria http y retroceso de desplazamiento del texto de respuesta con regexp personalizado
- SRV - Servidor DNS de consulta y obtener backends de SRV Records
- API de servicios de consule de consule para backends para backends
- LXD - Consulta Backends de LXD
Cheque de salud
- Ping - Simple TCP Ping HealthCheck
- Exec - Ejecutar el programa arbitrario que pase el host y el puerto como opciones, y lea el estado de HealthCheck desde el stdout
- Probe : envíe bytes específicos para backend (UDP, TCP o TLS) y espere una respuesta correcta (bytes o regexp)
Estrategias de equilibrio (con apoyo SNI)
- Peso : seleccione el backend de los pesos relativos basados en la piscina de los backends
- Roundrobin : backend electo simple de la piscina en orden circular
- IPhash : enrute al cliente al mismo backend basado en el hash IP del cliente
- IPhash1 : igual que iPhash pero la eliminación de backend consistente (los clientes siguen conectando al mismo backend, incluso si algunos otros retroceden)
- MENTOCONN - Seleccione Backend con conexiones menos activas
- Menilbandwidth - Backends con menos ancho de banda
Se integra a la perfección con Docker y con cualquier sistema personalizado (gracias a Exec Discovery y HealthChecks)
Distribución binaria única
Arquitectura
Uso
- Instalar con Snap: https://snapcraft.io/gobetween
- Otras opciones de instalación
- Leer referencia de configuración
- Ejecute
gobetween --help
para obtener ayuda completa en todos los comandos y opciones disponibles.
Seco
- Instale GO 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
Depurar y probar
Ejecute varios servidores web para pruebas en diferentes terminales:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
En lugar del módulo HTTP interno de Python, también puede usar un solo servidor web binario (basado en Go) como: https://github.com/udhos/gowebhello
Gowebhello también tiene soporte para los sertificados SSL (modo HTTPS ), en caso de que desee hacer demostraciones rápidas de las capacidades TLS+SNI de Gobetween.
Pon localhost:8000
y localhost:8001
a static_list
de descubrimiento estático en el archivo de configuración, luego pruébelo:
Habilite los problemas de Profiler y de depuración que encuentre
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
Actuación
¡Es rápido! Ver prueba de rendimiento
El nombre
Es una obra de palabras: Gobetween ("ir entre").
Además, está escrito en Go, y es un proxy, ¿es algo que se queda entre 2 fiestas?
Licencia
Mit. Consulte el archivo de licencia para obtener más detalles.
Autores y mantenedores
- Yaroslav pogrebnyak
- Nick Doikov
- Ievgen Ponomarenko
- Illarion Kovalchuk
Todos los contribuyentes
Comunidad
- Únete a Gobetween Telegram Group aquí.
Logo
Logotipo de Max Demchenko