Топология#

На этом этапе необходимо выбрать подходящую топологию Astra Automation.

../../../_images/day0-model-green.svg ../../../_images/day0-topology-blue.svg ../../../_images/day0-nodes-white.svg ../../../_images/day0-inventory-white.svg ../../../_images/day0-offline-white.svg ../../../_images/day0-model-green.svg ../../../_images/day0-topology-blue.svg ../../../_images/day0-nodes-dark.svg ../../../_images/day0-inventory-dark.svg ../../../_images/day0-offline-dark.svg

Согласно архитектуре, платформа содержит определенный набор компонентов. Конкретная топология платформы должна учитывать множество требований, предъявляемых к процессам и средствам автоматизации. При разработке собственной топологии рекомендуется брать в основу один из рассматриваемых здесь вариантов, прошедших необходимое тестирование. Все описанные топологии содержат полный набор компонентов платформы, но различаются отказоустойчивостью, сложностью настройки и количеством узлов.

  • Базовая топология обеспечивает функциональную полноту, так как содержит все необходимые компоненты платформы. Не обеспечивает отказоустойчивости, однако, может быть удобна для начальной стадии развития процессов автоматизации в информационной инфраструктуре.

  • Топология уровня предприятия обеспечивает высокое быстродействие и отказоустойчивость за счет увеличения затрат на ресурсы. Рекомендуется для промышленного применения на предприятиях с высокими требованиями к надежности сложной распределенной информационной инфраструктуры.

Характеристики ВМ#

Характеристики виртуальных машин, на которых тестировались приведенные топологии:

  • Узлы платформы и развернутой ее средствами СУБД:

    Параметр

    Значение

    Количество ядер 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

Базовая топология#

Топология платформы, использующей для запуска заданий автоматизации отдельный узел, показана на схеме:

../../../_images/aa-vm-base-light.svg ../../../_images/aa-vm-base-dark.svg

При настройке сетевых фильтров надо учитывать следующие связи:

Источник

Назначение

Служба

Порт 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) приведет к развертыванию неработоспособной системы.

Топология уровня предприятия#

Одним из важнейших требований, предъявляемых к платформе со стороны предприятий, является отказоустойчивость. Топология платформы, развернутой в отказоустойчивой конфигурации, показана на схеме:

../../../_images/aa-vm-enterprise-light.svg ../../../_images/aa-vm-enterprise-dark.svg

Такая топология обеспечивает отказоустойчивость и повышенное быстродействие платформы путем горизонтального масштабирования ее состава:

  • Каждый компонент платформы реализован с помощью двух узлов.

  • Внутри платформы балансировка нагрузки между узлами одного компонента выполняется шлюзом платформы.

  • Подключение к узлам шлюза выполняется через балансировщик нагрузки 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) приведет к развертыванию неработоспособной системы.