我正在使用Mesos和Marathon来管理应用程序部署,并在Marathon https://github.com/mesosphere/marathon/issues/3783中遇到了这个错误,也就是说部署期间的领导者选举会扩展实例领导选举经常发生(大约每30分钟一次),所以我经常会遇到这个问题.
我知道每30分钟一次是非常不规律的,因为我已经升级到Marathon 1.3.10并且过去2天没有选举,但是多久一次是"正常"?领导人退位/选举是否在正常情况下发生,或者除非存在潜在问题,否则我应该期待0次选举?一位同事向我建议"领导人选举是正常的","一定数量的选举是正常的,也是可以预期的".我只是不相信,并且想肯定地知道.
如果您的Marathon每30分钟重新选择一次,这是不正常的.在正常情况下,马拉松不应该放弃或重新选择新的领导者,直到维护发生(更新或重启).虽然如果发生这种情况,可能是由4个主要问题引起的(所有结果都是超时):
马拉松的表现 - 当马拉松有性能问题时,其中一个症状是失去领导能力.这是因为Marathon在给定的时间间隔内没有响应Zookeeper并被标记为已消失.
Marathon Zookeeper连接问题 - 当网络延迟太高时(例如,Zookeeper群集位于与Marathon不同的DC中),则某些更新可能会超时.这将导致失去领导力.
Zookeeper的表现 - 当Zookeeper需要做很多工作时,会超时一些请求,导致Marathon失去领导力.
马拉松被迫退位 DELETE /v2/leader
要解决性能问题,请按照此处描述的步骤操作
打碎你的马拉松.
监控 - 启用指标但请记住配置它们.
更新至1.3.10或更高版本.
最小化Zookeeper通信延迟和对象大小.
调整JVM - 添加更多堆和CPU :).
不要使用事件总线 - 如果确实需要,请使用过滤后的SSE,并接受它是异步的,事件最多只传递一次.
如果需要任务生命周期事件,请使用自定义执行程序.
首选批量部署到许多单独的部署.