Настройка secondary DNS-серверов для Designate с backend PDNS4¶
Настройка позволяет отправлять DNS NOTIFY secondary DNS-серверам и локально переопределять параметры pdns.conf без копирования полного шаблона в репозиторий региона.
Используйте эту настройку в регионах, где Designate работает с backend PDNS4, если необходимо:
передавать изменения зоны на secondary DNS-серверы после обновлений в Designate;
отправлять DNS NOTIFY на несколько secondary DNS-серверов;
задавать отдельный порт для конкретного secondary DNS-сервера;
переопределять только отдельные параметры
pdns.confбез копирования полного шаблона.
Если сервис Designate выключен в регионе, предварительно включите его согласно принятому в вашем контуре процессу сопровождения.
Настройка secondary DNS-серверов¶
Для настройки secondary DNS-серверов добавьте или измените параметры designate_ns_record и designate_also_notifies_ips в файле globals.d/REGION.yml репозитория региона.
Параметр designate_ns_record задаёт список NS-серверов, которые публикуются для зон.
Параметр designate_also_notifies_ips задаёт список secondary DNS-серверов, которым Designate отправляет DNS NOTIFY после изменения зоны.
Поддерживаемые форматы¶
Поддерживается обратная совместимость со старым форматом, в котором указывается только IP-адрес secondary DNS-сервера:
designate_also_notifies_ips:
- "10.10.10.4"
- "10.10.10.5"
В этом случае для всех secondary DNS-серверов используется значение designate_bind_port.
Для задания отдельного порта для конкретного secondary DNS-сервера используйте расширенный формат:
designate_also_notifies_ips:
- host: "10.10.10.4"
- host: "10.10.10.5"
port: 5353
Если у элемента списка не указан port, используется значение designate_bind_port.
Если используется старый формат со списком строк, для secondary DNS-сервера также используется значение designate_bind_port.
Рекомендуемая конфигурация¶
Для новых настроек используйте расширенный формат, чтобы явно задать NS-серверы зон и управлять портом каждого secondary DNS-сервера:
designate_ns_record:
- "ns1.example.com."
- "ns2.example.com."
designate_also_notifies_ips:
- host: "10.10.10.4"
port: 53
- host: "10.10.10.5"
port: 5353
Локальная кастомизация pdns.conf¶
Для локальной кастомизации PowerDNS используйте один из поддерживаемых файлов в репозитории региона:
config/designate/designate-backend-pdns4/<inventory_hostname>/pdns.conf;config/designate/designate-backend-pdns4/pdns.conf;config/designate/pdns.conf.
Если достаточно одного общего файла переопределения для всех узлов сервиса, используйте файл config/designate/pdns.conf.
Итоговый файл pdns.conf формируется через механизм объединения конфигураций, поэтому в файле переопределения указывайте только те параметры, которые требуется изменить.
Это позволяет:
не копировать полный шаблон
pdns.confв репозиторий региона;переопределять только необходимые параметры;
сохранять совместимость с базовым шаблоном роли.
Приоритет источников конфигурации¶
Итоговый pdns.conf собирается из следующих источников:
config/designate/designate-backend-pdns4/<inventory_hostname>/pdns.conf;config/designate/designate-backend-pdns4/pdns.conf;config/designate/pdns.conf;базовый шаблон роли.
Более специфичный файл имеет приоритет над менее специфичным.
Рекомендуемый способ задания порта¶
Для задания порта указывайте его в параметре local-address.
local-address={{ 'api' | kolla_address }}:{{ designate_bind_port }}
Предупреждение
Не указывайте один и тот же порт одновременно в local-address и local-port.
Параметр local-port считайте устаревшим параметром обратной совместимости. Если порт уже указан в local-address, дополнительная строка local-port не требуется.
Практический сценарий¶
Изменение конфигурации региона¶
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
globals.d/REGION.yml.Убедитесь, что в файле включён сервис Designate и задан backend PDNS4:
enable_designate: "yes" designate_backend: "pdns4"
Добавьте или измените параметры
designate_ns_recordиdesignate_also_notifies_ips.Пример:
designate_ns_record: - "ns1.example.com." - "ns2.example.com." designate_also_notifies_ips: - host: "10.10.10.4" port: 53 - host: "10.10.10.5" port: 5353
При необходимости создайте или измените файл переопределения
pdns.conf.Для общего сценария используйте
config/designate/pdns.conf.Если требуется более специфичное переопределение, используйте один из файлов:
config/designate/designate-backend-pdns4/pdns.conf;config/designate/designate-backend-pdns4/<inventory_hostname>/pdns.conf.
Пример:
local-address={{ 'api' | kolla_address }}:{{ designate_bind_port }}
Сохраните изменения в новой ветке и оформите MR. При необходимости используйте GitLab Web IDE. Подробнее см. Редактор кода.
Создайте новый пайплайн: .
В переменной
KOLLA_ARGSукажите значение-t designate.Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу deploy на этапе deploy и дождитесь её завершения.
Проверка результата¶
Считайте изменение применённым, если выполняются все следующие условия:
на узлах
designate-workerв файле/etc/kolla/designate-worker/pools.ymlв секцииalso_notifiesуказаны ожидаемые значенияhostиport;итоговый
pdns.confсодержит только необходимые параметры переопределения, а полный шаблон в репозитории региона не дублируется;secondary DNS-серверы получают DNS NOTIFY на ожидаемые порты и после изменения зоны получают актуальные данные.
Для проверки:
Проверьте на узлах
designate-workerфайл/etc/kolla/designate-worker/pools.ymlи убедитесь, что в секцииalso_notifiesуказаны ожидаемые значенияhostиport.Проверьте файл
/etc/kolla/designate-backend-pdns4/pdns.confна узлеdesignate-backend-pdns4и убедитесь, что порт задан черезlocal-address.Создайте тестовую зону и тестовую запись, затем убедитесь, что secondary DNS-сервер получил обновление и отдаёт актуальные данные.
Пример команд OpenStack CLI:
$ openstack zone create --email test@test.com test.com. $ openstack recordset create test.com. notify-test.test.com. --type TXT --records "ping-1"
Ограничения и обратная совместимость¶
Настройка применяется только к сценарию с backend PDNS4.
Изменение затрагивает роль Designate в Kolla-Ansible.
Существующие конфигурации со старым форматом designate_also_notifies_ips продолжают работать без изменений.
Переход на расширенный формат не обязателен, но рекомендуется для новых конфигураций, если требуется управлять портами secondary DNS-серверов по отдельности.