Установка ADS =============== .. important:: Полная документация по продукту **Arenadata Streaming** (**ADS**) приведена по `ссылке `_. Предварительные шаги --------------------- Для установки кластера **ADS** посредством **ADCM** необходимо выполнить следующие предварительные шаги: 1. Установить `ADCM `_. 2. Проверить настройки ADCM: * Перейти во вкладку "Settings"; * Проверить на корректность определившийся автоматически URL и при необходимости заменить его на исправный (:numref:`Рис.%s. `). .. _adcm_url: .. figure:: imgs/adcm_url.png :align: center Проверка настроек ADCM .. important:: Каждый компонент сервиса кластера имеет возможность отсылать статусную информацию о своем состоянии (keep alive) процессу ADCM в докер-контейнере В ряде случаев **ADCM** может оказаться за NAT, и тогда исключается очевидный вариант автоматического определения его адреса, видимого со стороны сервисного компонента на хосте кластера. Поэтому данный адрес указывается вручную. Во время установки **ADS** адрес **ADCM** используется для заполнения конфигурации компонентов, отвечающих за передачу статусной информации. 3. Создать хосты для кластера ADS: * Загрузить выбранный бандл хоста. В текущем примере используется бандл *SSH*; * Инициализировать необходимое количество хостов (в текущем примере данный шаг пропускается, так как используются готовые хосты, а не облачный провайдер); * Добавить хосты в ADCM. В текущем примере используется 4 хоста: для Zookeeper (*zk*), для Kafka брокеров (*kafka1* и *kafka2*), для Nifi (*nifi*). 4. (Опционально) Создать кластер мониторинга: * Загрузить бандл мониторинга; * Создать экземпляр кластера мониторинга и установить его. 5. (Опционально) Для установки без доступа к сети Интернет (offline): * Запросить дистрибутив `Arenadata Enterprise Tools `_; * Развернуть Arenadata Enterprise Tools на выделенном хосте. Загрузка бандла ADS -------------------- Загрузка бандла **ADS** необходима для создания в **ADCM** прототипа кластера, из которого в дальнейшем возможно создание его экземпляров. Для загрузки бандла следует выполнить следующие действия: 1. Открыть в ADCM вкладку "BUNDLES" (:numref:`Рис.%s.`). .. _bundles: .. figure:: imgs/bundles.png :align: center Вкладка "BUNDLES" 2. Нажать "Upload bundle" и в открывшейся форме выбрать файл бандла ADS (:numref:`Рис.%s.`). .. _choose_bundle: .. figure:: imgs/choose_bundle.png :align: center Выбор бандла 3. После успешной загрузки бандла необходимо принять лицензионное соглашение (:numref:`Рис.%s.`). .. _license_agreement: .. figure:: imgs/license_agreement.png :align: center Лицензионное соглашение 4. В результате выполненных действий факт успешной загрузки отображается в общем списке бандлов на вкладке "BUNDLES" (:numref:`Рис.%s.`). .. _load_bundle: .. figure:: imgs/load_bundle.png :align: center Результат успешной загрузки бандла Создание кластера ADS ---------------------- После выполнения пунктов `Предварительные шаги`_ и `Загрузка бандла ADS`_ в кластер-менеджере **ADCM** содержится следующий список объектов (:numref:`Рис.%s. `): * Прототип кластера мониторинга и созданный на его основе экземпляр (программа мониторинга развернута на хосте, ADCM содержит записи о его результатах и настройках); * Прототип кластера *ADS* для создания экземпляров; * Предварительно подготовленные хосты, в базе данных ADCM хранятся записи о них и их учетных данных -- ssh-ключах или паролях. .. _hosts: .. figure:: imgs/hosts.png :align: center Список объектов в ADCM Объектам доступен следующий функционал: + `Создание экземпляра кластера`_; + `Конфигурация кластера`_; + `Добавление хостов`_; + `Добавление сервисов`_; + `Размещение компонентов сервисов на хостах`_; + `Установка кластера`_. Создание экземпляра кластера ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ При создании кластера в веб-интерфейсе **ADCM** генерируется новый экземпляр кластера *ADS*, что означает только добавление данных о нем в базу данных **ADCM** -- на этом этапе не производится установка *ADS* на хосты. 1. Открыть в ADCM вкладку "CLUSTERS" (:numref:`Рис.%s. `). .. _cluster_mon: .. figure:: imgs/cluster_mon.png :align: center Вкладка "CLUSTERS" 2. Нажать "Create cluster" и в открывшейся форме создать экземпляр кластера из прототипа *ADS*, полученного из бандла (:numref:`Рис.%s. `). .. _add_cluster: .. figure:: imgs/add_cluster.png :align: center Создание экземпляра кластера 3. В результате выполненных действий факт создания экземпляра кластера отображается в базе данных ADCM на вкладке "CLUSTERS" (:numref:`Рис.%s. `). .. _clusters_list: .. figure:: imgs/clusters_list.png :align: center Результат успешного создания экземпляра кластера Конфигурация кластера ^^^^^^^^^^^^^^^^^^^^^^ Для перехода к настройкам экземпляра кластера *ADS* необходимо нажать кнопку с пиктограммой шестеренки в соответствующей строке вкладки "CLUSTERS" (:numref:`Рис.%s. `) и перейти в раздел меню "Configuration". При этом открывается окно конфигурации выбранного экземпляра (:numref:`Рис.%s. `). .. _cluster_config: .. figure:: imgs/cluster_config.png :align: center Окно конфигурации кластера В блоке *RedHat repos* указываются требуемые для установки *ADS* пакеты из различных yum-репозиториев. В блоке *AltLinux repos* указываются требуемые для установки *ADS* пакеты из различных apt-репозиториев. При этом в каждом из параметров можно изменить заданный по умолчанию url: * *ADS*; * *monitoring*; * *Zookeeper*. .. important:: При установке в окружении без доступа к сети Интернет (offline) необходимо предварительно развернуть кластер `Arenadata Enterprise Tools `_ и импортировать настройки HTTP Mirorr В таком случае настройки offline-репозиториев применяются автоматически. Для этого на странице кластера *ADS* необходимо перейти на вкладку *Import* и выбрать сервис http кластера Enterprise Tools (:numref:`Рис.%s. `). Альтернативно, в эти поля можно указать url локальных репозиториев с необходимыми пакетами. .. _import_list: .. figure:: imgs/import_list.png :align: center Импорт конфигурации сервиса http .. important:: Arenadata Enterprise Tools предоставляет локальную копию только репозиториев Arenadata Streaming и Arenadata Monitoring. Доступ к репозиториям CentOS должен быть организован отдельно Добавление хостов ^^^^^^^^^^^^^^^^^^ Для добавления хостов в кластер *ADS* необходимо: 1. В меню кластера *ADS* открыть вкладку "Hosts" (:numref:`Рис.%s. `). .. _hosts_list: .. figure:: imgs/hosts_list.png :align: center Вкладка "Hosts" кластера ADS 2. Нажать "Add hosts" и в открывшейся форме выбрать необходимые хосты (:numref:`Рис.%s. `). .. _add_hosts: .. figure:: imgs/add_hosts.png :align: center Выбор хостов 3. В результате выполненных действий факт добавления хостов отображается в кластере *ADS* в списке вкладки "Hosts" (:numref:`Рис.%s. `). .. _hosts_list2: .. figure:: imgs/hosts_list2.png :align: center Результат успешного добавления хостов Добавление сервисов ^^^^^^^^^^^^^^^^^^^^^ .. important:: На текущий момент невозможно удалить из кластера уже добавленный сервис Кластер **ADS** содержит следующие сервисы: .. csv-table:: Сервисы ADS :header: "Сервис", "Компоненты", "Описание" :widths: 20, 20, 60 "Zookeeper", "Zookeeper Server", "Сервис, предназначенный для хранения конфигураций, выполнения распределенной синхронизации процессов" "Kafka", "Kafka Broker", "Распределенная платформа для потоковых операций и данных" "Nifi", "Nifi Server, Nifi Registry", "Распрделенная платформа, предназначенная для построения и автоматизации потоков данных между различными системами" "Schema-registry", "Schema-registry", "Сервис предоставляет обслуживающий слой для метаданных. Предоставляет интерфейс RESTful для хранения и извлечения схем Avro. Хранит версионную историю всех схем, предоставляет несколько параметров совместимости и позволяет изменять схемы в соответствии с настроенными параметрами совместимости и расширенной поддержкой Avro. Предоставляет сериализаторы, подключаемые к клиентам Kafka, которые обрабатывают хранение и извлечение схемы для сообщений Kafka, отправляемых в формате Avro" "Kafka REST Proxy", "Kafka REST Proxy", "Предоставляет RESTful-интерфейс для кластера Kafka, что упрощает создание и потребление сообщений, просмотр состояния кластера и выполнение административных действий без использования собственного протокола Kafka или клиентов" "KSQL", "KSQL Server, KSQL Client", "Сервис представляет собой потоковый SQL-движок с открытым исходным кодом, который обеспечивает обработку данных в реальном времени с использованием Apache Kafka. Состоит из компонентов: Server; Client" "Kafka-Manager", "Kafka-Manager", "Инструмент для управления Apache Kafka" "MiNifi", "MiNiFi C2 Server, MiNiFi Agent", "Агент для сбора и отсылки данных, который пополняет основные принципы NiFi в управлении потоками данных, уделяя особое внимание сбору данных у их источника" "Monitoring Clients", "System metrics Agent, JMX metrics Collector", "Агенты, отсылающие информацию о хосте и сервисах в мониторинг" Не все сервисы являются обязательными для установки. Например, если не планируется использование **Nifi**, то нет необходимости добавлять сервис. Или в случае, когда применяется сервис мониторинга (не на базе **Graphite**), незачем ставить агенты из *Monitoring Clients*. Однако, если планируется использование **Kafka**, одноименный сервис и *Zookeeper* обязательны, то же самое можно сказать и про сервис *Nifi*. При этом сервис может состоять из обязательных и необязательных компонентов. Например, сервис *KSQL* состоит из обязательного компонента *Server* и необязательного -- *Client*. Для добавления сервисов в кластер *ADS* необходимо: 1. В меню кластера *ADS* открыть вкладку "Services". 2. Нажать "Add service" и в открывшейся форме выбрать необходимые сервисы (:numref:`Рис.%s. `). .. _add_services: .. figure:: imgs/add_services.png :align: center Выбор сервисов для кластера ADS В настоящем примере в кластер добавлены все сервисы, подробное описание конфигурации которых приведено по следующим ссылкам: + `Настройка сервиса Zookeeper `_; + `Настройка сервиса Kafka `_; + `Настройка сервиса Nifi `_; + `Настройка сервиса Schema-registry `_. + `Настройка сервиса Kafka REST Proxy `_; + `Настройка сервиса KSQL `_; + `Настройка сервиса Kafka-Manager `_; + `Настройка сервиса MiNifi `_; + `Настройка сервиса Monitoring Clients `_. Особенности сервиса Monitoring Clients ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Сервис *Monitoring Clients* требует импорта конфигурационных параметров кластера мониторинга (адрес, логин/пароль) при добавлении в кластер *ADS*. Для импорта конфигурации мониторинга необходимо в кластере *ADS* выбрать вкладку *Import* и отметить импортируемые настройки сервисов (:numref:`Рис.%s. `). .. _import_configs: .. figure:: imgs/import_configs.png :align: center Импорт конфигурации мониторинга Размещение компонентов сервисов на хостах ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Каждый сервис состоит из обязательных компонентов, которые должны быть размещены на хостах кластера, и необязательных, которые могут быть не размещены. Для размещения компонентов необходимо на вкладке "Hosts - Components" выбрать компонент в колонке "Components" и определить для него необходимый хост в колонке "Hosts" (:numref:`Рис.%s. `). .. _components: .. figure:: imgs/components.png :align: center Размещение компонентов сервисов на хостах Поскольку все сервисы добавлены в кластер **ADS**, но еще не размещены на хостах, то изначально ни на одном из хостов нет компонентов. В качестве примера на :numref:`Рис.%s. ` показаны компоненты cервиса *Nifi*, размещенные на хосте *nifi*: * *Nifi Server* -- необходимо добавить на один или более хостов (возможна кластерная конфигурация); * *Nifi Registry* -- необходимо добавить ровно на один хост. .. _nifi_components: .. figure:: imgs/nifi_components.png :align: center Компоненты сервиса *Nifi* Установка кластера ^^^^^^^^^^^^^^^^^^^ .. important:: В случае если добавлен сервис *Monitoring Clients*, необходимо импортировать настройки из кластера *Monitoring* (см. `Особенности сервиса Monitoring Clients`_) На данном этапе все хосты подготовлены и можно приступать к установке сервисов кластера: + `Установка всех сервисов кластера`_; + `Установка сервиса в проинсталлированный кластер`_. Установка всех сервисов кластера ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для установки всех добавленных сервисов в кластере *ADS* необходимо выбрать соответствующий кластер в **ADCM** и выполнить действие *Install* (:numref:`Рис.%s. `). .. _cluster_install: .. figure:: imgs/cluster_install.png :align: center Установка всех сервисов кластера В появившемся диалоговом окне предоставляется выбор опций (:numref:`Рис.%s. `): * *Disable SELinux before cluster installation* -- отключение SELinux на добавляемых хостах. Для того, чтобы данная настройка применилась, после завершения операции *Install* необходимо перезагрузить хосты вручную; * *Disable Firewalld before cluster installation* -- выключение firewalld на хостах; * *Install OpenJDK before cluster installation* -- установка пакета *java-1.8.0-openjdk* на хостах; * *Set vm.swappiness to 0 for all hosts* -- отключение *swapping* на хостах; * *Append hosts into /etc/hosts file before cluster installation* -- запись добавляемых нод в */etc/hosts* на хостах кластера. Данную опцию рекомендуется отключить, если настроен DNS. .. _install_config_menu: .. figure:: imgs/install_config_menu.png :align: center Доступные при кластерной установке настройки По результатам установки все добавленные сервисы меняют состояние с *created* на *installed* -- установлен (:numref:`Рис.%s. `). .. _cluster_actions: .. figure:: imgs/cluster_actions.png :align: center Состояние сервисов кластера Для запуска кластера необходимо нажать кнопку *Start*. Установка сервиса в проинсталлированный кластер ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В **ADCM** предусмотрена возможность добавления нового сервиса в уже работающий кластер. Для этого сервис необходимо добавить и произвести его установку. Например, для установки сервиса *Kafka* в проинсталлиованный кластер необходимо: * В меню кластера *ADS* открыть вкладку "Services", нажать "Add service" и в открывшейся форме выбрать сервис *Kafka*; * В строке сервиса *Kafka* в поле "Actions" нажать на пиктограмму и выбрать действие *Install*; * По результатам инсталляции сервис *Kafka* меняет состояние с *created* -- создан, на *installed* -- установлен.