Топология#
На этом этапе необходимо выбрать топологию контейнерного развертывания Astra Automation.
Для контейнерного способа поддерживаются две проверенные топологии:
базовая топология – все компоненты размещаются на одной ВМ;
топология уровня предприятия – компоненты распределяются по нескольким ВМ и резервируются.
Обе топологии содержат полный набор компонентов платформы, но различаются отказоустойчивостью, сложностью настройки и количеством ВМ.
Базовая топология#
В базовой топологии все компоненты платформы запускаются в контейнерах на одной ВМ. Отдельные ВМ для PostgreSQL, Redis и установочного узла не требуются.
При настройке сетевых фильтров надо учитывать следующие связи:
Источник |
Назначение |
Служба |
Порт TCP |
|---|---|---|---|
User workstation |
Platform Gateway |
HTTPS |
443 |
Installation node |
Узел платформы |
SSH |
22 |
Узел платформы |
Реестры инфраструктурного кода |
HTTP/HTTPS |
80/443 |
Установочный узел и узел платформы в этой топологии – одна и та же ВМ, поэтому соединение SSH она устанавливает сама с собой. Обращения к реестрам инфраструктурного кода нужны только при развертывании с доступом в интернет. Остальные соединения компонентов (PostgreSQL, Redis, сеть Automation mesh) не выходят за пределы этой ВМ, и открывать для них порты не требуется.
Пример описания инвентаря для базовой топологии:
[automationgateway]
aa.example.com
[automationcontroller]
aa.example.com
[automationhub]
aa.example.com
[automationedacontroller]
aa.example.com
[database]
aa.example.com
# Automation Dashboard
# [automationdashboard]
# dashboard1.example.com
[all:vars]
# General
ansible_ssh_private_key_file='/path/to/private/ssh/key'
ansible_user='admin'
ansible_python_interpreter=/usr/bin/python3
admin_email='admin@example.com'
admin_username='admin'
admin_password='ctRlp@ssW0rd'
# Redis
redis_mode=standalone
# Automation Dashboard
# dashboard_admin_password='<dashboard_admin_password>'
# dashboard_pg_password='<dashboard_pg_password>'
Предупреждение
Пароли в примере являются демонстрационными. При использовании в производственной среде замените их на собственные.
Характеристики виртуальной машины, на которой тестировалась приведенная топология:
Параметр |
Значение |
|---|---|
Количество ядер CPU |
8 |
Количество RAM, ГБ |
32 |
Свободное дисковое пространство, ГБ |
100 |
Тип дискового накопителя |
Сетевой SSD |
IOPS |
3000 |
Тип ОС |
1.8.4, 1.8.5 |
Версия ядра ОС |
|
Режим защищенности ОС |
Базовый («Орел»)
Усиленный («Воронеж»)
Максимальный («Смоленск»)
|
Важно
Операционная система должна быть развернута без пакетов графического интерфейса. Подробности см. в общих требованиях к узлам.
Особенности настройки:
Используемая ВМ включается одновременно в группы
[automationgateway],[automationcontroller],[automationhub],[automationedacontroller]и[database]файла инвентаря.Если DNS для ВМ не настроена, то выберите один из альтернативных подходов:
Используйте название ВМ, конвертируемое в IP-адрес через файл
/etc/hosts, который надо скопировать на используемую ВМ.Пример заполнения секции
[automationgateway]файлаinventory:[automationgateway] aa.example.com
Вместо названия подставьте IP-адрес ВМ.
Пример заполнения секции
[automationgateway]файлаinventory:[automationgateway] 10.177.92.12
Несмотря на то что установочный узел и узел платформы – одна и та же ВМ, утилита
aa-setupподключается к ней по SSH с использованием названия узла, указанного в инвентаре. Поэтому на ВМ необходимо выполнить генерацию пары ключей SSH и добавить публичный ключ в собственный файл~/.ssh/authorized_keysэтой же ВМ согласно инструкции по настройке целевых узлов.Redis работает в режиме
standalone.СУБД развертывается средствами платформы на той же ВМ.
Если в процессе развертывания Astra Automation необходимо также установить Automation Dashboard, то для этого потребуется отдельная ВМ. В примере описания инвентаря этот вариант обозначен группой
[automationdashboard], отмеченной комментариями.
Топология уровня предприятия#
В топологии уровня предприятия компоненты платформы распределяются по нескольким ВМ. Компоненты платформы дублируются, входящий трафик направляется через балансировщик нагрузки, а данные компонентов хранятся во внешней СУБД.
Такая топология обеспечивает отказоустойчивость и повышенное быстродействие платформы путем горизонтального масштабирования ее состава:
Каждый компонент платформы реализован с помощью двух узлов.
Внутри платформы балансировка нагрузки между узлами одного компонента выполняется шлюзом платформы.
Подключение к узлам шлюза выполняется через балансировщик нагрузки HAProxy.
Двунаправленная связь между управляющими, промежуточными и исполняющими узлами выполняется через порт
27199сети Automation mesh. Подключение управляющих узлов к исполняющим может выполняться как напрямую, так и через промежуточный узел.Устойчивость сервиса Redis обеспечена созданием отдельного кластера для него с использованием узлов платформы:
Platform Gateway;
контроллер Event-Driven Automation;
Private Automation Hub.
Особенности использования кластера Redis:
Кластер для обеспечения устойчивости должен содержать не менее шести узлов.
Три (или другое нечетное количество) узла кластера являются основными (primary), которые выбирают одного из них в качестве лидера.
Для каждого основного узла создается вспомогательный (secondary) для замены основного в случае потери связи с последним.
Данные распределяются по трем основным узлам (с репликацией на соответствующих вспомогательных узлах) по типу шардирования баз данных.
Примечание
Клиентами кластера являются узлы Platform Gateway и EDA controller. Остальные узлы используют локальный Redis, установленный на каждом из них.
Параметры сетевого взаимодействия компонентов платформы:
Источник |
Назначение |
Служба |
Порт TCP |
|---|---|---|---|
User workstation |
Load balancer |
HTTPS |
443 |
Load balancer |
Platform Gateway |
HTTP/HTTPS |
80/443 |
Platform Gateway |
- Automation Controller
- Private Automation Hub
- Event-Driven Automation
|
HTTP/HTTPS |
80/443 |
- Automation Controller
- Event-Driven Automation
- Private Automation Hub
|
Load balancer |
HTTP/HTTPS |
80/443 |
Platform Gateway |
- Platform Gateway
- Private Automation Hub
- Event-Driven Automation
|
Redis cluster |
6379, 16379 |
Event-Driven Automation |
- Platform Gateway
- Private Automation Hub
- Event-Driven Automation
|
Redis cluster |
6379, 16379 |
- Platform Gateway
- Automation Controller
- Private Automation Hub
- Event-Driven Automation
|
Database |
PostgreSQL |
5432 |
Automation Controller |
Execution node |
Receptor
(двунаправленное соединение)
|
27199 |
Automation Controller |
Hop node |
Receptor
(двунаправленное соединение)
|
27199 |
Hop node |
Execution node |
Receptor
(двунаправленное соединение)
|
27199 |
Installation node |
All nodes |
SSH |
22 |
Installation node |
Database |
PostgreSQL |
5432 |
Installation node |
- Control node
- Execution node
- Hop node
|
Receptor |
27199 |
Installation node |
- Platform Gateway
- Automation Controller
- Private Automation Hub
- Event-Driven Automation
- Реестры инфраструктурного кода
|
HTTP/HTTPS |
80/443 |
Примечание
Установочный узел (installation node) дополнительно к соединению SSH, необходимому для управления узлами в процессе развертывания платформы, также контролирует доступность определенных портов TCP в процессе ранней проверки описания инвентаря.
Пример файла инвентаря для топологии уровня предприятия:
# Platform Gateway
[automationgateway]
gw1.example.com
gw2.example.com
# Automation Controller
[automationcontroller]
ctrl1.example.com
ctrl2.example.com
[automationcontroller:vars]
node_type='control'
peers='instance_group_local'
# Execution plane
[execution_nodes]
hop.example.com
exec1.example.com
exec2.example.com
[instance_group_local]
exec1.example.com
[hop]
hop.example.com
[hop:vars]
node_type='hop'
peers='automationcontroller'
[instance_group_remote]
exec2.example.com
[instance_group_remote:vars]
peers='hop'
# Private Automation Hub
[automationhub]
hub1.example.com
hub2.example.com
# EDA controller
[automationedacontroller]
eda1.example.com
eda2.example.com
# Redis cluster
[redis]
hub1.example.com
hub2.example.com
gw1.example.com
gw2.example.com
eda1.example.com
eda2.example.com
# Database management system
[database]
# Используется внешний кластер PostgreSQL
# Automation Dashboard
# [automationdashboard]
# dashboard1.example.com
# All variables
[all:vars]
# General
ansible_ssh_private_key_file='/path/to/private/ssh/key'
ansible_user='admin'
ansible_python_interpreter=/usr/bin/python3
admin_email='admin@example.com'
admin_username='admin'
admin_password='AAp@ssW0rd'
# Gateway
automationgateway_main_url='https://aa-gateway.example.com'
automationgateway_pg_host='pg-ha.example.com'
automationgateway_pg_port=5432
automationgateway_pg_database='automationgateway'
automationgateway_pg_username='automationgateway'
automationgateway_pg_password='gateDBpaS$12345'
automationgateway_pg_sslmode='prefer'
# Automation Controller
automationcontroller_pg_host='pg-ha.example.com'
automationcontroller_pg_port=5432
automationcontroller_pg_database='awx'
automationcontroller_pg_username='awx'
automationcontroller_pg_password='ctrlDBpaS$123456'
automationcontroller_pg_sslmode='prefer'
# Private Automation Hub
automationhub_pg_host='pg-ha.example.com'
automationhub_pg_port=5432
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='hUbPa55I2345b'
automationhub_pg_sslmode='prefer'
# Контроллер Event-Driven Automation
automationedacontroller_pg_host='pg-ha.example.com'
automationedacontroller_pg_port=5432
automationedacontroller_pg_database='automationedacontroller'
automationedacontroller_pg_username='automationedacontroller'
automationedacontroller_pg_password='edapassword'
automationedacontroller_pg_sslmode='prefer'
# Automation Dashboard
# dashboard_admin_password='<dashboard_admin_password>'
# dashboard_pg_password='<dashboard_pg_password>'
Предупреждение
Все пароли в примере являются демонстрационными. При использовании в продуктовой среде замените их на собственные.
Характеристики виртуальных машин, на которых тестировалась приведенная топология:
Узлы платформы:
Параметр
Значение
Количество ядер CPU
8
Количество RAM, ГБ
16
Свободное дисковое пространство, ГБ
60
Тип дискового накопителя
Сетевой SSD
IOPS
3000
Тип ОС
1.8.4, 1.8.5
Версия ядра ОС
6.1.141-1-genericили более поздняя в пределах указанной версии Astra Linux Special EditionРежим защищенности ОС
Базовый («Орел»)Усиленный («Воронеж»)Максимальный («Смоленск»)Важно
Операционная система должна быть развернута без пакетов графического интерфейса. Подробности см. в общих требованиях к узлам.
Узел СУБД во внешнем окружении:
Параметр
Значение
Количество ядер CPU
8
Количество RAM, ГБ
32
Свободное дисковое пространство, ГБ
100
Лимит на количество одновременно открытых подключений
300
Особенности настройки:
Под каждый компонент отводится отдельная секция, в которой описаны параметры идентификации и доступа.
Если DNS не настроена для узлов платформы, то выберите один из альтернативных подходов:
каждому узлу дайте название (не должно быть подобным доменному имени, то есть без точек), конвертируемое в IP-адрес через файл
/etc/hosts, который надо скопировать на все узлы платформы и на установочный узел;просто подставьте IP-адреса узлов.
Секция
[database]оставлена пустой, поскольку развертывание сервера PostgreSQL средствами платформы в этом случае не производится. В приведенном примере отказоустойчивый внешний сервис PostgreSQL доступен через стабильную точку подключения к основному узлу PostgreSQL (stable writer endpoint)pg-ha.example.com.Примечание
Для отказоустойчивой конфигурации платформы внешний сервис PostgreSQL должен быть доступен через стабильную точку подключения к основному узлу. В качестве стабильной точки можно использовать:
виртуальный IP-адрес (VIP);
FQDN балансировщика;
другой плавающий (floating) адрес, который всегда указывает на текущий основной узел PostgreSQL.
Не указывайте IP-адрес конкретного основного узла, если для внешней СУБД предполагается автоматическое переключение на другой узел (failover). При использовании стабильной точки подключения ручное изменение значений
*_pg_hostпосле переключения не требуется.Если в процессе развертывания Astra Automation необходимо также установить Automation Dashboard, то для этого потребуется отдельная ВМ или физический сервер. В примере описания инвентаря этот вариант обозначен группой
[automationdashboard], отмеченной комментариями.Кластер Redis развернут на шести узлах для распределения нагрузки и обеспечения его устойчивости в случае отказа узлов.
Примечание
При наличии более одного узла в группе automationcontroller учитывайте принцип главного узла.