我有几台服务器运行多种服务。这些服务依赖于其他服务器上服务的可用性。
例子
ServerA/webservice 依赖于 ServerB/sqlservice 和 ServerC/blobservice
当安排更新/重启时,我想确保服务器和服务按正确的顺序启动。
在此示例中
服务器A、B和C可以同时重新启动,但服务必须按以下顺序启动:
- 服务器C/blob服务
- 服务器B/sql服务
- 服务器A/web服务
我知道服务可以依赖于其他本地服务,以确保它们以正确的顺序启动。如何在多台服务器上实现这一点?
答案1
没有现成的工具可以做到这一点。我认识的每个人都自己动手。在 Stack Overflow,我们有自己的软件,称为(非常有创意的)“patcher”,它可以帮我们解决这个问题。
您不太可能找到通用的交钥匙解决方案,因为每个人的需求都大不相同。例如:
- 在重新启动计算机之前,是否需要检查服务的运行状况?
- 如果你取出集群中的最后一台计算机会怎么样?
- 如果在重新启动之前服务状态不佳,该怎么办?当它恢复时,您可能不知道它是否因为最近的补丁而损坏,或者它是否已经损坏
- 如果您的主机已被禁用,但由于启动脚本而在重新启动后自动重新启用,该怎么办?
- 重启后如何验证服务和服务器的运行状况?
- 重新启动之前是否需要采取特殊步骤?
- 如果需要调整负载均衡器该怎么办?
- 重启之前需要将虚拟 IP 翻转至另一台主机吗?
- 是否有一个特定的流程可以安全地从集群中移除服务器?
- 如果你修补了集群中的一台机器但其无法正常运行,你该怎么办?
- 您是否会盲目地继续修补并祈祷不是补丁破坏了它?
- 您是否会停止所有修补,即使这只是一个孤立事件?
- 您是否引发异常并要求输入?
- 您使用什么操作系统?
- 您需要制定异构修补计划吗?
- 你们在发布什么样的补丁?补丁一上市你们就发布吗?你们会等着看是否有补丁被撤回吗?
- 您是否需要排除某些软件包/软件进行修补?
- 如果修补服务器需要修补并重新启动,会发生什么情况?
- 如果修补程序服务器停止运行,您是否会停止全部修补?
- 如何进行自我测试?
- 哪些机器属于哪些集群/节奏/群组?
- 有些机器可以并行修补。有些则需要串行修补
- 有些问题可以在其他问题之后很快得到修复
- 其他服务可能需要几个小时才能重新平衡(Elasticsearch),因此每天修补的机器较少
这只是一个短的我们通过修补/重启解决方案努力克服的问题列表,而其他人的列表看起来会完全不同。