Как настроить контроллер Apache Helix в режиме "КОНТРОЛЛЕР КАК СЕРВИС"

В учебнике упоминается, что контроллеры могут быть развернуты для управления большим количеством кластеров, но нет документации / руководства по этому вопросу. Из кода и примеров видно, что для создания контроллера мне всегда нужно передавать имя кластера.

Как настроить контроллеры, чтобы они могли управлять более чем одним кластером и автоматически обрабатывать случаи сбоев?

1 ответ

Решение

Нам нужно будет создать документ о том, как его установить.

Общая идея "Контроллер Helix как сервис" заключается в том, что вам необходимо создать кластер контроллеров (он же супер кластер), который будет содержать все экземпляры контроллеров Helix. А затем свяжите ваш кластер, которым будет управлять Helix, с этим супер кластером.

Примерные шаги по настройке:

Building Helix admin

git clone git://git.apache.org/helix.git
cd helix
mvn clean install package -DskipTests

Создание суперкластера на ZK

cd helix-core/target/helix-core-pkg/bin
chmod +x ./helix-admin.sh
./helix-admin.sh --addCluster mySuperCluster --zkSvr <ZKSERVER:PORT>

Создание экземпляров контроллера спирали в супер кластере

./helix-admin.sh --addNode mySuperCluster myController-1_12345 --zkSvr <ZKSERVER:PORT>
./helix-admin.sh --addNode mySuperCluster myController-2_12345 --zkSvr <ZKSERVER:PORT>
./helix-admin.sh --addNode mySuperCluster myController-3_12345 --zkSvr <ZKSERVER:PORT>

Запустите все ваши экземпляры контроллера

./run-helix-controller.sh  --cluster mySuperCluster --mode DISTRIBUTED --controllerName myController-1_12345 --zkSvr <ZKSERVER:PORT>  
./run-helix-controller.sh  --cluster mySuperCluster --mode DISTRIBUTED --controllerName myController-2_12345 --zkSvr <ZKSERVER:PORT>  
./run-helix-controller.sh  --cluster mySuperCluster --mode DISTRIBUTED --controllerName myController-3_12345 --zkSvr <ZKSERVER:PORT>  

Теперь ваш супер кластер настроен и работает.

Предположим, у вас есть два кластера (скажем, storageCluster-1 и storageCluster-2), которыми вы хотели бы управлять с помощью Helix. Вы можете связать эти два кластера со своим супер кластером следующим образом:

./helix-admin.sh --activateCluster storageCluster-1 mySuperCluster true --zkSvr <ZKSERVER:PORT>
./helix-admin.sh --activateCluster storageCluster-2 mySuperCluster true --zkSvr <ZKSERVER:PORT>

Теперь оба ваших кластера будут управляться одним из контроллеров Helix из суперкластера. В случае смерти одного из контроллеров Helix автоматически переключается на другой контроллер для ваших кластеров.

Другие вопросы по тегам