我有一个用 java 编写的应用程序,该应用程序部署在 2 台服务器上。但是我只能在一台服务器上启动该应用程序。如果我在两台服务器上运行该应用程序,就会出现冲突。因此,我正在寻找一种解决方案,以确保我的应用程序仅在一台服务器上运行,而无需编辑应用程序的代码。
答案1
解决这个问题的软件很早就存在了:起搏器
不幸的是,这配置起来并不简单。
如果您的应用程序对时间要求不高,您还可以使用简单的解决方案并在共享存储上创建一个文件,指定应用程序在哪个服务器上运行,并在启动时检查该文件。但是,您必须确保应用程序崩溃时删除该文件,并且两台服务器不能完全相同地启动。
这就是管理员在完美但复杂的解决方案(如起搏器)和自己的包装脚本之间做出决定的时刻,这些脚本轮询文件或网络端口是否存在,希望不发生竞争条件。
您必须比较两种选择的缺点。