Работа с кластером#
В данном разделе описаны основные сценарии работы с кластером SMBX: запуск, остановка и перезапуск SMBX, назначение прав администратора сопровождения, сохранение, восстановление и удаление архивной копии настроек кластера, создание и удаление адресов и очередей на брокере SMBX.
Ручной способ#
На сервере, с которого производилась установка, выполнить команду:
ansible-playbook -i inventories/<ID>/inventory artemis.yml --ask-vault-pass
, где ID — имя созданного inventory.
С помощью Jenkins#
Наименование задания Jenkins: artemis_custom.
Параметры запуска:
job_config_renew— параметр, использующийся для перенастройки задания Jenkins. Меняет значения по умолчанию всех параметров, обновляет список inventory. Сохраняет предыдущее состояние параметров inventories_repo, inventories_branch, inventories_path. Обновляет список тегов для всех playbooks. По умолчанию не указывается;inventory— выбратьinventory, для которого необходимо произвести последовательное обновление;nexusUrl— полный путь до дистрибутива (можно указать несколько через запятую);playbook— запускаемый playbook:artemis.yml— работа с кластером SMBX;tags— используемые теги:admin_roles— назначение прав администратора сопровождения;audit— обновляет конфигурацию аудита (изменяет файл audit.properties по данным из файла vars.yml (разделartemis.audit_configs)из выбранногоinventory) с загрузкой новых/обновленных сертификатов на сервер для подключения к системе аудита, например, Platform V Audit; данные сертификатов для обновления задаются в блокеartemis.audit_configsв файле vars.yml, сами сертификаты должны находиться в папке ssl в заданномinventory;backup— сохранение архивной копии настроек кластераartemis.installdirв директориюartemis.backup_installdirиз файла vars.yml. Входит в тегinstall;backup_remove— удаление архивной копии настроек кластера изartemis.backup_installdirиз файла vars.yml;backup_restore— очисткаartemis.installdirи восстановление из архивной копии настроек кластера изartemis.backup_installdirиз файла vars.yml. Перед остановкой брокера для восстановления архивной копии проверяется наличие файла архива. В случае его отсутствия остановка брокера не осуществляется, выполнение Jenkins job прерывается с ошибкой об отсутствии бэкап-файла;broker_update— установка брокера без удаления текущих данных (очереди, пользователи, права);change_acceptor- изменение настроек аксептора (Важно: данный тег необходимо использовать либо с тегомrestart, либо с тегамиstopиstartодновременно);change_max_connections— изменение количества максимально открытых коннектов от пользователей, заполняется в блокеartemis.custom_max_connectionsфайла vars.yml;config_log_plugin— обновляет конфигурацию для BrokerConfigLoggingPlugin, настраивается в блокеartemis.rate_limitфайла vars.yml;connection_limiter_plugin— обновляет конфигурацию для ConnectionLimiterPlugin (ограничивает кол-во подключений, в зависимости от источника соединения) , настраивается в блоке artemis.connection_limiter_plugin файла vars.yml;encryption_plugin— обновляет конфигурацию для EncryptionMessagePlugin, настраивается в блокеartemis.rate_limitфайла vars.yml;distribute— распаковка архива дистрибутива во временную директорию на сервере;install— распаковка дистрибутива изtmp_dirвartemis.installdir, создание брокера, настройка конфигурационных файлов;jmxreadonly_roles— отвечает за изменения конфигурации доступа пользователе с ролью jmxreadonly;keycloak— обновляет настройки интеграции с IAM Proxy/keycloak;latency— обновляет конфигурацию для MessagePlugin, настраивается в блокеartemis.latency_plugin.settingsфайла vars.yml;logback— обновляет конфигурацию логирования (изменяет файл logback.xml по данным из файла vars.yml (разделartemis.logback_kafka_appender) из выбранногоinventory) с загрузкой новых/обновленных сертификатов на сервер для подключения к системе журналирования, например, Platform V Monitor; данные сертификатов для обновления задаются в блокеartemis.logback_kafka_appenderв файле vars.yml, сами сертификаты должны находиться в папке ssl в заданномinventory;metric_plugin— обновляет конфигурацию для MetricPlugin, настраивается в блокеartemis.rate_limitфайла vars.yml;plugin_backup— обновляет конфигурацию для BrokerBackupPlugin (автоматическое создание архивных копий), настраивается в блокеartemis.backup_pluginфайла vars.yml;rate_limit— обновляет конфигурацию для RateLimiterPlugin, настраивается в блокеartemis.rate_limitфайла vars.yml;restart— перезапуск брокера (совмещает тегиstartиstop);start— запуск брокера;status— проверка статуса (если порт брокера открыт, считаем, что брокер запущен). Входит в тег start;stop— остановка брокера;uninstall— остановка SMBX и удаление директории установки/логов/данных (директории указаны в файле vars.yml выбранногоinventoryв параметрахartemis.installdir,artemis.datadir,artemis.logdir);vault— обновляет конфигурацию взаимодействия с HashiCorp Vault (по данным из файла vars.yml из выбранногоinventoryс загрузкой новых/обновленных сертификатов на сервер для подключения к HashiCorp Vault; данные сертификатов для обновления задаются в файле vars.yml, сами сертификаты должны находиться в папке ssl в заданномinventory;vault_add_new_broker_DN— добавляет DN сертификата из блокаartemis.super_userв группу amq для бесшовного перехода на использование сертификата из HashiCorp Vault;vault_remove_old_broker_DN— удаление старого DN сертификата (после перехода на сертификаты из HashiCorp Vault);xml_change— модификация конфигурационных xml файлов, указанных в блокеartemis.xml_change. Входит в тегinstall;
artemis_queues_roles.yml— работа с адресами, очередями и пользователями SMBX (через конфигурацию вinventory);tags— используемые теги:erase_queue— удаляет очереди, указанные в файле vars.yml. Если очередь была единственной в адресе, то удаляется вместе с адресом. Пример заполнения vars.yml для удаления очереди:
artemis_queues: list: - name: имя_очереди address: имя_адреса routing: способ_передачи_сообщений_от_адреса_к_очередям # Необязательный параметр. Доступные значения: anycast (добавление в одну произвольную очередь данного адреса), multicast (добавление во все очереди данного адреса) - name: имя_очереди2 address: имя_адреса2 max_size_bytes: максимальный_размер_сообщений_в_адресеerase_role— удаляет права пользователя, указанные в файле vars.yml; Пример заполнения vars.yml для удаления прав пользователя:
artemis_roles: - user: DN_пользователя queue: имя_очереди address: имя_адреса type: тип_операции,_доступны_send/consume/browse
artemis_roles.yml— работа с ролями пользователей SMBX (через конфигурацию вinventory);tags— используемые теги:erase_role— удаляет роли пользователей, указанные в файле vars.yml (пример приведен выше);
artemis_queues.yml— работа с адресами и очередями SMBX (через конфигурацию вinventory);tags— используемые теги:erase_queue— удаление очередей, указанных в файле vars.yml (пример приведен выше); если очередь была единственной в адресе, то удаляется вместе с адресом;
emailTo— список адресов электронной почты для отправки технических писем с логами;custom_vault_password— указывается, если нужен ручной ввод пароля для Ansible Vault;jenkins_slave— выбор Slave Jenkins;jdk_tool— указать Jenkins Tool с нужной версией JDK;ansible_branch— ветка скриптов развертывания (в настройках Jenkins Job указать ${ansible_branch});ansible_version— версия используемого ansible, например ansible29;nexus_user_cred— Jenkins Username With Password Credential ID для выкачивания дистрибутива устанавливаемого компонента из Nexus. Чтобы получить username и password для Nexus из SecMan, надо заполнить поле secman_url и это поле в формате:
JenkinsCredID|SecManPath:SecManKeys|SecManParams
Здесь:
JenkinsCredID - Jenkins Vault App Role Credential ID c реквизитами для подключения к SecMan;
SecManPath - Путь к секретам в SecMan;
SecManKeys - Имена полей для username и password в SecMan через запятую;
SecManParams - Параметры для подключения к SecMan через точку с запятой. Могут быть пропущены вместе с |, если параметры по умолчанию;vault_cred— Jenkins secret file credential ID со строкой для расшифровки паролей ansible vault (можно несколько через запятую). Чтобы получить ansible vault password из SecMan, надо заполнить поле secman_url и это поле в формате:
JenkinsCredID|SecManPath:SecManKey|SecManParams
Здесь:
JenkinsCredID - Jenkins Vault App Role Credential ID с реквизитами для подключения к SecMan;
SecManPath - Путь к секрету в SecMan;
SecManKey - Имя поля для ansible vault password в SecMan;
SecManParams - Параметры для подключения к SecMan, через точку с запятой. Могут быть пропущены вместе с |, если параметры по умолчанию (в качестве пароля можно использовать не строку, а файл в base64 формате и секрет в SecMan с именем, оканчивающимся на „Base64“, например myVaultBase64);server_ssh_cred— ID credential типа ssh key для подключения к серверам. При задании параметра secman_url - полный путь в HashiCorp Vault, например {ID credential типа vault app role для получение секретов из HashiCorp Vault}|/<путь до>/ssh:{юзер},{ключ},{passphrase} (в качестве ключа можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64, например myPrivateKeyBase64);secman_url— URL для подключения к HashiCorp Vault;ssl_verify— проверяем, являются ли сертификаты HashiCorp Vault/Nexus доверенными;second_hand_approve— подтверждение запуска другим администратором (контроль «второй рукой»). Двухэтапное подтверждение запуска, требующее действия другого администратора для запуска задания Jenkins Job. При активации этой опции одному администратору будет недоступна возможность запуска задания Jenkins Job без подтверждения со стороны другого администратора;inventories_repo— репозиторий с inventory (ssh://);inventories_branch— ветка репозитория;inventories_path— путь до inventories от корня репозитория.