Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Зачем нужен кластер?
Путем кластеризации серверов NiFi можно иметь увеличенную возможность обработки через один интерфейс (рис. 3.), с помощью которого можно выполнять изменения потока данных и контролировать его. Кластеризация позволяет пользователю делать каждое изменение только один раз, и это изменение затем реплицируется на все узлы кластера. Через единый интерфейс пользователь может также контролировать состояние и статус всех узлов [31].

Рис. 3. Графический интерфейс Apache NiFi
Связь внутри кластера
Как уже отмечалось, узлы взаимодействуют с Координатором кластеров посредством heartbeats. Когда выбирается координатор кластера, он обновляет заданный ZNode в Apache ZooKeeper с информацией о подключении, чтобы узлы понимали, куда отправлять сигналы. Если один из узлов не доступен, остальные узлы в кластере не будут автоматически загружать работу недостающего узла. Можно настроить поток данных для непредвиденных ситуаций при сбое, однако это зависит от дизайна потока данных и не происходит автоматически [31].
Когда вносятся изменения в поток данных, узел, который получает запрос на изменение потока, передает эти изменения всем узлам и ждет ответа каждого узла, указывая, что он внес изменения в свой локальный поток [31].
При начальном запуске кластера, NiFi должен определить, какой из узлов имеет «правильную» версию потока. Это делается путем голосования по потокам, которые имеют каждый из узлов. Когда узел пытается подключиться к кластеру, он предоставляет копию своего локального потока Координатору кластеров. Если поток не был выбран «правильным» потоком, поток узла сравнивается с потоками других узлов. Если поток другого узла соответствует текущему, для этого потока будет подано голосование. Если ни один другой узел не сообщил о том же потоке, этот поток будет добавлен в пул возможных избираемых потоков с одним голосом. По прошествии некоторого времени (настройка через свойство nifi. cluster. flow. election. max. wait. time), или некоторое количество узлов подало голоса (через свойство nifi. cluster. flow. election. max), поток выбирается как «правильная» копия потока. Все узлы, которые имеют несовместимые потоки, затем отключаются от кластера, а те, у которых совместимые потоки, наследуют поток кластера [31].
Настройка кластера Apache NiFi
Для настройки кластера Apache NiFi нам нужно как минимум 3 узла, для того чтобы обеспечить кворум. Как правило, рекомендуется запускать ZooKeeper на 3 или 5 узлах. Работа на менее чем 3 узлах обеспечивает меньшую устойчивость к сбоям. Запуск на более чем 5 узлах обычно приводит к большему сетевому трафику, чем это необходимо. Для всех трех экземпляров общие свойства кластера можно оставить с настройками по умолчанию. Однако нужно обратить внимание на то, что при изменении этих параметров они должны быть одинаковыми для каждого будущего узла кластера [31].
Для минимальной настройки кластера Apache NiFi необходимо выполнить следующее операции на каждом узле будущего кластера:
задать в nifi. properties необходимые параметры указать сервера кластера в zookeeper. properties задать id для Zookeeper у локального узла указать строку подключения к Zookeeper кластеру в state-management. xmlОпишем каждый шаг более детально:
Задать в nifi. propertiesnifi. cluster. is. node=true
nifi. cluster. node. address=<local-ip>
nifi. cluster. node. protocol. port=3030
nifi. state. management. embedded. zookeeper. start=true
nifi. remote. input. host=<local-ip>
nifi. web. http. host=<local-ip>
nifi. zookeeper. connect. string=<connect-string>
В zookeeper. properties прописать сервера кластера:server.1=<nifi-node1-ip>:2888:3888
server.2=<nifi-node2-ip>:2888:3888
server.3=<nifi-node3-ip>:2888:3888
initLimit=5
syncLimit=2
<property name="Connect String"></property>
Для запуска Apache NiFi на каждом узле достаточно запустить команду:
bin/nifi. sh start
При этом не важно в какой последовательности будет запущен Apache NiFi на каждом из узлов. Отслеживать процесс запуска кластера можно по файлу logs/nifi-app. log с помощью следующей команды:
tail - f logs/nifi-app. log
Перейдите по URL-адресу http://localhost:8080/nifi/ на один из узлов, и пользовательский интерфейс должен выглядеть как на рис. 4.

Рис. 4. Пользовательский интерфейс Apache NiFi запущенного в кластере.
Открыв список узлов кластера Apache NiFi (рис. 5.), вы можете увидеть детальную информацию об узлах кластера, их активность, количество используемой памяти, количество используемого дискового пространства и многое другое.

Рис.5. Список узлов кластера Apache NiFi.
Поиск и исправление проблем
Если возникли проблемы и кластер не работает как описано, то нужно исследовать файлы logs/nifi-app. log и logs/nifi-user. log на узлах. При необходимости можно изменить уровень логирования на DEBUG, отредактировав файл conf/logback. xml. Как пример, необходимо установить уровень «DEBUG» в следующей строке (вместо «INFO»):
<logger name="org. apache. nifi. web. api. config" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
2.6. Безопасность в Apache NiFi
Безопасность безусловно является важным критерием для решений на базе Интернета Вещей, охватывающим все уровни стека технологий - от управления доступом в приложении до встроенных в устройство средств безопасности [35]. Для этих целей в Apache NiFi существуют широкие возможности для настройки уровней безопасности [31][34].
Взаимодействие между системами
Работа с потоковыми данными должна быть безопасной. Для этого Apache NiFi в каждой точке потоковых данных обеспечивает безопасный обмен с использованием шифрованных протоколов, такие как двухсторонний SSL. Кроме того, NiFi позволяет потоку шифровать и расшифровывать содержимое и использовать совместно используемые ключи доступа или другие механизмы с обеих сторон отправителя и получателя [26].
Взаимодействие с пользователем
NiFi обеспечивает двухстороннюю аутентификацию SSL и обеспечивает подключаемую авторизацию, чтобы можно было правильно управлять доступом пользователей на определенных уровнях (например только для чтения, диспетчер потоков данных, администратор). Если пользователь вводит в поток уязвимые данные, такие как пароль, он сразу же зашифровывается на стороне сервера и никогда не передаются на сторону клиента даже в зашифрованном виде [26].
Авторизация нескольких арендаторов
Уровень полномочий данного потока данных применяется к каждому компоненту, позволяя пользователю иметь широкий уровень контроля доступа. Это означает, что каждый кластер NiFi способен обрабатывать требования одной или нескольких организаций. По сравнению с изолированными топологиями, авторизация с несколькими арендаторами позволяет использовать модель самообслуживания для управления потоком данных, тем самым позволяя отдельной группе или организации управлять потоками с полным пониманием остальных частей потока, к которым у них нет доступа [26].
3. ЗАПУСК КЛАСТЕРА APACHE NIFI В РАЗЛИЧНЫХ ОКРУЖЕНИЯХ
3.1. Запуск в виртуальной среде
Для изучение работы с кластером нам необходима возможность локального запуска кластера Apache NiFi в виртуальной среде. Для запуска в виртуальной среде были использованы Hashicorp Vagrant и Oracle VM VirtualBox [7]. Необходимо установить плагины vagrant-vbguest[35] и vagrant-hostmanager[36].
Для инициализации работы с vagrant необходимо запустить:
vagrant init
Далее, необходимо отредактировать файл Vagrantfile, и файлы yml. Примеры их заполнения опубликованы на github [37].
Для настройки Apache NiFi на каждой виртуальной машине нужно выполнить следующие шаги:
1. Установить OpenJDK и дополнительные утилиты
sudo yum - y install net-tools ntp wget java-1.8.0-openjdk java-1.8.0-openjdk-devel
2. Настроить firewall
sudo systemctl enable ntpd && sudo systemctl start ntpd
sudo systemctl disable firewalld
sudo systemctl stop firewalld
3. Добавить пользователя nifi, от имени которого будет работать NiFi
sudo useradd nifi - d /home/nifi
4. Настроить доступ к Apache NiFi
cd /opt/ & sudo tar xvfz /vagrant/nifi-1.0.1-bin. tar. gz
sudo mv /home/vagrant/nifi-1.0.1/ /opt/nifi-1.0.1
sudo mkdir - p /opt/nifi-1.0.1/state/zookeeper
sudo chown - R nifi:nifi /opt/nifi-1.0.1
5. Настроить nifi. properties, zookeeper. properties
6. Запустить Apache NiFi
/opt/nifi-1.0.1/bin/nifi. sh start
Для ускорения и облегчения процесса запуска были написаны специальные скрипты провизии[14], которые позволяют запустить кластер Apache NiFi в виртуальной среде одной командой:
vagrant up
После запуска, в течении пяти-семи минут, в браузере будет доступен пользовательский интерфейс по адресу http://localhost:8080/nifi/. Так же, можно проверить, открыв VirtualBox, должны быть видны три виртуальных машины под управлением nifi01, nifi02 и nifi03 как на рис. 6.

Рис. 6. Три виртуальные машины запущенные в VirtualBox
При необходимости можно подключится по SSH к виртуальной машине:
vagrant ssh nifi01
Исходники скриптов провизии vagrant для запуска кластера NiFi опубликованы на github [37].
3.2. Запуск кластера на граничных устройствах
Для проверки возможности работы Apache NiFi на граничных устройствах были выбраны Raspberry Pi и Android устройства с установленной программой Linux Deploy [38][39], которая позволяет установить Linux на Android в виде виртуальной машины.
Наглядная схема запущенного кластера отображена на рис. 7.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


