GoBetween - balanceador de carga moderno e minimalista e proxi reverso para a era da ☁ ☁ás.
Status atual : modo de manutenção, aceitando prs . Atualmente em uso em vários ambientes de produção altamente carregados.
Características
Balanceamento rápido de carga L4
- TCP - Com o suporte opcional do protocolo de proxy
- TLS - TLS TERMINAÇÃO + ACME & TLS PROXY
- UDP - com sessões virtuais opcionais e modo transparente
Configuração clara e flexível com Toml ou JSON
- Arquivo - Leia a configuração do arquivo
- URL - Consulta URL por HTTP e obtenha a configuração do corpo de resposta
- Consul - Consulta API de armazenamento de valor -chave do cônsul para configuração
API REST GERENCIAL
- Informações do sistema - Informações gerais do servidor
- Configuração - despejo de configuração atual
- Servidores - Liste, crie e exclua
- Estatísticas e métricas - para servidores e backnds, incluindo RX/TX, Status, Conexões Ativas e etc.
Descoberta
- Lista de backnds de código hardcode estático no arquivo de configuração
- Docker - Backends de consulta da API Docker / Swarm filtrada pela etiqueta
- EXEC - Execute um programa arbitrário e retire backup de seu stdout
- JSON - Consulta URL HTTP arbitrário e back -ends da resposta JSON (de qualquer estrutura)
- PlainText - Consulta HTTP e análise arbitrários de backends do texto de resposta com regexp personalizado
- SRV - Consulta DNS Server e Retire backnd da SRV Records
- Consul - Consulta API de serviços de consul para back -ends
- LXD - Backands de consulta do LXD
Checks de saúde
- Ping - simples ping ping healthcheck
- Exec - Executar Programa Arbitrário Passando Host & Port como Opções, e leia o status HealthCheck do STDOUT
- Sonda - Envie bytes específicos para o back -end (UDP, TCP ou TLS) e espere uma resposta correta (bytes ou regexp)
Estratégias de equilíbrio (com suporte de SNI)
- Peso - Selecione back -end entre pesos relativos baseados em pool de back -ends
- Roundrobin - Simples elege back -end da piscina em ordem circular
- IPhash - Route Client para o mesmo back -end com base no hash IP do cliente
- Iphash1 - o mesmo que o iPhash, mas a remoção de back -end consistente (os clientes continuam se conectando ao mesmo back -end, mesmo que alguns outros back -ends para baixo)
- MEINECONN - Selecione o back -end com conexões menos ativas
- MELHEBANDWIDTH - Backends com menor largura de banda
Integra -se perfeitamente ao Docker e a qualquer sistema personalizado (graças à descoberta Exec e HealthChecks)
Distribuição binária única
Arquitetura
Uso
- Instale com Snap: https://snapcraft.io/gobetween
- Outras opções de instalação
- Leia a referência de configuração
- Execute
gobetween --help
para obter ajuda completa em todos os comandos e opções disponíveis.
Hacking
- Instale Go 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
Debug e teste
Execute vários servidores da Web para testes em diferentes terminais:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
Em vez do módulo HTTP interno do Python, você também pode usar um único servidor binário (vá) como: https://github.com/udhos/gowebhello
O Gowebhello também tem suporte para o SSL Sertificates (modo HTTPS ), caso você queira fazer demos rápidos dos recursos do TLS+SNI do GetBeen.
Put localhost:8000
e localhost:8001
para static_list
de descoberta estática no arquivo de configuração e, em seguida, tente:
Ativar problemas de perfil e depuração que você encontrar
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
Desempenho
É rápido! Veja o teste de desempenho
O nome
É uma peça de palavras: Gobetween ("Vá entre").
Além disso, está escrito em Go, e é um proxy, então é algo que permanece entre 2 partes?
Licença
Mit. Consulte o arquivo de licença para obter mais detalhes.
Autores e mantenedores
- Yaroslav Pogrebnyak
- Nick Doikov
- Ievgen Ponomarenko
- Illarion Kovalchuk
Todos os colaboradores
Comunidade
- Junte -se ao grupo de telegramas aqui.
Logotipo
Logotipo de Max Demchenko