具有高可用性的Chronos群集

时间:2016-02-20 13:45:01

标签: apache-zookeeper mesos mesosphere

我在每台机器上都有三台服务器A,B,C我正在运行Chronos,ZooKeeper,mesos-master,mesos-slave。

Chronos使用ZooKeeper url联系mesos-master,因此即使某个节点关闭,它也会自动选择前导master。我在这里有很高的可用性。

即使Chronos在集群模式下运行,因此访问任何Chronos我看到相同的作业列表,一切正常。

我在这里遇到的问题是,可以使用三个URL中的任何一个访问Chronos

  • http://server_node_1:4400
  • http://server_node_2:4400
  • http://server_node_3:4400

我有另一个使用Rest API在Chronos中安排作业的应用程序。在高可用性模式下运行时,我的应用程序必须与哪个URL进行通信?

假设我的应用程序与http://server_node_1:4400进行对话以安排作业,如果节点server_node_1上的Chronos出现故障我无法安排作业。

我的应用程序需要与单个URL通信才能在Chronos中安排作业。即使某些Chronos节点出现故障,我也应该可以安排这项工作。我是否需要在我的应用程序和Chronos群集之间安装某种负载均衡器来选择运行的chronos节点进行作业调度?如何在我的场景中实现高可用性?

1 个答案:

答案 0 :(得分:0)

使用HAProxy路由到Chronos实例。这样您就可以使用例如Chronos实例访问curl loadbalancer:8081

haproxy.cfg

listen chronos_8081
  bind 0.0.0.0:8081
  mode http
  balance roundrobin
  option  allbackups
  option http-no-delay
  server chronos01 server_node_1:4400
  server chronos02 server_node_2:4400
  server chronos03 server_node_3:4400

甚至更好,通过Marathon启动Chronos,这将确保给定数量的实例。然后可以通过以下方式生成HAProxy配置:

相关问题