Установка
Требования#
Требования к серверам#
- серверы на Linux из семейств Debian-compatible или RHEL-compatible;
- версия ядра Linux не ниже
5; - локальные средства host firewall (
firewalld,ufwи аналогичные) на серверах SmartCPD должны быть отключены; - системное время на всех серверах SmartCPD должно быть синхронизировано с единым источником времени;
- для выполнения setup нужен пользователь с правами запуска команд
dockerиsudo.
Синхронизация времени#
Все серверы SmartCPD должны использовать единый доверенный источник времени через NTP-совместимый механизм, например systemd-timesyncd, chrony или корпоративные NTP-серверы.
Если инфраструктура входит в домен Active Directory, в качестве источника времени рекомендуется использовать контроллеры домена или доменное имя, предоставляющее доступ к ним.
Перед установкой и после добавления новых нод необходимо проверить, что:
- NTP-синхронизация включена и находится в рабочем состоянии;
- расхождение времени между серверами SmartCPD не превышает
1секунду; - серверы
service,worker,balancer,analyzer, PostgreSQL и внешние балансировщики, участвующие в контуре вызова, используют согласованное время.
Несинхронизированное время может приводить к некорректной работе TTL-зависимых механизмов, лицензирования, учета активных вызовов, анализа логов и временных рядов мониторинга.
Worker-ноды#
На worker-нодах настоятельно рекомендуется полностью отключить swap.
Использование swap может приводить к непредсказуемому росту задержек в latency-чувствительном контуре обработки вызовов.
Отключить swap до следующей перезагрузки:
sudo swapoff -aПроверить состояние:
swapon --showЕсли команда не выводит ни одного устройства или файла, swap отключен.
Чтобы swap не включился после перезагрузки, необходимо также отключить соответствующие swap-разделы или swap-файлы в конфигурации операционной системы.
Например, для конфигурации через /etc/fstab следует удалить или закомментировать записи с типом swap.
Требования к Docker#
- должен быть установлен Docker версии не ниже
26; - версия Docker должна быть одинаковой на всех серверах установки;
- если на серверах используются
SELinuxилиAppArmor, должны применяться стандартные механизмы безопасности Docker.
Рекомендуемые материалы Docker:
Доступ к артефактам#
- все серверы должны иметь доступ к Docker-репозиторию Altuera
cr.repo.altuera.ru; - доступ к репозиторию запрашивается у аккаунт-менеджера Altuera.
Если доступ к
cr.repo.altuera.ruотсутствует, образы необходимо заранее подготовить и загрузить на все серверы, участвующие в установке SmartCPD. Для подготовки offline-набора и его загрузки на целевые серверы можно использовать командыimages-saveиimages-loadскриптаsmartcpd-setup.sh, см. Справка поsmartcpd-setup.sh.
Требования к размещению ролей#
- до начала установки должны быть определены серверы, на которые будут назначены роли
service,balancer,worker,analyzer; - состав ролей и их допустимое совмещение должны соответствовать выбранной схеме развертывания.
Требования к ролям нод описаны в разделе Роли нод SmartCPD, а требования к HA-схеме и размещению контуров — в разделе Поддерживаемая HA-конфигурация.
Требования к качеству сети#
До начала установки необходимо проверить, что ноды будущего Docker Swarm cluster находятся в одном сетевом контуре с предсказуемой связностью.
Для SmartCPD важны задержка, потери, jitter и длительность кратковременных сетевых обрывов между нодами Docker Swarm cluster. Ориентиры нормального режима и зоны риска приведены в разделе Требования к качеству сети.
Требования к хранилищам#
SmartCPD использует два корневых пути хранения данных:
Local data root, по умолчанию/opt/scpd;Shared data root, по умолчанию/opt/shared_data.
Local data root используется для данных конкретной ноды. Этот путь должен быть подготовлен на всех серверах, участвующих в установке SmartCPD.
Shared data root используется для компонентов, которым требуется переносимое состояние. В отказоустойчивой схеме этот путь должен быть подготовлен и примонтирован по одному и тому же пути на всех серверах, где используется общее хранилище.
Записи детекций CDR Collector размещаются в подкаталоге detections_data этого пути.
Использование хранилищ по ролям:
service- используетLocal data root, а в HA-схеме такжеShared data root;balancer- используетLocal data root;worker- используетLocal data root;analyzer- используетLocal data root.корневые пути должны быть одинаковыми на всех серверах, где они используются;
корневые пути должны быть доступны пользователю контейнеров по заданным
uidиgid;корневые пути подготавливаются до начала установки;
необходимые рабочие подкаталоги внутри этих путей создаются setup-скриптами.
Если отказоустойчивое распределенное хранилище не используется, в параметре Shared data root можно указать путь локального хранилища.
Архитектурная модель local/shared storage описана в разделе Хранилища данных, включая подраздел Отказоустойчивое распределенное хранилище данных.
Состав поставки#
Поставка setup SmartCPD строится вокруг каталога setup/.
В состав поставки входят:
smartcpd-docker-setup.shдля настройки Docker на сервере и Docker Swarm, подробнее в документе Настройка Docker и Docker Swarm;smartcpd-setup.shдля подготовки конфигурации SmartCPD, генерации stack-артефактов и deployment;smartcpd-stack-template.ymlкак основной шаблон стека из поставки;compose.override.example.ymlкак пример локальногоcompose.override.ymlдля override-настроек и observability-параметров;compose.override.migrate.ymlкак готовый временный override для миграции с SmartCPD 5.2.x или 5.3.x на 6.0.0;secrets.example.envкак пример файла исходных секретов для non-interactive генерации setup-секретов;versions.envс версией поставки;db/postgresсо SQL-скриптами для подготовки PostgreSQL.
В ходе setup формируются и используются следующие state-файлы и runtime-артефакты:
smartcpd-setup.envкак сохраненные параметры setup;stack/compose.generated.ymlкак сгенерированный stack из шаблона;stack/compose.runtime.ymlкак итоговый compose-файл с учетомcompose.override.yml;stack/smartcpd-node-*-setup.shкак сгенерированные скрипты настройки нод;images/как каталог для offline-набора образов;backup/как каталог с резервными копиями параметров setup и сгенерированных файлов стека.
Сгенерированные файлы в stack/ и docker/ считаются рабочими файлами setup.
Их не следует редактировать вручную, если это не предусмотрено отдельным описанным сценарием через compose.override.yml.
Подготовка PostgreSQL#
До запуска setup PostgreSQL должна быть подготовлена со стороны инфраструктуры Заказчика.
Необходимо:
- использовать PostgreSQL версии
14+; - если PostgreSQL используется в отказоустойчивой схеме, подготовить единый endpoint PostgreSQL для SmartCPD; требования к HA-схеме БД описаны в разделе База данных;
- выбрать модель использования PostgreSQL: общую учетную запись для сервисов, включая billing, или отдельные per-service роли; поддерживаемые варианты описаны в разделе Модель доступа;
- определить, используются ли optional SIPCapture- и/или PDS-слои;
- определить, нужны ли optional administrative roles
dboи/илиread-only; - обеспечить сетевую доступность PostgreSQL со стороны компонентов SmartCPD;
- создать БД SmartCPD и учетные записи PostgreSQL с правами, соответствующими выбранной модели доступа.
Для подготовки БД можно использовать SQL-скрипты из поставки:
db/postgres/sql/00-sa-create-db-once.sql- создание БД;db/postgres/sql/01-sa-users.sql- создание ролей/пользователей, паролей и administrative memberships;db/postgres/sql/02-dbo-grants.sql- применение схем,search_path, default privileges и grants.
Подробный состав учетных записей и правила выбора модели доступа описаны в разделе Модель доступа, а порядок применения SQL-скриптов — в разделе Скрипты поставки.
Данные, которые нужно собрать до установки#
До запуска setup должны быть известны:
Значения по умолчанию, если они есть, указаны в квадратных скобках.
Организация и администратор портала
ИННорганизации, на которую будет выписана лицензия;emailадминистратора портала;- пароль администратора портала;
- имя стека Docker Swarm [
scpd].
Доступ к порталу
- будет ли портал публиковаться напрямую или через
reverse-proxyс терминированием TLS; - полное доменное имя (
FQDN) портала; - порт публикации портала [
443]; - режим публикации портала [
HTTPS]:HTTP(только при использовании reverse-proxy) илиHTTPS; - файл сертификата и файл ключа портала, если используется HTTPS;
Доступ к БД
- хост, порт и имя базы данных PostgreSQL;
- timezone БД в формате IANA, например
Europe/Moscow; значение обязательно, сохраняется вSMARTCPD_DB_TZи должно точно совпадать с timezone контейнеровSMARTCPD_TZ; - учетные данные пользователей БД в соответствии с выбранной моделью использования PostgreSQL.
Интеграция со SmartContact
- требуется ли интеграция со SmartContact;
- URL сервера SmartContact.
Установка и настройка SmartContact не входят в состав поставки SmartCPD.
Для работы интеграции SmartContact требуется включенный
SIP trace backend. Параметры backend, требования к PostgreSQL и параметрыSIP trace web UIописаны в разделе SIP trace.Для доступа SmartContact к данным SmartCPD требуется доступ к БД SmartCPD: таблице
public.cdr_cdrи схемеhomer.Если для внешней интеграции нужен отдельный пользователь с доступом к CDR-данным и
homer, задайтеDB_PDS_USER/DB_PDS_PASSWORDпри запускеdb/postgres/sql/01-sa-users.sql, а затем применитеdb/postgres/sql/02-dbo-grants.sql.
Хранилища данных
- локальный путь
Local data root[/opt/scpd]; - путь
Shared data root[/opt/shared_data], если используется переносимое общее хранилище;
Параметры запуска контейнеров и подключения к Docker
uidиgidпользователя контейнеров (опционально);- часовой пояс контейнеров
SMARTCPD_TZ[Europe/Moscow]; - диапазон адресов Docker-сетей размера
/16[172.27.0.0]; - способ подключения контейнеров к Docker API: [
unix socket] илиmTLS over TCP; - путь к Docker socket или TCP-параметры и TLS-секреты Docker API;
- имя группы с доступом к Docker socket [
docker];
Доступ к облаку Altuera для обновления моделей
- будет ли использоваться автоматическое обновление моделей из облака Altuera [
Да]; - адрес и параметры
HTTPS proxy, если он используется для доступа в интернет; - CA-файл proxy, если он требуется;
- подготовленные файлы моделей, если обновление будет выполняться вручную.
Сроки хранения данных
- срок хранения CDR [
6 месяцев]; - срок хранения истории детекций [
30 дней]; - срок хранения полных записей детекций [
1 день]; - срок хранения записей клиентской стороны (
b_side) [7 дней]; - срок хранения метрик [
6 месяцев]; - размер
docker logsдля каждого контейнера [100 MB]; - срок хранения архива логов [
14 дней]; - размещение архива логов на локальном или сетевом диске [
/opt/scpd/logs]; - лимит места для всех лог-файлов в выбранном месте размещения [
100 GB].
Процесс установки#
Все команды этого раздела выполняются на сервере, который в целевой схеме одновременно будет service-нодой SmartCPD и manager-нодой Docker Swarm, если явно не указано иное.
1. Подготовить рабочую директорию setup#
Скопировать данные поставки в рабочую директорию на выбранном сервере.
Пример:
mkdir -p /opt/scpd/setup
cp -r <поставка>/setup/* /opt/scpd/setup/
cd /opt/scpd/setupСделать setup-скрипты исполняемыми:
chmod +x *.shДальнейшую установку следует выполнять только на этом сервере, если явно не указано иное.
2. Настроить Docker и Docker Swarm#
Docker и Docker Swarm можно подготовить вручную по документу Docker. В этом случае шаг с smartcpd-docker-setup.sh можно пропустить.
Если используется штатный сценарий поставки, запустить smartcpd-docker-setup.sh от имени обычного пользователя с доступом к docker и sudo.
Если Docker Swarm cluster уже создан, это не мешает установке: скрипт подхватит существующие настройки. Если кластер еще не создан, скрипт создаст его автоматически.
В результате будет сгенерирован скрипт:
docker/smartcpd-docker-node-setup.shЭтот файл нужно скопировать на все остальные ноды кластера и выполнить там от имени root или через sudo.
На текущем сервере выполнять этот скрипт не нужно.
После этого следует убедиться, что все серверы добавлены в Docker Swarm cluster:
docker node ls3. Выполнить настройку SmartCPD#
Запустить smartcpd-setup.sh от имени обычного пользователя:
./smartcpd-setup.shЗаполнить необходимые параметры setup.
Если интерактивная настройка была прервана или завершилась ошибкой, ее можно продолжить с того же места:
./smartcpd-setup.sh --continueНа вопрос о запуске установки сразу после завершения setup следует ответить отказом.
4. Разметить ноды#
После завершения интерактивной настройки запустить:
./smartcpd-setup.sh labelsИ назначить всем нодам требуемые роли SmartCPD.
5. Подготовить ноды к запуску#
После генерации setup-артефактов будут сформированы role-specific скрипты:
stack/smartcpd-node-*-setup.shЭти скрипты нужно скопировать на серверы с соответствующими ролями и выполнить на них.
Если сервер совмещает несколько ролей, на него нужно скопировать и последовательно выполнить все требуемые role-specific скрипты.
В отличие от docker/smartcpd-docker-node-setup.sh, role-specific setup scripts должны выполняться и на текущем сервере установки, если ему назначены соответствующие роли.
6. Выполнить запуск#
После подготовки всех нод выполнить:
./smartcpd-setup.sh deployЭта команда развернет или обновит стек SmartCPD в Docker Swarm.
Пример вывода:
==> Deploying stack scpd
Creating service scpd_metrics
Creating service scpd_grafana
Creating service scpd_log2file
Creating service scpd_balancer
Creating service scpd_config-server
Creating service scpd_license-server
Creating service scpd_analyzer
Creating service scpd_cdr-collector
Creating service scpd_amd
Creating service scpd_billing-server
Creating service scpd_dircleaner
Creating service scpd_mgw
Creating service scpd_resolver
Creating service scpd_docker-health-exporter
Creating service scpd_redis
Creating service scpd_portal-api
Creating service scpd_portal-frontend
Creating service scpd_smartcpd
Creating service scpd_cloud-connector
Creating service scpd_redis-sentinel
overall progress: 0 out of 1 tasks
1/1: starting [============================================> ]Когда появляется строка overall progress: - выполнение команды можно остановить Ctrl+C. Это нормально и не прервет процесс.
7. Дождаться окончания запуска#
Дождаться запуска сервисов. Старт может занять некоторое время - должны скачаться и развернуться образы, запуститься сервисы, развернуться схемы БД. Контролировать процесс можно командой: docker stack services <stack_name>.
Пример нормального состояния после запуска:
ID NAME MODE REPLICAS
wg6z9yolitfm scpd_amd global 1/1
wwo18k7m2q0x scpd_analyzer replicated 1/1
m3jne8o06379 scpd_balancer global 1/1
r3fdm3a2uz1r scpd_billing-server replicated 1/1
0itxyppublbj scpd_cloud-connector replicated 1/1
xxyvu2xghrjj scpd_config-server replicated 1/1
pov175b12p5f scpd_dircleaner global 1/1
b366ca9vdg4u scpd_docker-health-exporter global 4/4
78lawwkpkptl scpd_grafana replicated 1/1
x65pfn71ujxr scpd_license-server replicated 1/1
m85ys0xwsudk scpd_log2file global 4/4
cgywvqj7y72b scpd_cdr-collector replicated 1/1
ecvcmk4zleyd scpd_metrics replicated 1/1
bo7jcqbbsk04 scpd_mgw global 1/1
ajc9kuhv7yht scpd_portal-api replicated 1/1
60itfaqdjm2p scpd_portal-frontend replicated 1/1
obzll0l9kzdu scpd_redis global 1/1
onijinos2cky scpd_redis-sentinel replicated 2/3 (max 2 per node)
ijb654n9a251 scpd_resolver replicated 1/1
ut26d7hqf0g1 scpd_smartcpd global 1/1Нормальное состояние запуска определяется по столбцу
REPLICAS: для включенных сервисов левое значение не должно быть0, а левое и правое значения должны совпадать.
Исключения:
redis-sentinelможет иметь состояние2/3, если в схеме используется только однаservice-нода;cloud-connector,docker-health-exporterиlog2fileмогут иметь0/0, если они не были включены в setup.
8. Проверка запуска#
После deployment рекомендуется проверить:
- стек появился в Docker Swarm под ожидаемым именем;
- обязательные сервисы перешли в рабочее состояние;
- портал открывается по настроенному адресу;
- авторизация администратора работает;
- сервисы не находятся в цикле постоянных рестартов;
- у
billing-serverнет признаков незавершенной миграции, если выполняется обновление с миграцией данных; - labels нод соответствуют целевой схеме размещения.
Для первичной проверки обычно используются:
docker stack services <stack_name>
docker service ps --no-trunc <service_name>
docker service logs <service_name>Состояние встроенного контура мониторинга и рекомендации по диагностике инфраструктуры описаны в документе Логирование и мониторинг.
9. После запуска#
- Залогиниться, используя логин и пароль администратора, указанные при установке.
- Открыть раздел tenant
Лицензияи загрузить временный лицензионный файл версии 3, если он был предоставлен. - В разделе
Лицензияскачать Fingerprint и отправить его аккаунт-менеджеру Altuera для генерации постоянной лицензии. - После получения постоянного лицензионного файла версии 3 загрузить его в том же разделе
Лицензия. - Если
cloud-connectorне используется, открыть раздел уровня платформыМоделии загрузить файлы облачных моделей вручную.
Изменение настроек#
Для изменения runtime-параметров SmartCPD следует использовать ./smartcpd-setup.sh.
Изменение через повторный запуск setup#
Для полного изменения параметров через интерактивный сценарий запустить:
./smartcpd-setup.shСкрипт заново пройдет по параметрам setup и сохранит обновленное состояние в smartcpd-setup.env.
Если в ходе такого прохода изменились role-specific настройки нод, следует отказаться от немедленного deployment, выполнить обновленные stack/smartcpd-node-*-setup.sh на нужных нодах и затем отдельно запустить ./smartcpd-setup.sh deploy.
Если интерактивная настройка была прервана, ее можно продолжить:
./smartcpd-setup.sh --continueИзменение через smartcpd-setup.env#
Если требуется точечно изменить runtime-параметры, можно отредактировать smartcpd-setup.env напрямую, затем выполнить:
./smartcpd-setup.sh generate
./smartcpd-setup.sh deployВ smartcpd-setup.env обязательно должны быть заданы SMARTCPD_DB_TZ и SMARTCPD_TZ с одинаковым непустым значением. При генерации stack timezone БД передаётся сервисам как DB_TZ, а SMARTCPD_TZ управляет timezone контейнеров. Setup проверяет точное совпадение значений при интерактивной настройке, а также перед командами generate и deploy; конфигурация с разными timezone не поддерживается. Поэтому установку и изменение конфигурации необходимо выполнять через smartcpd-setup.sh.
generateбезопасен: эта команда только обновляет сгенерированные файлы и сохраняет предыдущее состояние вbackup/.
deployПЕРЕЗАПУСТИТ все инстансы измененных сервисов. Неизмененные сервисы Docker Swarm затронуты не будут.
Если изменения затрагивают role-specific настройки нод, после generate нужно скопировать и при необходимости повторно выполнить соответствующие stack/smartcpd-node-*-setup.sh на нужных нодах, а затем выполнить deploy.
Изменение ролей нод#
Если существующей ноде нужно добавить новую роль SmartCPD, сначала следует выполнить на ней соответствующие stack/smartcpd-node-*-setup.sh для добавляемых ролей.
После этого нужно запустить:
./smartcpd-setup.sh labelsИ назначить ноде новые labels.
После изменения labels Docker Swarm автоматически переразместит сервисы в соответствии с текущей конфигурацией стека. Отдельный deploy для этого сценария не требуется.
Добавление новой ноды#
Перед добавлением новой ноды рекомендуется заново запустить smartcpd-docker-setup.sh на активной service-ноде, которая одновременно является manager-нодой Docker Swarm. Это позволяет заново сгенерировать актуальный docker/smartcpd-docker-node-setup.sh с корректным адресом manager-ноды.
Далее порядок действий такой:
- скопировать
docker/smartcpd-docker-node-setup.shна новую ноду и выполнить его там от имениrootили черезsudo; - скопировать на новую ноду соответствующие
stack/smartcpd-node-*-setup.shдля назначаемых ролей и выполнить их; - запустить
./smartcpd-setup.sh labelsи назначить новой ноде требуемые labels.
После назначения labels Docker Swarm автоматически подключит новую ноду к текущей схеме размещения сервисов. Отдельный deploy для этого сценария не требуется.
Полный останов и повторный запуск#
Если требуется полностью остановить стек и затем поднять его снова, можно использовать:
./smartcpd-setup.sh down
./smartcpd-setup.sh deployПодробности по этим командам описаны ниже в разделе Справка по smartcpd-setup.sh.
Использование compose.override.yml#
compose.override.yml нужен для локальных настроек поверх стандартной схемы установки из поставки.
Основная причина использовать именно compose.override.yml состоит в том, что обновления и повторная генерация файлов стека не должны переписывать такие локальные изменения.
compose.override.yml размещается в корне каталога setup/ рядом с smartcpd-setup.sh.
Для миграции с SmartCPD 5.2.x или 5.3.x поставляется готовый файл compose.override.migrate.yml. Порядок его использования и удаления описан в разделе «5.2.12, 5.3.2 -> 6.0.0» документа «Обновление».
Рабочий compose.override.yml:
- не генерируется setup-скриптом;
- предназначен для локальных настроек поверх основного шаблона из поставки;
- учитывается при сборке
stack/compose.runtime.yml; - не должен заменять базовые параметры setup, которые уже поддерживаются через
smartcpd-setup.sh.
Сгенерированные файлы stack/compose.generated.yml и stack/compose.runtime.yml не следует править вручную.
Для нестандартных локальных настроек нужно использовать compose.override.yml.
После изменения compose.override.yml следует выполнить:
./smartcpd-setup.sh generate
./smartcpd-setup.sh deployПорядок применения такой:
- внести изменения в
compose.override.yml; - выполнить
./smartcpd-setup.sh generate; - выполнить
./smartcpd-setup.sh deploy.
При deploy Docker Swarm применит обновленный runtime compose.
Сервисы, конфигурация которых изменилась через compose.override.yml, будут перезапущены.
Такие изменения следует выполнять в согласованное окно работ, если перезапуск может повлиять на эксплуатацию.
Если compose.override.yml существует, он также попадает в локальные snapshot-бэкапы в каталоге backup/.
Сброс временных переменных окружения#
Простое удаление переменной из compose.override.yml или удаление самого файла не гарантирует сброс ранее применённого значения в существующем Docker Swarm service. Если для переменной в основном smartcpd-stack-template.yml не задано штатное значение, при обновлении service прежнее значение может сохраниться.
Предпочтительный способ сброса — явно указать требуемое штатное значение и повторно применить stack. Например, после миграции нужно включить синхронизацию биллинга и отключить режим восстановления суперадминистратора:
services:
billing-server:
environment:
BILLING_SYNC: "true"
portal-api:
environment:
SUPERADMIN_RESTORE: "false"После изменения выполнить:
./smartcpd-setup.sh generate
./smartcpd-setup.sh deployУбедиться, что Docker Swarm применил требуемые значения:
docker service inspect <stack_name>_billing-server \
--format '{{range .Spec.TaskTemplate.ContainerSpec.Env}}{{println .}}{{end}}' \
| grep '^BILLING_SYNC='
docker service inspect <stack_name>_portal-api \
--format '{{range .Spec.TaskTemplate.ContainerSpec.Env}}{{println .}}{{end}}' \
| grep '^SUPERADMIN_RESTORE='Если переменная должна быть полностью удалена из service spec и штатное значение невозможно задать явно, удалить временный override, заново сформировать конфигурацию и полностью пересоздать stack:
./smartcpd-setup.sh generate
./smartcpd-setup.sh down
./smartcpd-setup.sh deployПолное пересоздание stack вызывает остановку всех сервисов и должно выполняться только в согласованное окно работ. После запуска необходимо повторно проверить переменные через docker service inspect.
Настройка дополнительной безопасности NGINX#
Если для portal-frontend требуется дополнительная настройка TLS и NGINX сверх базового сценария setup, это следует оформлять через compose.override.yml.
Пример:
services:
portal-frontend:
environment:
NGINX_SSL_PROTOCOLS: "TLSv1.2 TLSv1.3"
NGINX_SSL_CIPHERS: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305"
NGINX_SSL_PREFER_SERVER_CIPHERS: "off"
NGINX_SSL_ECDH_CURVE: "X25519:prime256v1:secp384r1"
NGINX_SSL_CONF_COMMAND: ""Такое переопределение нужно, если инсталляция должна соответствовать дополнительным корпоративным требованиям по TLS, наборам шифров и параметрам NGINX.
Настройка таймаута для cloud-connector при использовании proxy#
Если доступ к облаку Altuera идет через прокси и в контуре есть повышенная сетевая задержка, таймаут cloud-connector можно увеличить через compose.override.yml.
Пример:
services:
cloud-connector:
environment:
CLOUD_HTTP_TIMEOUT: "5m"Такое переопределение нужно, если стандартного таймаута недостаточно при работе через корпоративный прокси, проверку TLS-трафика или медленный внешний канал.
Восстановление superadmin#
Для разового восстановления bootstrap-пользователя superadmin используется параметр SUPERADMIN_RESTORE.
Его можно временно включить через compose.override.yml.
Пример:
services:
portal-api:
environment:
SUPERADMIN_RESTORE: "true"
SUPERADMIN_USERNAME: "superadmin"
SUPERADMIN_ROLE_NAME: "superadmin"Такой override включает режим восстановления superadmin при старте portal-api.
При этом portal пересоздает bootstrap-роль с id=0 и bootstrap-пользователя с id=0.
Email берется из setup-параметра SMARTCPD_SUPERADMIN_EMAIL, а пароль — из секрета, связанного с SMARTCPD_SUPERADMIN_PASSWORD_SECRET.
Если восстановление не выполнилось, это обычно означает конфликт с уже существующими пользователями или ролями.
Информация о таком конфликте выводится в логах portal-api.
В этом случае конфликтующие bootstrap-данные можно изменить:
- через обычные setup-параметры, если нужно изменить
SMARTCPD_SUPERADMIN_EMAIL; - через дополнительные переменные окружения в
compose.override.yml, если нужно временно изменитьSUPERADMIN_USERNAMEи/илиSUPERADMIN_ROLE_NAME.
Этот режим следует использовать только как временную операционную меру для восстановления доступа. После восстановления override нужно убрать, затем снова выполнить:
./smartcpd-setup.sh generate
./smartcpd-setup.sh deployСистемные изменения, выполняемые скриптами#
smartcpd-setup.sh#
smartcpd-setup.sh работает в пределах текущей рабочей директории setup/ и не изменяет системные файлы сервера вне нее.
Скрипт:
- собирает и сохраняет параметры setup в env-файлы;
- генерирует stack-артефакты в
stack/; - формирует offline-набор образов в
images/; - создает локальные snapshot-бэкапы в
backup/; - выполняет deployment и удаление Docker Swarm stack через Docker CLI.
В штатном сценарии smartcpd-setup.sh не требует sudo и должен запускаться от обычного пользователя с доступом к Docker daemon.
stack/smartcpd-node-*-setup.sh#
Сгенерированные node setup scripts применяются на нодах соответствующих ролей и подготавливают файловую структуру данных для контейнеров SmartCPD.
Эти скрипты могут:
- создавать директории в
Local data root; - создавать директории в
Shared data root, если он используется в текущей схеме установки; - задавать права владения этими каталогами пользователю контейнеров в соответствии с настроенным
uid.
Поскольку такие каталоги обычно размещаются в системных путях, например под /opt, выполнение stack/smartcpd-node-*-setup.sh может требовать root или sudo.
Справка по smartcpd-setup.sh#
smartcpd-setup.sh используется для подготовки конфигурации SmartCPD, генерации stack-артефактов и развертывания или обновления стека в Docker Swarm.
Скрипт следует запускать от имени обычного пользователя с доступом к Docker daemon.
Нода, на которой запускается smartcpd-setup.sh, должна соответствовать одному из двух сценариев:
- для существующей инсталляции это текущая нода SmartCPD с ролями
serviceиmanager; - для новой инсталляции это нода, которая в целевой схеме станет
service-нодой SmartCPD и одновременноmanager-нодой Docker Swarm.
Скрипт поддерживает следующие варианты запуска:
./smartcpd-setup.shЗапускает основной интерактивный setup flow. Скрипт собирает параметры, сохраняет их вsmartcpd-setup.env, генерирует stack-артефакты и предлагает сразу выполнить deployment../smartcpd-setup.sh --helpПоказывает краткую встроенную справку по командам скрипта../smartcpd-setup.sh --continueПродолжает интерактивный setup flow из временного состояния, сохраненного вsmartcpd-setup.tmp.env, после прерванной настройки../smartcpd-setup.sh generateГенерирует файлы стека на основе текущегоsmartcpd-setup.envи перед генерацией сохраняет снимок предыдущего состояния вbackup/. Команда формирует:stack/compose.generated.yml;stack/compose.runtime.yml;stack/smartcpd-node-*-setup.sh.
./smartcpd-setup.sh generate --with-secretsВыполняет ту же генерацию, но при наличииsecrets.envпредварительно синхронизирует Docker secrets и обновляет ссылки*_SECRETвsmartcpd-setup.env../smartcpd-setup.sh deployРазворачивает или обновляет SmartCPD stack в Docker Swarm на основеstack/compose.runtime.yml. Еслиcompose.runtime.ymlустарел относительноsmartcpd-setup.env,smartcpd-stack-template.yml,versions.envили состоянияcompose.override.yml, скрипт предложит сначала выполнитьgenerate. Изменением состояния считается также создание или удалениеcompose.override.ymlпосле последней генерации../smartcpd-setup.sh deploy --ciВыполняет deployment в non-interactive режиме. Еслиcompose.runtime.ymlустарел, скрипт автоматически соглашается на предварительныйgenerate, аdocker stack deployзапускается в detached-режиме../smartcpd-setup.sh downОстанавливает и удаляет текущий SmartCPD stack из Docker Swarm после явного подтверждения../smartcpd-setup.sh images-listПоказывает список container images, требуемых для текущего варианта стека../smartcpd-setup.sh images-pullСкачивает образы, необходимые для текущего стека, и при необходимости подготавливает их для дальнейшего сохранения вimages/../smartcpd-setup.sh images-saveСкачивает необходимые образы, сохраняет их вimages/и удаляет локально подтянутые копии после сохранения. Это основной режим для offline или air-gapped поставки../smartcpd-setup.sh images-loadЗагружает все image archives изimages/в локальный Docker../smartcpd-setup.sh labelsПоказывает ноды Swarm и позволяет интерактивно управлять role labels SmartCPD. Через эту команду можно назначать или снимать labels ролей:service;worker;analyzer;balancer.
CI setup и non-interactive генерация#
Для CI-сценариев и автоматизированной переконфигурации setup может использоваться без интерактивного ввода, если все необходимые параметры уже заданы в smartcpd-setup.env.
Для такого сценария поддерживается следующая схема:
- при необходимости подготовить или обновить
smartcpd-setup.env; - при необходимости подготовить
secrets.envна основе примераsecrets.example.env, идущего в setup-поставке; - выполнить
./smartcpd-setup.sh generate --with-secrets; - затем выполнить
./smartcpd-setup.sh deploy --ci.
Поведение generate --with-secrets:
- если
secrets.envотсутствует, команда работает как обычныйgenerate; - если
secrets.envсуществует, скрипт создает или переиспользует соответствующие Docker secrets, обновляет ссылки*_SECRETвsmartcpd-setup.envи затем выполняет обычную генерацию; - неизвестные ключи из
secrets.envигнорируются с предупреждением; - перед обновлением
smartcpd-setup.envсоздается локальная резервная копия.
Файл secrets.example.env служит только примером структуры. Его не следует использовать как рабочий файл с реальными значениями секретов.
Env-файлы в корне setup/#
В корне каталога setup/ используются следующие env-файлы:
smartcpd-setup.envОсновной файл с сохраненными параметрами setup, который используется для повторной генерации файлов стека и последующих запусков setup.secrets.envОпциональный локальный файл исходных секретов для команды./smartcpd-setup.sh generate --with-secrets. В поставке вместо него идет только примерsecrets.example.env.smartcpd-setup.tmp.envВременное состояние незавершенного интерактивного setup flow. Используется командой./smartcpd-setup.sh --continue.setup.envИсторический файл старого setup, который может использоваться как источник значений для переноса в новую схему setup.
Файлы smartcpd-setup.env и связанные setup-артефакты следует хранить и включать в резервное копирование.
Если они потеряны, повторная генерация конфигурации и последующая переконфигурация потребуют повторного ручного ввода параметров setup.
Дополнительно smartcpd-setup.sh создает локальные резервные копии в каталоге backup/ рядом с setup-файлами.
Эти резервные копии помогают восстановить предыдущее состояние сгенерированных файлов и параметров setup после регенерации или переконфигурации.
Сгенерированные smartcpd-node-*-setup.sh#
smartcpd-setup.sh generate формирует набор node setup scripts в каталоге stack/.
Каждый такой скрипт предназначен для запуска на ноде с соответствующей ролью SmartCPD.
Если на одной ноде совмещено несколько ролей, на ней нужно последовательно выполнить все соответствующие скрипты.
smartcpd-node-global-setup.sh не предназначен для запуска на целевых нодах как скрипт настройки конкретной роли.
Он используется для подключения мониторинга остальных нод и связанных global-настроек.
Подробности по этому контуру описаны в документе Логирование и мониторинг.