在我的设置中,我有两个应用程序实例,它们同时启动并处理请求,使用 Hazelcast 共享状态和锁定。默认设置是所有数据都在两个节点上,其中 50% 是活动的,50% 是另一个节点的备份。
我希望在我的设置中添加蓝/绿部署,这样我就可以部署一个新版本,而不会中断处理请求,也不会错误地丢失任何数据/处理请求。
在部署期间,我会关闭应用程序的一个实例,这意味着剩余的实例现在将拥有 100% 的实时数据和处理请求。如果该实例出现任何问题,我会丢失所有数据(我没有备份设置) - 我很高兴接受这种风险。
一旦我启动了应用程序的新版本实例,Hazelcast 应该开始重新平衡缓存,使其 50% 的实时和 50% 的备份再次在每个实例上。正是在这一点上,我想阻止并等待重新平衡完全完成,然后再将新实例宣传为 live。完成后,新实例有 50% 的实时数据和 50% 的备份。
重新平衡完成后,我可以关闭第二个版本,启动新版本,Hazelcast 将初始化重新平衡,我会阻塞,等待重新平衡完成,然后将第二个实例宣传为活动。
我的蓝/绿部署现在已经完成。
问题:如何阻止新实例直到重新平衡完成(它已收到所有数据)?