关于设置Docker容器的大多数在线文章似乎是围绕将应用程序分解为微服务并将它们分配到各种容器并将它们部署到集群中的想法。
我想找出处理多个不相关应用程序的数据库(例如mySQL)的最佳方法,这些应用程序是为不同的客户端编写的,部署到同一个集群中。
假设我有10个不相关的小应用程序(如wordpress),都需要访问mySQL数据库。我可以:
将应用程序作为容器部署到集群中,仅包含应用程序代码,并设置专用的mySQL服务器或Google Cloud SQL实例,并要求每个应用程序容器作为第三方服务连接到数据库
将应用程序作为容器部署到群集中。对于每个应用程序,还要将一个单独的数据库容器部署到集群中并链接这两个。
将单独的数据库容器部署到群集中,并将此容器链接到群集中的各种应用程序容器。
这些解决方案中哪一种最适合应用程序架构设计,哪种解决方案最好地利用计算机资源?我觉得虽然部署多个mysql容器(每个应用程序一个)可能是最好的设计,但它可能不是最有效的资源,因为我们将运行一堆mySQL容器。
答案 0 :(得分:3)
每个应用程序的Containerising db似乎是“docker方式”并提供更好的隔离和可移植性
docker方式不是每个应用程序的数据库,而是每个容器的服务。 MySQL很快就会成为一项服务,因为你没有在mysql容器中运行另一个服务(app / ssh / monitoring ...),这就是它的发展方向。
因此,每个应用程序一个数据库或一个数据库之间的决定取决于您。
我个人的选择是第三个:
- 将单独的数据库容器部署到群集中,并将此容器链接到群集中的各种应用程序容器。
醇>
我正在使用kubernetes和postgres容器,该容器用作所有应用程序的数据库服务器。
我更喜欢这种选择,因为备份/复制/应用维护比使用30个不同的数据库服务器+ 30 *从服务器+ 30 *外部池+ 30 *监控工具等更容易作为OP的观点... 同样在我的情况下,我有更好的资源使用。
但我保留了将数据库移动到另一个专用数据库服务器容器的可能性,以防应用程序使用太多资源或者有太多应用程序已在使用该数据库。