Spring Boot 如何实现程序的主热备功能?

目前项目有一个需求,就是程序实现双机热备。
客户方已购买了双机热备软件,但是软件只能实现热备。
但是程序内部有许多的定时任务,都是操作数据库内的,和对第三方的TCP进行通讯的。

如果两台服务器都同时启动的情况下定时任务等会同时执行,但是实际只需要一台对外开放服务及数据处理。

目前有一个思路就是能不能暂停spring boot的启动,当程序判断到主机的IP被双机热备软件切换到该服务器时才启动该服务器的spring boot 服务。
但是没有找到一个合适的实现方式。

//说一下我的想法
1.主服务器上spring  boot正常启动
2.备用服务上新建一个心跳客户端,用socket也好,用别的方式都行,和主服务器上的服务发送心跳包,例如每隔10秒发送一次
如果心跳包没有收到,或者连接异常,就ping一下主服务器是否宕机,这种情况就在心跳客户端上用java cmd启动备用spring boot服务,此时备用服务器就变成主服务了
然后运维人员就赶紧去维护宕机的那台服务器,等维护成功就在这台服务器上启动心跳客户端,然后往新的主服务器上发送心跳包,以此类推

Redis分布式锁,简单好用