1. База знаний
  2. Транспорты

Балансеры

LeastLoad / leastPing, observatory, health-checks.

Пруфов: 23Обновлено 17.09.2026Исходник 3 мин чтения
  • DNS-балансировка: истекший TTL убивает игровые сессии; лучше nginx/haproxy с healthcheck; лучше балансировать на клиенте: xray client json leastLoad/leastPing + observatory; DNS-рандом — «хуйня» 12.01.26.
  • Практика: leastLoad/leastPing по локам (5 РФ, 5 DE, 5 SE, 5 FI); «в json прилетит, но отображаться не будет» (галочка в ремне) 13.01.26.
  • Клиентская leastLoad предпочтительнее DNS-балансировки: leastPing кидает всегда на минимальный пинг, даже если сервер перегружен 22.01.26; «балансер будет скидывать людей на ту ноду, которая лучше отвечает, а не нагрузку распределять» 07.04.26; «балансер выбирает по пингу» 07.04.26.
  • Round-robin без привязки к TTL: в одном хосте ремны несколько адресов через запятую + предопределение; работает только при обновлении подписки, не динамически 22.01.26.
  • burstObservatory + leastLoad: 3 замера с таймаутом 2с, повтор каждые 3 минуты; leastLoad исключает пинг >1с и нестабильные >30% tolerance ~21.02.26.
  • remnawave-cloudflare-nodes: скрипт мониторит API панели, добавляет/удаляет IP в DNS Cloudflare для node.example.com — github.com/hteppl/remnawave-cloudflare-nodes ~22.02.26.
  • Anycast: «юзаем anycast и не паримся» ~22.02.26.
  • XBM (Xray Balancer Middleware) 3.1.0→3.1.1 (платный, $200): leastLoad (задержка+потери), фейловер <1 мин, LTE-логика с tier-системой (основа → резерв tier1 → tier2), фильтрация по CPU/RAM/онлайну, Rate limit по HWID/IP, кэш подписки, sticky-session 14.05.26.
  • Базовый leastLoad-балансер note_060 · 06.04.26:
"balancers": [{
  "tag": "EU_Balancer", "selector": ["proxy-"],
  "strategy": {"type": "leastLoad",
    "settings": {"maxRTT": "8s", "expected": 2, "baselines": ["1s"], "tolerance": 0.01}},
  "fallbackTag": "proxy"}]
  • fallbackTag — один outbound tag, не список; резервные хосты задаются высоким cost 20.06.26:
"balancers": [{
  "tag": "Super_Balancer", "selector": ["proxy","fallback"],
  "strategy": {"type": "leastLoad", "settings": {
    "costs": [{"match": "fallback", "value": 9999, "regexp": false}],
    "maxRTT": "1s", "expected": 2, "baselines": ["1s"], "tolerance": 0.01}}}],
"domainStrategy": "IPIfNonMatch"
  • loopback = повторная отправка трафика обратно в routing; costs — выбор внутри одного балансировщика (cost:9999 = fallback участвует, но проигрывает живым) 26.05.26.
  • Обсерватория с leastPing: переключает каждые 30с 26.05.26:
"observatory": {"subjectSelector": ["VLESS_OUTBOUND_TO_FI","VLESS_OUTBOUND_TO_DE","VLESS_OUTBOUND_TO_NL"]},
"balancers": [{"tag": "EU_BALANCER",
  "selector": ["VLESS_OUTBOUND_TO_FI","VLESS_OUTBOUND_TO_DE","VLESS_OUTBOUND_TO_NL"],
  "fallbackTag": "BLOCK", "strategy": {"type": "leastPing"}}]
  • leastPing vs leastLoad: leastPing — outbound с наименьшей задержкой на момент последней итерации обсерватории (одна проверка) 16.06.26.
  • leastPing + fallback + burstObservatory (HEAD, gstatic generate_204): balancer tag AUTO_FAST_EXIT, strategy leastPing, fallbackTag EXIT_SS_NETHERLANDS01; pingConfig timeout 3s, interval 30s, sampling 5, httpMethod HEAD, destination gstatic.com/generate_204 06.05.26.
  • Вариант пинга: pingConfig timeout 1s, interval 5s, destination msftconnecttest.com/connecttest.txt 03.06.26; «не надо такой интервал — это слишком часто, 5сек» 03.06.26.
  • remnawave injectHosts: selector type uuids (айди хостов не под БС), tagPrefix proxy, selectFrom ALL; БС-хост → tagPrefix reserve; DNS 1.1.1.1/1.0.0.1 queryStrategy UseIP 06.05.26.
  • На iOS шаблон xray json балансера «затирает» конфиги одиночных хостов — проблема в hapе 06.06.26.
  • Конфиг с балансером в INCY на iPhone не подключается (коннектит и обрывает), в Happ работает; в INCY балансерные хосты в одном проекте определяются как VLESS, в другом — как Shadowsocks и не пингуются (потом подтвердил автор) 26.06.26.
  • «Балансировка хостов с кучей edge-IP — нужно 30 хостов с одинаковыми настройками» 26.06.26.
  • Лучший вариант: скрытый балансир «который сам кидает по разным протоколам подстать тому, что пользователю подходит в его сети» (дефолт leastLoad + инжект хоста) ~02.07.26.
  • Round-robin документация: xtls.github.io/en (leastLoad, roundRobin) 17.06.26.