linux - 如何在没有大 statck 的情况下在 2 个不同的 Centos 主机上建立 2 个服务之间的依赖关系?
问题描述
我有两台服务器:
- 在第一个上有一个包含我的应用程序的 tomcat (Spring boot)
- 在第二台服务器上,有我的数据库服务器(MySQL)
当 MySQL 服务器未准备好时 tomcat 启动时如何保持健壮?实际上我在一次电源故障时遇到了这个问题,并且两个服务同时启动,最后tomcat失败了。
管理不同主机上的服务之间的依赖关系问题的优雅方法是什么?unix 中是否有本机方式?
解决方案
您的问题已经有了答案。链接:
- https://unix.stackexchange.com/questions/433113/how-do-you-use-systemd-to-ensure-remote-database-is-available
- https://serverfault.com/questions/867830/systemd-start-service-only-after-dns-is-available
基本上你需要检查mysql是否在所需的端口上回答。所以你可以像这样修改tomcat systemd单元文件:
ExecStartPre=/bin/bash -c 'until host example.com; do sleep 1; done'
这将在带有 systemd 的主机上工作。
一般来说,您需要创建简单的脚本来尝试连接到远程数据库,如果成功则返回退出代码 0
推荐阅读
- php - WordPress:根据元字段列出具有 AZ 列表的作者
- reactjs - 如何在表单提交按钮内调用自定义钩子?
- python - 如何在使用 reddit PRAW 时查看所有线程以获得评论数量?
- xcode - 为什么插页式广告有时会显示为全黑?
- python - 如何创建从用户单击向数据库添加点的工具?
- ruby-on-rails - Pundit::NotAuthorizedError / 权威授权问题
- mongodb - 聚合嵌套 objectid
- angular - Angular 8 - 如何将一个模型数据推送到另一个模型
- android - 有没有办法检查是否应用了 NoiseSuppressor?
- regex - 如何在 sed 命令中匹配正则表达式 1 到 3 次?