我有一个由分布式数据库支持的分布式应用程序。(在这里分布意味着跨多个主机运行,每个主机上都有一个或多个实例)。应用程序周围有几个工具,每个工具都执行不同的操作,例如获取某种形式的更新、启动特定于应用程序的进程等。
数据库和应用程序都有自己的配置集;所有的工具都有它们周围的配置。这些配置参数中有许多贯穿工具。
为了管理整个系统,从开始到更新,再到备份,再到查询销毁,我对每个系统都有命令。在大多数情况下,这里的命令意味着使用某些命令行参数运行二进制/可执行文件。由于分布式的特性,这些命令通常必须在系统的所有主机上执行。
更新:我将维护几个这样的系统。因此,最后,我可能需要管理20个系统,每个系统在x.x版本运行,数据库运行在y.y版本
管理这样的应用程序的最佳方法是什么?
为了提供更多的背景,以下是我如何管理它的想法。设计一个服务器应用程序(在java/go中),该应用程序公开API以执行上述每个命令。拥有不同配置的超集,并将该配置存储在另一个数据库中。客户端(即应用程序的维护者)将发送一些有关应用程序的标识符信息,作为请求的一部分;服务器将接收请求,从数据库获取配置并执行该命令。此服务器将在我的系统的所有主机上运行。对于上面的示例,假设每个系统都需要5个主机;我会让这个服务器在总共的20*5=100主机上运行。
我觉得这是一个普遍的问题,我相信会有一些行业标准的工具,或者至少是一个概念上的解决方案。如果是这样的话,任何关于它的指南都会很有帮助。
发布于 2021-08-04 17:00:25
听起来,您需要的是服务器配置管理工具包,比如基于Python的SaltStack或Ansible,或者他们基于Ruby的祖先、主厨或傀儡。
他们每个人周围都有一个庞大的用户社区。
每本书都有几本解释如何使用它们的书。
花点时间来评估它们,这是很复杂的事情!
https://softwareengineering.stackexchange.com/questions/430775
复制相似问题