Топология#

На этом этапе необходимо выбрать топологию контейнерного развертывания 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

Для контейнерного способа поддерживаются две проверенные топологии:

  • базовая топология – все компоненты размещаются на одной ВМ;

  • топология уровня предприятия – компоненты распределяются по нескольким ВМ и резервируются.

Обе топологии содержат полный набор компонентов платформы, но различаются отказоустойчивостью, сложностью настройки и количеством ВМ.

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

В базовой топологии все компоненты платформы запускаются в контейнерах на одной ВМ. Отдельные ВМ для PostgreSQL, Redis и установочного узла не требуются.

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

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

Источник

Назначение

Служба

Порт 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

Версия ядра ОС

6.1.141-1-generic или более поздняя в пределах указанной версии Astra Linux Special Edition

Режим защищенности ОС

Базовый («Орел»)
Усиленный («Воронеж»)
Максимальный («Смоленск»)

Важно

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

Особенности настройки:

  • Используемая ВМ включается одновременно в группы [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], отмеченной комментариями.

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

В топологии уровня предприятия компоненты платформы распределяются по нескольким ВМ. Компоненты платформы дублируются, входящий трафик направляется через балансировщик нагрузки, а данные компонентов хранятся во внешней СУБД.

../../../_images/aa-containerized-enterprise-light.svg ../../../_images/aa-containerized-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
- 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 учитывайте принцип главного узла.