Введение в HaloLink

HaloLink — это модульный I/O фреймворк, разработанный для высоконагруженных микросервисных архитектур. Он выступает в роли умного прокси (Layer 4 / Layer 7), который динамически распределяет потоки данных, обеспечивает end-to-end шифрование и защищает внутреннюю инфраструктуру от прямого доступа.

В отличие от классических решений (таких как HAProxy или Nginx), HaloLink спроектирован с упором на асинхронную передачу бинарных данных через защищенные каналы с минимальным оверхедом (менее 0.3ms на пакет).

Установка

HaloLink поставляется в виде единого бинарного файла, не требующего дополнительных зависимостей. Вы можете запустить его напрямую как systemd-сервис, либо использовать Docker.

Вариант 1: Установочный bash-скрипт (Ubuntu / Debian)

Самый быстрый способ развернуть узел (Node) в вашей инфраструктуре:

curl -sL https://raw.githubusercontent.com/halolink/core/install.sh | bash
systemctl enable halolink
systemctl start halolink

Вариант 2: Запуск через Docker Compose

Для контейнеризированных сред мы предоставляем официальный образ на Docker Hub. Пример файла docker-compose.yml:

version: '3.8'
services:
  halolink-core:
    image: halolink/core:latest
    container_name: halolink-node
    restart: always
    network_mode: "host"
    volumes:
      - ./config.json:/etc/halolink/config.json:ro
      - ./certs:/etc/halolink/certs:ro
    environment:
      - HL_LOG_LEVEL=info
      - HL_WORKER_THREADS=auto

Структура конфигурации

Вся маршрутизация описывается в едином JSON файле. Движок отслеживает изменения файла и способен делать "горячую перезагрузку" (hot-reload) без обрыва текущих TCP-сессий.

{
  "log": {
    "level": "warning",
    "output": "/var/log/halolink/core.log"
  },
  "inbounds": [
    {
      "port": 443,
      "protocol": "halo-tls",
      "settings": {
        "certificates": [
          {
            "certificateFile": "/etc/halolink/certs/fullchain.pem",
            "keyFile": "/etc/halolink/certs/privkey.pem"
          }
        ]
      }
    }
  ],
  "outbounds": [
    {
      "tag": "database-cluster",
      "protocol": "tcp",
      "settings": {
        "address": "10.0.5.10",
        "port": 5432
      }
    }
  ]
}

Changelog (История версий)

Здесь публикуются изменения стабильной ветки (Stable Channel) и ранние сборки для тестирования (Beta). Обновления безопасности бэкпортируются автоматически.

Загрузка даты... — Версия 2.5.0-rc1 Beta
  • Feature Предварительная поддержка нового транспортного протокола QUIC. Снижает задержку установки соединения при плохом интернете.
  • Fix Устранено падение демона при попытке маршрутизировать поврежденные UDP-пакеты.
Загрузка даты... — Версия 2.4.1 Stable Release
  • Feature Добавлена экспериментальная поддержка eBPF (Extended Berkeley Packet Filter) для ядра Linux 5.15+. Ускоряет пересылку пакетов на 40% за счет обхода стандартного сетевого стека.
  • Feature Реализован алгоритм балансировки least_latency для автоматического выбора узла с минимальным пингом.
  • Fix Устранена утечка памяти (Memory Leak) при обработке тысяч незавершенных gRPC стримов.
  • Fix Исправлена ошибка валидации сертификатов при включенной строгой проверке mTLS.
Загрузка даты... — Версия 2.4.0 Stable
  • Feature Крупное обновление архитектуры. Переход на модульный движок маршрутизации (Routing v2).
  • Feature Нативная поддержка Docker Swarm: автоматическое обнаружение (Service Discovery) контейнеров без перезагрузки конфига.
  • Feature Интеграция политик Zero-Trust. Добавлены новые алгоритмы ChaCha20-Poly1305 для ARM архитектуры.
  • Fix Значительно уменьшено потребление CPU на холостом ходу.