Gowendy - современный и минималистичный балансировщик нагрузки и обратная прокси для эры облака.
Текущее состояние : режим обслуживания, принимая PRS . В настоящее время используется в нескольких высоко загруженных производственных средах.
Функции
Быстрая балансировка нагрузки L4
- TCP - с дополнительной поддержкой прокси -прокси -прокси
- TLS - TLS завершение + ACME & TLS Proxy
- UDP - с дополнительными виртуальными сеансами и прозрачным режимом
Чистая и гибкая конфигурация с Toml или JSON
- Файл - Читать конфигурацию из файла
- URL -адрес - URL -адрес http и получить конфигурацию из корпуса ответа
- Consul - API хранилища для хранения клавиш Query Consul для конфигурации
Управление REST API
- Системная информация - общая информация о сервере
- Конфигурация - сброс текущий конфигурация
- Серверы - список, создать и удалить
- Статистика и метрики - для серверов и бэкэндов, включая RX/TX, статус, активные соединения и и т. Д.
Открытие
- Статический список хардкодов в файле конфигурации в файле конфигурации
- Docker - Запросы бэкэнды от Docker / Swarm API фильтруют этикеткой
- Exec - выполнить произвольную программу и получить бэкэнды от его stdout
- JSON - Запрос произвольного http url и выбора из ответа json (любой структуры)
- Основной текст - запрос произвольный HTTP и Parse Backends из текста ответа с настраиваемым режимом REGEXP
- SRV - DNS -сервер запроса и получение бэкэндов от записей SRV
- Consul - API API API Consul Services для бэкэндов
- LXD - Запросы бэкэнды от LXD
HealthChecks
- Ping - Simple TCP Ping HealthCheck
- EXEC - Выполнить произвольную программу, проходящую хост и порт в качестве параметров и прочитайте статус HealthCheck из STDOUT
- Зонд - отправьте конкретные байты на бэкэнд (UDP, TCP или TLS) и ожидайте правильного ответа (байты или повторное положение)
Стратегии балансировки (с поддержкой SNI)
- Вес - выберите бэкэнд из относительных весов на основе бассейна.
- RoundRobin - простой выборки из бассейна в круговом порядке
- Iphash - Route Client на тот же бэкэнд на основе HASH IP клиента
- Iphash1 - такой же, как и Iphash, но последовательно удаление бэкэнд (клиенты по -прежнему подключаются к одному бэкэну, даже если некоторые другие бэкэнды вниз)
- Indonconn - выберите бэкэнд с наименее активными соединениями
- Наименьшая ширина полоса - бэкэнды с наименьшей полосой пропускной способности
Бесплано интегрируется с Docker и с любой пользовательской системой (благодаря Exec Discovery и HealthChecks)
Единое бинарное распределение
Архитектура
Использование
- Установить с помощью Snap: https://snapcraft.io/gobetween
- Другие параметры установки
- Прочтите ссылку на конфигурацию
- Выполните
gobetween --help
для полной помощи по всем доступным командам и параметрам.
Взлом
- Установить GO 1.14+ https://golang.org/
-
$ git clone [email protected]:yyyar/gobetween.git
-
$ make
-
$ make run
Отладка и тест
Запустите несколько веб -серверов для тестов в разных терминалах:
-
$ python -m SimpleHTTPServer 8000
-
$ python -m SimpleHTTPServer 8001
Вместо внутреннего модуля HTTP от Python вы также можете использовать один двоичный (Go) WebServer Like: https://github.com/udhos/gowebhello
Gowebhello также поддерживает SSL Sertificates ( HTTPS Mode), если вы хотите сделать быстрые демонстрации возможностей TLS+SNI GOWENDEN.
Поместите localhost:8000
и localhost:8001
в static_list
of static discovery в файле конфигурации, затем попробуйте:
Включите проблемы с профилировщиком и отладкой, с которыми вы сталкиваетесь
[profiler]
enabled = true # false | true
bind = ":6060" # "host:port"
Производительность
Это быстро! Смотрите тестирование производительности
Имя
Это пьеса на словах: goweweed («go между»).
Кроме того, это написано в Go, и это прокси, так что это то, что остается между двумя сторонами?
Лицензия
Грань См. Файл лицензии для получения более подробной информации.
Авторы и содействие
- Ярослав Погребняк
- Ник Дойков
- Ievgen Ponomarenko
- Илларион Ковальчук
Все участники
Сообщество
- Присоединяйтесь к группе Telegram здесь.
Логотип
Логотип Макса Демшенко