DNS-платформа MTA.LAB получила гео-маршрутизацию и отказоустойчивость: теперь домен может отдавать разные IP по странам и континентам и переключаться на backup при падении узла. Разбираем четыре режима правил, Lua-строки, API и установку.
До сих пор маршрутизацию в AltDNS решали обычные A-записи: просто, предсказуемо, но один IP на всех. Если узел ложился, трафик по кампании останавливался до правки записи, а мульти-ГЕО лендинги приходилось разводить разными доменами. В 1.2.0 это меняется: платформа научилась отвечать на DNS-запрос по гео и по состоянию узла.
Обе возможности работают на уровне DNS — до HTTP, до трекера и до приложения. Это значит, что ссылки в источниках остаются неизменными, а логика маршрутизации живёт в одном месте и меняется одной записью.
Ядро релиза — четыре типа правил. Они покрывают и гео-сценарии, и отказоустойчивость, и их комбинацию.
| Режим | Что делает | Когда выбирать |
|---|---|---|
| geo | Отдаёт IP по стране или континенту резолвера, с обязательной дефолтной веткой | Мульти-ГЕО лендинги, раздача ближайших узлов, разделение потоков |
| closest | Возвращает ближайший по сети IP из пула | Один лендинг на нескольких PoP; узлы равнозначны |
| failover | Health-check primary и автоматическая выдача backup при падении | Отказоустойчивость трекера, лендингов и API |
| geo_failover | Гео-ветки, внутри каждой — свой health-check | Мульти-ГЕО и высокая доступность одновременно |
Правило — это Lua-запись PowerDNS. Она выполняется в момент ответа на DNS-запрос и решает, какой IP вернуть. Никакого отдельного процесса между клиентом и сервером нет: всё происходит внутри авторитативного DNS-сервера.
Гео определяется по IP резолвера, который обратился к серверу. Функции country() и continent() смотрят на источник запроса:
Второй механизм — health-check. Проверки primary идут в фоне: платформа периодически стучится в порт или URL и держит актуальный статус узла. DNS-запрос не ждёт проверки — он получает уже готовый результат, поэтому задержка ответа не растёт. При неудаче правило возвращает backup IP, при восстановлении — снова primary.
Скорость переключения складывается из интервала проверки и TTL ответа. Рабочие значения: 60–120 секунд для failover-веток и 300 секунд для стабильных гео-веток.
Писать Lua руками не нужно: вы заполняете ветки в UI, а строку платформа собирает сама и показывает в предпросмотре. Вот что уходит в запись.
geo — страна резолвера решает, какой IP вернуть, дефолт обязателен:
if country() == "RU" then return "1.1.1.1" end -- дефолтная ветка: обязательна return "9.9.9.9"
failover — health-check порта 443, при неудаче отдаётся backup:
if ifportup(443, {"10.0.0.10"}, {timeout=1000, retries=2}) then
return "10.0.0.10"
end
return "10.0.0.20"
geo_failover — комбинация: гео-ветка, внутри неё primary/backup, снаружи общий дефолт:
if country() == "RU" then
if ifportup(443, {"10.0.0.10"}) then return "10.0.0.10" end
return "10.0.0.20"
end
return "9.9.9.9"
Полный разбор всех четырёх режимов, пошаговая настройка и чек-лист — в отдельном материале: гео-маршрутизация и failover для трекера.
Всё, что доступно в UI, доступно и по REST. Создание гео-правила:
TOKEN=...; ZONE=go.example.com
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"geo","ttl":300,
"rules":[{"country":"RU","answer":"1.1.1.1"}],
"default":"9.9.9.9"}' \
https://dns.mtalab.cc/api/v1/zones/$ZONE/lua
Предпросмотр без сохранения — удобно, чтобы проверить итоговую Lua-строку перед записью:
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"failover","default":"10.0.0.20"}' \
https://dns.mtalab.cc/api/v1/zones/$ZONE/lua/preview
Справочник стран для условий:
curl -s -H "Authorization: Bearer $TOKEN" \ https://dns.mtalab.cc/api/v1/lua/countries
Отдельного модуля нет: installer 1.2.0 уже ставит всё — Lua-записи, фоновый health-check и набор гео-данных. После установки секция гео-маршрутизации появляется на странице зоны сразу, дополнительная настройка не требуется.
База DB-IP Lite обновляется автоматически раз в месяц, так что списки стран и континентов не нужно тянуть руками. Правила совместимы с уже существующими зонами: обычные A-записи продолжают работать, а Lua-правила добавляются поверх них точечно.
Гео-маршрутизация и failover — базовые строительные блоки: на них удобно собирать мульти-ГЕО лендинги, прятать рабочие узлы за дефолтной веткой и держать сервис живым без ручных переключений. Продукт целиком — на странице DNS-платформы, а релиз-заметки и другие материалы — в блоге.
Зоны, Lua-правила, health-check и логи запросов — в одном кабинете. Демо без регистрации, данные вымышленные.
DNS-платформа подробнее → Проверить доменыПришлите схему потоков и гео — поможем собрать первые правила и проверить ответы из нужных стран.
Написать в поддержку