如何在"CONTROLLER AS A SERVICE"模式下设置Apache Helix控制器



本教程提到可以部署控制器来管理大量集群,但没有关于它的文档/教程。从代码和示例来看,似乎要创建一个控制器,我总是需要传递 clusterName。

如何设置控制器以允许它们管理多个集群并自动处理故障案例?

我们需要创建一个文档来设置它。

"Helix控制器即服务"的一般思想是,您需要创建一个控制器集群(又名:超级集群(,其中包含所有Helix控制器实例。 然后将要由Helix管理的集群链接到这个超级集群。

设置它的示例步骤如下:

构建螺旋管理员

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将自动切换到集群的另一个控制器。

相关内容

  • 没有找到相关文章

最新更新