首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于数据库的Docker多应用服务器的体系结构

关于数据库的Docker多应用服务器的体系结构
EN

Stack Overflow用户
提问于 2013-10-08 22:15:51
回答 2查看 4.7K关注 0票数 17

我有一个运行5到6个小Rails应用程序的服务器。他们所有的附件都在S3上,而且他们都使用MySQL作为数据库。每个应用程序都有自己的用户,并运行一些内容。nginx服务器负责负载均衡和域路由。

我计划将此服务器替换为Docker安装:一个服务器,每个应用程序一个容器,前面有一个nginx。

我的问题是:你会把数据库部分放在哪里?

我主要看到4种可能性:

1)每个app容器内有一台Mysql服务器。我认为这不是Docker的哲学。它需要单独备份每个容器的数据。

2)为所有应用提供唯一的MySQL容器。

3)在宿主Docker服务器上安装标准的MySQL。

4)为所有应用程序提供单独的MySQL服务器。

你会怎么做?

PS :我知道Docker还没有做好生产准备,我计划现在使用它进行测试,如果我对它满意的话,我会切换它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 02:48:16

这取决于几个因素。这里有一些问题可以帮助你做出决定。

  • 的5-6个应用程序非常相似(即,在Docker术语中,您可以将它们基于一个通用的映像),您是否在考虑部署更多的应用程序和/或将其中的一些应用程序迁移到其他服务器?

代码语言:javascript
复制
- YES: then it makes sense to embed the MySQL server in each app, because it will "stick around" with the app, with minimal configuration effort.
- NO: then there is no compelling reason to embed the MySQL server.

  • 您希望能够扩展这些应用程序(即多个容器上单个应用程序的负载平衡请求),还是希望扩展MySQL服务器(例如主/从复制设置) ?

代码语言:javascript
复制
- YES: then you cannot embed the MySQL server, otherwise, scaling one tier would scale the other tier, which will lead to though headaches.
- NO: then nothing prevents you from embedding the MySQL server.

  • 您是否认为这些应用程序中至少有一个应用程序会有显著的数据库负载?

代码语言:javascript
复制
- YES: then you might want to use separate MySQL servers, because a single app could impede the others.
- NO: then you can use a single MySQL server.

如果您想要一个超级易于部署的设置,其中不需要可伸缩性,但是希望能够非常轻松地启动新实例,并且希望能够毫无困难地到处移动实例,那么嵌入MySQL服务器是很好的。

最灵活的设置是您为每个应用程序部署一个应用程序容器+一个MySQL容器。如果你想这样做,我建议等待Docker 0.7,它将实现链接,它将让你有一个基本的服务发现机制,以便每个应用程序容器可以轻松地发现其数据库容器的主机/端口。

我不会在主机上部署MySQL;如果需要安装单个MySQL,那么可以通过运行单个MySQL容器并使用-p 3306:3306运行它来实现相同的结果(它会将主机的3306/tcp端口路由到MySQL容器的3306/tcp端口)。

票数 22
EN

Stack Overflow用户

发布于 2014-11-06 02:06:06

由于这5个或6个应用程序如您所描述的那样很小,我将基于两个原因明确排除每个容器安装单独的MySQL的选项:

  1. 它是对服务器资源的浪费,它几乎相当于在同一台服务器上安装MySQL 5到6次。
  2. 它灵活性较差(无法独立于应用程序扩展数据库),而且更难备份。

拥有专用的MySQL容器或直接在主机上安装MySQL (即不停靠)应该具有几乎相同的性能(最终您将在主机上拥有一个本机mysql进程,而不管它是否在容器中)。

唯一的区别是您必须挂载一个卷来将数据持久化到MySQL容器之外,因此拥有一个专用的MySQL容器是一个更好的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19250205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档