Топология#
На этом этапе необходимо выбрать подходящую топологию Astra Automation.
Согласно архитектуре, платформа содержит определенный набор компонентов. Конкретная топология платформы должна учитывать множество требований, предъявляемых к процессам и средствам автоматизации. При разработке собственной топологии рекомендуется брать в основу один из рассматриваемых здесь вариантов, прошедших необходимое тестирование. Все описанные топологии содержат полный набор компонентов платформы, но различаются отказоустойчивостью, сложностью настройки и количеством узлов.
Базовая топология обеспечивает функциональную полноту, так как содержит все необходимые компоненты платформы. Не обеспечивает отказоустойчивости, однако, может быть удобна для начальной стадии развития процессов автоматизации в информационной инфраструктуре.
Топология уровня предприятия обеспечивает высокое быстродействие и отказоустойчивость за счет увеличения затрат на ресурсы. Рекомендуется для промышленного применения на предприятиях с высокими требованиями к надежности сложной распределенной информационной инфраструктуры.
Характеристики ВМ#
Характеристики виртуальных машин, на которых тестировались приведенные топологии:
Узлы платформы и развернутой ее средствами СУБД:
Параметр
Значение
Количество ядер CPU
8
Количество RAM, ГБ
16
Свободное дисковое пространство, ГБ
60
Тип дискового накопителя
Сетевой SSD
IOPS
3000
Тип ОС
Astra Linux Special Edition 1.7.7, 1.7.8, 1.8.2, 1.8.3
Версия ядра ОС
6.1.141-1-genericРежим защищенности ОС
Базовый («Орел»)Усиленный («Воронеж»)Максимальный («Смоленск»)Важно
Операционная система должна быть развернута без пакетов графического интерфейса. Подробности см. в общих требованиях к узлам.
Узел СУБД во внешнем окружении:
Параметр
Значение
Количество ядер CPU
8
Количество RAM, ГБ
32
Свободное дисковое пространство, ГБ
100
Лимит на количество одновременно открытых подключений
300
Базовая топология#
Топология платформы, использующей для запуска заданий автоматизации отдельный узел, показана на схеме:
При настройке сетевых фильтров надо учитывать следующие связи:
Источник |
Назначение |
Служба |
Порт TCP |
|---|---|---|---|
User workstation |
Platform Gateway |
HTTPS |
443 |
Platform Gateway |
- Automation Controller
- Private Automation Hub
- Event-Driven Automation
|
HTTP/HTTPS |
80/443 |
- Automation Controller
- Event-Driven Automation
|
Platform Gateway |
HTTP/HTTPS |
80/443 |
Event-Driven Automation |
Platform Gateway |
Redis |
6379 |
- Platform Gateway
- Automation Controller
- Private Automation Hub
- Event-Driven Automation
|
Database |
PostgreSQL |
5432 |
Automation Controller |
Исполняющий узел |
Receptor
(двунаправленное соединение)
|
27199 |
Installation node |
All nodes |
SSH |
22 |
Installation node |
Database |
PostgreSQL |
5432 |
Installation node |
Управляющий и исполняющий узлы |
Receptor |
27199 |
Installation node |
- Platform Gateway
- Automation Controller
- Private Automation Hub
- Event-Driven Automation
- Реестры инфраструктурного кода
|
HTTP/HTTPS |
80/443 |
Примечание
Устанавливающий узел (installation node) дополнительно к соединению SSH, необходимому для управления узлами в процессе развертывания платформы, также контролирует доступность определенных портов TCP в процессе ранней проверки описания инвентаря.
Пример описания инвентаря для базовой топологии:
[automationgateway]
gw1.example.com
[automationcontroller]
ctrl.example.com
[automationcontroller:vars]
node_type=control
peers='execution_nodes'
[execution_nodes]
exec.example.com
[automationhub]
hub.example.com
[automationedacontroller]
eda.example.com
[database]
db.example.com
[all:vars]
# General
ansible_ssh_private_key_file='/path/to/private/ssh/key'
ansible_user='admin'
ansible_python_interpreter=/usr/bin/python3
# Redis
redis_mode=standalone
# Platform Gateway
automationgateway_admin_password='gateAAp@ssW0rd'
automationgateway_pg_host='192.168.56.101'
automationgateway_pg_port=5432
automationgateway_pg_database='automationgateway'
automationgateway_pg_username='automationgateway'
automationgateway_pg_password='gateDBpaS$12345'
# Automation Controller
admin_email='admin@example.com'
admin_password='ctRlp@ssW0rd'
pg_host=192.168.56.101
pg_port=5432
pg_database='awx'
pg_username='automationcontroller'
pg_password='ctrlDBpaS$123456'
# Private Automation Hub
automationhub_admin_password='hU8p4ssWd1234'
automationhub_main_url='https://hub.example.com'
automationhub_pg_host=192.168.56.101
automationhub_pg_port=5432
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='hUbPa55I2345b'
# Контроллер Event-Driven Automation
automationedacontroller_admin_password='edapass'
automationedacontroller_pg_host=192.168.56.101
automationedacontroller_pg_port=5432
automationedacontroller_pg_database='automationedacontroller'
automationedacontroller_pg_username='automationedacontroller'
automationedacontroller_pg_password='edapassword'
Особенности настройки:
Под каждый компонент отводится отдельная секция, в которой описаны параметры идентификации и доступа.
Если DNS не настроена для узлов платформы, то выберите один из альтернативных подходов:
Используйте названия узлов, конвертируемые в IP-адреса через файл
/etc/hosts, который надо скопировать на все узлы платформы и на установочный узел.Пример заполнения секции
[automationgateway]файлаinventory:[automationgateway] gw1
Вместо названий подставьте IP-адреса узлов.
Пример заполнения секции
[automationgateway]файлаinventory:[automationgateway] gw1 ansible_host=10.177.92.12
СУБД развертывается на узле, указанном в секции
[database], средствами платформы.Каждый компонент платформы имеет доступ к собственной базе данных. Параметры баз данных (они же параметры доступа) описаны в секции
[all:vars].Секция
[execution_nodes]содержит описание узлов плоскости исполнения. В приведенном файле она содержит один исполняющий узел. Это создает сеть Automation Mesh для связи управляющего узла с исполняющим.Тип узла Automation Controller отмечен явно как управляющий (
node_type=control).Для установления соединения между отмеченными узлами по сети Mesh в настройках управляющего узла используется параметр
peers='execution_nodes', который приводит к установлению такого соединения между ним и всеми узлами, приведенными в секции[execution_nodes].Сервис Redis устанавливается на каждом узле индивидуально согласно параметру
redis_mode=standalone.Для установочного узла в секции
[all:vars]описаны параметры подключения к узлам для развертывания платформы:ansible_ssh_private_key_file– путь к файлу, содержащему приватный ключ SSH;ansible_user– учетная запись, имеющая административные привилегии на каждом узле, устанавливаемые через утилитуsudo.
Предупреждение
Во всех компонентах Astra Automation автоматически создается учетная запись admin с административными привилегиями.
В текущей версии продукта изменение ее названия с помощью параметров automationgateway_admin_user (Platform Gateway) , admin_username (Automation Controller), automationhub_admin_user (Private Automation Hub) и automationedacontroller_admin_username (контроллер Event-Driven Automation) приведет к развертыванию неработоспособной системы.
Топология уровня предприятия#
Одним из важнейших требований, предъявляемых к платформе со стороны предприятий, является отказоустойчивость. Топология платформы, развернутой в отказоустойчивой конфигурации, показана на схеме:
Такая топология обеспечивает отказоустойчивость и повышенное быстродействие платформы путем горизонтального масштабирования ее состава:
Каждый компонент платформы реализован с помощью двух узлов.
Внутри платформы балансировка нагрузки между узлами одного компонента выполняется шлюзом платформы.
Подключение к узлам шлюза выполняется через балансировщик нагрузки 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
|
Load balancer |
HTTP/HTTPS |
80/443 |
Platform Gateway |
- Platform Gateway
- Private Automation Hub
- Event-Driven Automation
|
Redis cluster |
6379 |
Event-Driven Automation |
- Platform Gateway
- Private Automation Hub
- Event-Driven Automation
|
Redis cluster |
6379 |
- 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]
exec2.example.com
[hop]
hop.example.com
[hop:vars]
node_type='hop'
peers='automationcontroller'
[instance_group_remote]
exec1.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
# All variables
[all:vars]
# General
ansible_ssh_private_key_file='/path/to/private/ssh/key'
ansible_user='admin'
ansible_python_interpreter=/usr/bin/python3
# Gateway
automationgateway_admin_password='gateAAp@ssW0rd'
automationgateway_pg_host='pg-ha.example.com'
automationgateway_pg_port=5432
automationgateway_pg_database='automationgateway'
automationgateway_pg_username='automationgateway'
automationgateway_pg_password='gateDBpaS$12345'
# Automation Controller
admin_email='admin@example.com'
admin_password='ctRlp@ssW0rd'
pg_host='pg-ha.example.com'
pg_port=5432
pg_database='awx'
pg_username='automationcontroller'
pg_password='ctrlDBpaS$123456'
# Private Automation Hub
automationhub_admin_password='hU8pAssWd1234'
automationhub_pg_host='pg-ha.example.com'
automationhub_pg_port=5432
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='hUbPa55I2345b'
# Контроллер Event-Driven Automation
automationedacontroller_admin_password='edapass'
automationedacontroller_pg_host='pg-ha.example.com'
automationedacontroller_pg_port=5432
automationedacontroller_pg_database='automationedacontroller'
automationedacontroller_pg_username='automationedacontroller'
automationedacontroller_pg_password='edapassword'
Особенности настройки:
Под каждый компонент отводится отдельная секция, в которой описаны параметры идентификации и доступа.
Если DNS не настроена для узлов платформы, то выберите один из альтернативных подходов:
каждому узлу дайте название (не должно быть подобным доменному имени, то есть без точек), конвертируемое в IP-адрес через файл
/etc/hosts, который надо скопировать на все узлы платформы и на установочный узел;просто подставьте IP-адреса узлов.
Секция
[database]оставлена пустой, поскольку развертывание сервера PostgreSQL средствами платформы в этом случае не производится. В приведенном примере отказоустойчивый внешний сервис PostgreSQL доступен по доменному имениpg-ha.example.com.Кластер Redis развернут на шести узлах для распределения нагрузки и обеспечения его устойчивости в случае отказа узлов.
Примечание
При наличии более одного узла в группе automationcontroller учитывайте принцип главного узла.
Предупреждение
Во всех компонентах Astra Automation автоматически создается учетная запись admin с административными привилегиями.
В текущей версии продукта изменение ее названия с помощью параметров automationgateway_admin_user (Platform Gateway) , admin_username (Automation Controller), automationhub_admin_user (Private Automation Hub) и automationedacontroller_admin_username (контроллер Event-Driven Automation) приведет к развертыванию неработоспособной системы.