上下文
我正在运行一个独立的Flink部署(Flink v1.12.7(,在应用程序模式和非响应模式下没有高可用性。我有1个JobManager和2个TaskManager。它们运行在云服务器上,其中一个云服务器是任务数为1的JobManager,另一个云服务是任务数2的TaskManager。我为这两个服务使用的部署策略是滚动更新,最小值为100%,最大值为200%。这意味着当我在JobManager上部署一个新镜像时,ECS首先启动一个新的JobManager,然后再启动旧的JobManager。
问题
当ECS关闭旧的JobManager从而切换到新的JobManager时,TaskManager会关闭(即不处理任何输入(大约一分钟,并间歇性地记录错误。大约一分钟后,他们成功注册了新的JobManager,并像往常一样继续流媒体。如果我要将一个新映像部署到TaskManager,同时保持相同的JobManager不变,也会发生同样的情况。我想减少这种停机时间,让TaskManager和JobManager对另一个被换掉更有反应。
我尝试过的
我曾尝试将heartbeat.timeout
从50秒(默认值(减少到20秒,希望这能减少1分钟的停机时间,但没有成功。我还增加了内存和CPU,以防万一,但这也无济于事。
关于要调整的配置参数的任何帮助或想法都将很有帮助!非常感谢。
我确实有同样的问题。我读了很多关于HA设置/零停机应用程序升级的文章。在我的案例中,这些都不起作用
HA设置看起来很酷,但它只解决了作业管理器崩溃的问题,但启动一个更新了应用程序代码的新作业管理器并交换旧的作业管理器怎么样"独立模式";
零停机视频解决方案是让两个作业运行一段时间。它会有很多副作用,例如将重复的数据发送到接收器,并且在许多用例中可能非常危险。
Flink只是没有像";从最近的检查点开始";,我知道我可以使用--fromsavepoint标志,它适用于检查点,但我不想手动转到目录并找出哪一个是最新的检查点。。。。