1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/v55448330-lazy-balancer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект возник из-за необходимости в 7-уровневом балансировщике нагрузки, но коммерческие балансировщики нагрузки оказались слишком дорогими и сложными в использовании. Не было также особенно любимых (красивых, удобных) открытых продуктов. Как большой Ops, я не мог ничего сделать?

  • Проект основан на Django + AdminLTE, протестирован на Ubuntu 18.04; для обеспечения хорошей совместимости рекомендуется использовать браузер Chrome.
  • Для удобства последующего расширения рекомендуется использовать Tengine вместо Nginx.

Адрес проекта

Обновление (2024-01-23)

  • Добавлена страница Dashboard с автоматическим обновлением всех данных каждые 5 секунд.
  • Добавлен модуль nginx-module-vts для более полного мониторинга трафика.
    • На странице Dashboard отображается время запуска Nginx. API синхронизирован с добавлением поля, которое можно преобразовать в единицы измерения ms.
    • Добавлены функции мониторинга TCP-трафика на странице Dashboard.
    • Функции статистики трафика MB/GB на странице Dashboard адаптированы к отображению, при этом значения, превышающие GB, отображаются жирным шрифтом.
    • Добавлен интерфейс мониторинга Prometheus для мониторинга трафика. Этот сервис занимает порт 9191/tcp. В системных настройках можно включить функцию «Открыть общедоступные метрики», чтобы реализовать внешний мониторинг. Эта функция может привести к риску утечки конфиденциальной информации, поэтому рекомендуется использовать такие решения, как Telegraf, для сбора данных локально.
      • Статус вышестоящего сервера (HTTP/TCP) <BASE_URL>:9191/up_status?format=[prometheus|json|html]

      • Статистика запросов (HTTP) <BASE_URL>:9191/req_status_http/format/[prometheus|json|html]/

      • Статистика запросов (TCP) <BASE_URL>:9191/req_status_tcp/format/[prometheus|json|html]/

  • Оптимизация: из-за конфликта плагинов и функций динамического разрешения доменов, модуль ngx_upstream_jdomain заменён на модуль Tengine ngx_http_upstream_dynamic. Из-за конфликтов между модулем ngx_http_upstream_dynamic и модулями активного мониторинга состояния и алгоритма балансировки нагрузки, разрешение доменов должно осуществляться через DNS.
  • Оптимизация: временно упрощена среда LuaJIT.
  • Оптимизация: внедрён jemalloc для оптимизации управления памятью.
  • Оптимизация: по умолчанию используется алгоритм VNSWRR вместо алгоритма балансировщика нагрузки NGINX.

Обновление (2023-12-03)

  • Обновлён Python до версии 3.9.

  • Обновлён Tengine до версии 3.1.0.

  • Обновлён LuaJIT до версии 20231006.

  • Обновлено Alpine до версии 3.18.4.

  • Частично обновлены зависимости Python.

  • Улучшено: перед сохранением конфигурации выполняется проверка с помощью nginx -t, и если есть ошибка, конфигурация не будет применена.

  • Улучшено: состояние страницы разделено на конфигурацию и состояние процесса, теперь ошибки конфигурации не влияют на состояние Nginx, а отображаются как «ошибка конфигурации».

  • Улучшено: при запуске службы конфигурация будет повторно сгенерирована и применена, что предотвратит сбой запуска из-за неправильной конфигурации.

  • Улучшено: сохранение или повторное применение конфигурации разрешено без применения, чтобы предотвратить сбой из-за многократного нажатия.

  • Улучшено: логика сохранения конфигурации изменена, теперь только после неудачной проверки правил конфигурация будет перерисована, что значительно ускорит сохранение при большом количестве правил.

  • Улучшено: по умолчанию отключена подробная информация о сервере ошибок.

  • Добавлено: добавлена функция «повторного применения конфигурации», которая позволяет вручную перерисовывать или перезагружать конфигурацию Nginx, по умолчанию перерисовывая, выбирая отмену, можно выбрать только перезагрузку конфигурации.

  • Добавлено: в stream-модуле proxy_timeout установлен на 1800s.

  • Добавлено: check_shm_size установлен на 32M.

  • Добавлено: количество строк в списке правил можно настроить от 10 до 100.

  • Добавлено: поддержка ARM-архитектуры, pull-образцы могут использовать параметр --platform linux/arm64.

  • Добавлено: HTTP-тип правила, динамическое обнаружение доменного имени вышестоящего узла реализовано с использованием модуля ngx_upstream_jdomain, который предотвращает изменение IP-адреса вышестоящего узла, поддерживает только протокол HTTP.

  • Добавлено: модуль активного мониторинга работоспособности ngx_healthcheck_module заменён для решения проблемы совместимости с модулем динамического обнаружения доменных имён, а также добавлена функция мониторинга работоспособности для правил TCP.

  • Исправлено: проблема с тем, что статус SSL не влияет на открытие переключателя доменного имени.

  • Исправлено: некоторые случаи, когда импорт конфигурации завершается неудачно и не может быть отменён.

  • Исправлено: другие проблемы с взаимодействием. Ленивый балансировщик: v1.3.8beta или v55448330/lazy-balancer:latest

  • Инициализация базы данных

    docker exec lazy_balancer python manage.py makemigrations --noinput 2>/dev/null
    docker exec lazy_balancer python manage.py migrate --run-syncdb

Хост

  • Развёртывание

Способ развёртывания см. в сценарии deploy.sh.

  • Инициализация базы данных
python manage.py makemigrations --noinput 2>/dev/null
python manage.py migrate --run-syncdb 
  • Запуск сервиса
supervisord -c /app/lazy_balancer/service/supervisord_docker.conf

или

supervisorctl start webui
supervisorctl start nginx
  • Вход в систему
http://[IP]:8000/  

При первом входе потребуется создать учетную запись администратора. Для изменения учётных данных можно сбросить настройки администратора в системе.

Демонстрация

Изображения не представлены в запросе.

Лицензия

Этот проект поддерживается 小宝 и распространяется под лицензией GPLv3. Мы приветствуем обратную связь и вклад кода!

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Проект начался с того, что друзья захотели создать 7-уровневый балансировщик нагрузки. Коммерческие балансировщики оказались слишком дорогими и сложными в эксплуатации. Не было и особо любимых (красивых и удобных) open source продуктов. Как же быть опытному Ops? И тут удачно подвернулся Django фреймворк. Попробовали сделать свою обёртку для Ngin... Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/v55448330-lazy-balancer.git
git@api.gitlife.ru:oschina-mirror/v55448330-lazy-balancer.git
oschina-mirror
v55448330-lazy-balancer
v55448330-lazy-balancer
master