如何确保 2 个不同的服务器上有 2 个应用程序,但同时 1 台服务器上只有 1 个应用程序正在运行

如何确保 2 个不同的服务器上有 2 个应用程序,但同时 1 台服务器上只有 1 个应用程序正在运行

我有一个用 java 编写的应用程序,该应用程序部署在 2 台服务器上。但是我只能在一台服务器上启动该应用程序。如果我在两台服务器上运行该应用程序,就会出现冲突。因此,我正在寻找一种解决方案,以确保我的应用程序仅在一台服务器上运行,而无需编辑应用程序的代码。

答案1

解决这个问题的软件很早就存在了:起搏器

不幸的是,这配置起来并不简单。

如果您的应用程序对时间要求不高,您还可以使用简单的解决方案并在共享存储上创建一个文件,指定应用程序在哪个服务器上运行,并在启动时检查该文件。但是,您必须确保应用程序崩溃时删除该文件,并且两台服务器不能完全相同地启动。

这就是管理员在完美但复杂的解决方案(如起搏器)和自己的包装脚本之间做出决定的时刻,这些脚本轮询文件或网络端口是否存在,希望不发生竞争条件。

您必须比较两种选择的缺点。

相关内容