Управление определениями RabbitMQ
Определения RabbitMQ описывают конфигурацию брокера, такую как виртуальные хосты, пользователи, разрешения, exchange, очереди, binding, политики, параметры runtime и операторские политики. Используйте определения для проверки, продвижения или начального заполнения topology и конфигурации безопасности между environments.
Управление определениями не является полноценным механизмом backup и restore. Определения не содержат содержимое очередей, durable message stores, stream data, ресурсы Kubernetes, TLS private keys, хранимые вне RabbitMQ, или конфигурацию приложения.
Содержание
Применимые сценарииВыберите область exportЭкспорт определенийCluster-wide exportSingle-vhost exportПроверьте определения перед importImport определенийПроверьте импортированные определенияСвязанная информацияПрименимые сценарии
Используйте управление определениями, когда вам нужно:
- Переносить проверенные определения topology и access-control между environments.
- Инициализировать cluster disaster recovery теми же виртуальными хостами, пользователями, разрешениями, exchange, очередями, binding, политиками и параметрами runtime.
- Хранить очищенную topology RabbitMQ как проверяемый конфигурационный артефакт.
- Сравнивать текущую topology брокера с ожидаемой topology.
Не используйте export и import определений для восстановления сообщений в очередях.
Выберите область export
Export определений может быть cluster-wide или scoped по виртуальному хосту:
Точные ключи в экспортируемом файле зависят от версии RabbitMQ и области export. Всегда проверяйте сгенерированный JSON перед import.
Экспорт определений
Cluster-wide export
Выполните cluster-wide export, когда вам нужны и topology, и определения access-control:
Вы также можете выполнить export из RabbitMQ Pod:
Копируйте файл из Pod только если ваш operational process требует локальную копию:
Single-vhost export
Используйте single-vhost export, когда целевой виртуальный хост, пользователи и разрешения уже управляются отдельно:
В RabbitMQ 3.8.16 export с областью vhost содержит ключи topology, такие как exchange, очереди, binding, parameters и policies, но не включает users, permissions или записи virtual host. Проверяйте вывод в вашем environment, прежде чем полагаться на файл.
Проверьте определения перед import
Перед import определений в другой cluster проверьте файл на наличие:
- URI upstream, параметров Shovel, параметров Federation или политик, специфичных для сайта.
- Пользователей или разрешений, которых не должно быть в целевом environment.
- Аргументов очередей, которые должны отличаться между environments, например TTL сообщений или limits длины очереди.
- Параметров runtime, которые ссылаются на hostnames основного site.
- Хэшей паролей и других чувствительных значений, которые необходимо защитить.
Храните проверенные файлы в контролируемом location. Если вы коммитите определения в Git, сначала удалите значения, специфичные для environment, и secrets.
Import определений
Импортируйте проверенный файл в целевой RabbitMQ cluster:
Если файл был экспортирован для одного виртуального хоста, укажите тот же целевой виртуальный хост при import:
При import изнутри Pod сначала поместите файл в Pod и выполните:
Проверьте импортированные определения
Проверьте topology:
Если вы импортировали cluster-wide definitions, также проверьте объекты access-control: