在我运行的每台机器上都有三台服务器A,B,C,ZooKeeper,mesos-主服务器,mesos-从服务器。
Chronos使用ZooKeeper url与mesos-master联系,因此即使某些节点关闭,它也会自动选择主导主机。我在这里有很高的可用性。
即使是Chronos也在集群模式下运行,因此访问任何Chronos --我看到相同的作业列表--一切都正常。
我这里的问题是,用三个URL中的任何一个都可以访问Chronos
http://server_node_1:4400http://server_node_2:4400http://server_node_3:4400我有另一个应用程序,它使用Rest来调度Chronos中的作业。在高可用性模式下运行时,我的应用程序必须与哪个URL进行通信?
假设我的应用程序与http://server_node_1:4400进行任务调度,如果节点server_node_1上的Chronos关闭,我无法安排作业。
我的应用程序需要与单个URL对话,以便在Chronos中安排作业。即使某些Chronos节点出现故障,我也应该能够安排任务。我是否需要在我的应用程序和Chronos集群之间使用某种负载均衡器来选择运行中的chronos节点来进行作业调度?如何在我的场景中实现高可用性?
发布于 2016-02-20 13:57:42
使用HAProxy路由到Chronos实例。通过这种方式,您可以使用例如curl loadbalancer:8081访问Chronos实例。
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或者更好的是,通过马拉松启动Chronos,这将确保给定数量的实例。然后,可以通过以下方式生成HAProxy配置:
https://stackoverflow.com/questions/35524108
复制相似问题