具有高可用性的 Chronos 集群

Chronos Cluster with High Availability

我在每台机器上有三个服务器 A、B、C 我是 运行ning Chronos、ZooKeeper、mesos-master、mesos-slave。

Chronos 使用 ZooKeeper url 联系 mesos-master url 因此它会自动选择领先的 master,即使某些节点已关闭。我这里的可用性很高。

即使是集群模式下的 Chronos 运行,所以访问任何 Chronos 我都会看到相同的作业列表,并且一切正常。

我这里的问题是,三个 URLs

中的任何一个都可以访问 Chronos

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

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

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

使用 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 配置: