Flink 在更换作业管理器和任务管理器时减少停机时间

2nc8po8w  于 2023-04-10  发布在  Apache
关注(0)|答案(1)|浏览(185)

Context

我在运行独立的Flink部署(Flink v1.12.7)在应用程序模式和非React模式下没有高可用性。我有1个JobManager和2个TaskManager。它们在ECS上运行,其中一个ECS服务是任务计数为1的JobManager,另一个ECS服务是任务计数为2的TaskManager。部署策略I'我对这两个服务使用的是滚动更新,最小值为100%,最大值为200%。这意味着当我将新映像部署到JobManager时,ECS首先启动新的JobManager,然后关闭旧的JobManager。

问题

当ECS向下旋转旧的JobManager从而切换到新的JobManager时,TaskManager将关闭(即不处理任何输入)大约一分钟,具有非常间歇的错误记录。它们成功地注册到新的JobManager,并继续像往常一样流式传输。如果我要将新映像部署到TaskManager,同时保持相同的JobManager不变,则会发生相同的情况。我想减少这种停机时间,并使TaskManager和JobManager对另一个被换出的响应更快。

我所尝试的

我试过把heartbeat.timeout的内存从50 s(默认值)减少到20 s,希望这样可以减少1分钟的停机时间,但没有成功。我还增加了内存和CPU,以防万一,但这也没有帮助。
任何有关调整配置参数的帮助或想法都将是有帮助的!谢谢!

bvhaajcl

bvhaajcl1#

我也有同样的问题。而且我读了很多关于HA设置/零停机应用程序升级的文章。这些对我的情况都不起作用
HA设置看起来很酷,但它只解决了jobmanager崩溃的问题,但如果启动一个新的jobmanager并更新应用程序代码并交换旧的作业管理器,情况会如何呢?
零停机视频解决方案是保持两个作业运行一段时间。它会有很多副作用,例如重复的数据发送到sink,并且在许多用例中可能非常危险。
Flink没有“从最新检查点开始”这样的功能,我知道我可以使用--fromsavepoint标记,它适用于检查点,但我不想手动转到目录并找出哪个是最新检查点....

相关问题