5.1. Описание работы кластера
Сетевая структура кластера подразумевает полное дублирование независимыми коммутаторами.
Входящие и исходящие подключения используют коммутатор D-link DGS-1210. Скорости 1 Gb достаточно для внешнего обмена данными.
Для создания отказоустойчивого хранилища данных CEPH используются коммутаторы D-link DXS-1100-10TS/A1A. Они обеспечивают минимальные задержки и достаточную скорость подключения.
Для внутрикластерных сетей обмен служебной информацией (corosync), управление кластером, синхронизация, используется 1 Gb на базе коммутаторов D-link DGS-1210-28. Это так же внутренняя изолированная сеть кластера.
Для каждого соединения используется по 2 адаптера на сервере, порты объединяются (link bundling).
Для обеспечения отказоустойчивости по питанию используется 2 раздельных ИБП Ippon innova RT II 6000. Каждый из них питает по одному из парных сетевых коммутаторов и по одному из блоков питания узлов кластера (на каждом сервере 2 БП)
Для локального управления серверами используется KVM консоль ATEN.
В качестве системы виртуализации и кластеризации используется платформа с открытым исходным кодом Proxmox VE, основанной на Debian GNU/Linux. Используется версия Proxmox 7.0 на основе Debian Buster 11 (с ядром Linux 5.11). Proxmox установлен на каждом узле кластера, затем три узла объединены в кворум, обеспечивающий высокую доступность (High Availability), контролирующий состояние узлов, виртуальных машин и контейнеров на них, репликацию, создание резервных копий.
Используются два типа виртуализации:
- Контейнеры по технологии LXC, где виртуальный сервер создаётся в виртуальном окружении хоста, используя его ядро, что сокращает затраты аппаратных ресурсов и упрощает кластеризацию с репликацией и бекапами.
- виртуальные машины (KVM) по технологии QEMU, где аппаратное обеспечение эмулируется полностью и имеется возможность устанавливать не Linux-системы (например, FreeBSD, Windows), а также Linux-системы с особыми требованиями к аппаратной эмуляции или с GUI.
Управление виртуальными машинами и контейнерами, их настройка (ресурсы, сетевые интерфейсы, репликация, резервное копирование) осуществляется через веб-интерфейс Proxmox.
В случае отказа одного из узлов, его виртуальные сервера запускаются на других узлах. Поведения настраиваются – на какой узел переходить, возвращаться ли при восстановлении узла обратно, какое состояние виртуального сервера требуется.
Типы лицензирования используемого в кластере ПО: GNU AGPL, GNU GPL, BSD, Apache 2.0. Все эти лицензии подразумевают свободное использование, в том числе в коммерческих целях, а также открытый исходный код, а значит в коде ПО нет тайн, вредоносного кода и его можно самостоятельно скомпилировать и изменить под свои нужды.
Виртуальные машины:
- Сервер маршрутизатора кластера. Дистрибутив pfSense версии 2.4.х, основан на FreeBSD для создания основного маршрутизатора/межсетевого экрана кластера. Сервер pfSense коммутирует WAN-подключения и является шлюзом для локальной сети кластера. Для обеспечения отказоустойчивости инстанции роутера запускаются на каждом узле кластера, и, в случае сбоя (узла или сети), происходит автоматическое переключение. Для усиления безопасности используются нестандартные порты для сервисов, доступ к кластеру только по «белым спискам». Имеется возможность настроить Load Balancing. Распространяется по лицензии Apache 2.0.
- Сервер телефонии. Дистрибутив FreePBX Distro версии SNG7-PBX-64bit-1910, основанный на Linux-дистрибутиве CentOS 7.6. Отвечает за организацию SIP-телефонии между объектовым оборудованием и диспетчером, включает в себя свободное программное решение Asterisk и графический веб-интерфейс для его менеджмента.
- (Опционально) Хранилище FreeNAS на основе FreeBSD для организации NAS-хранилища.
Контейнеры:
- Центральный веб-сервер кластера. Исполняет центральный веб-сервер nginx. Используется для обработки и проксирования http-запросов и запросов backend уже на локальные веб-серверы других серверов. Ubuntu 20.04
- Сервер баз данных Mysql. На каждом узле своя инстанция, работают одновременно средствами Mysql Cluster. Используется Mysql Server 8. Ubuntu 20.04.
- Сервер баз данных Redis. На каждом узле своя инстанция, работают одновременно средствами Redis Cluster. Используется Redis 5. Ubuntu 20.04.
- API сервер. Организует интерфейс связи между ПО и базами данных, чтобы не лезть в БД напрямую и вызывать хранимые процедуры. Ubuntu 20.04.
- Сервер приёма и обработки сообщений с объектов и сенсоров. На нём запущены сервисы по приёму событий с объектов, дешифрованию, запись в базу, рассылке по списку. ПО написано на Python, система Ubuntu 20.04.
- Сервер http (веб-сайт) по менеджменту сенсорами и объектами в целом. Ubuntu 20.04.
- Сервер http (веб-сайт) для управления объектами и их отдельными компонентами. Ubuntu 20.04.
- Сервер мониторинга серверов кластера, сервисов и сетевого оборудования. Открытая система мониторинга Zabbix 4.4. Оповещает о проблемах. Для более эффективной работы на каждом сервере устанавливается Zabbix-agent. Ubuntu 20.04.
- VPN-сервер на основе SoftEther VPN Server и Kea DHCP. Для организации внутренней закрытой сети. Ubuntu 20.04.