aur*_*els 17 ruby mysql architecture docker
我有一台运行5或6个小型Rails应用程序的服务器.所有附加文件都在S3上,它们都使用MySQL作为数据库.每个应用程序都有自己的用户并运行一些变薄.有一个nginx服务器在进行负载平衡和域路由.
我打算用Docker安装替换这个服务器:一个服务器,每个应用程序有一个容器,前面有一个nginx.
我的问题是:你在哪里放数据库部分?
我主要看到4种可能性:
1)每个应用程序容器内的一个Mysql服务器.我认为这不是Docker的理念.这将需要单独备份每个容器的数据.
2)所有应用程序的唯一MySQL容器.
3)主机Docker服务器上的标准MySQL安装.
4)所有应用程序的单独MySQL服务器.
你会怎么做 ?
PS:我知道Docker尚未准备好生产,我打算暂时使用它来进行升级,如果我对它感到满意就会切换.
jpe*_*zzo 22
这取决于几个因素.以下是一些可以帮助您做出决定的问题.
是5-6的应用程序非常相似(即,在泊坞窗而言,你可以基地它们一个共同的图像),并且您考虑部署更多的人,和/或迁移他们中的一些其他的服务器?
是的:那么在每个应用程序中嵌入MySQL服务器是有意义的,因为它将"贴近"应用程序,只需最少的配置工作.
NO:那么没有令人信服的理由嵌入MySQL服务器.
您是否希望能够扩展这些应用程序(即在多个容器上为单个应用程序加载平衡请求),或者扩展MySQL服务器(例如,主/从复制设置)?
是的:那么你就不能嵌入MySQL服务器,否则,扩展一层会扩展另一层,这会导致头痛.
NO:那么没有什么能阻止你嵌入MySQL服务器.
您是否认为至少有一个应用程序会出现重大数据库负载?
是的:那么您可能想要使用单独的MySQL服务器,因为单个应用程序可能会阻碍其他应用程序.
NO:那么你可以使用一个MySQL服务器.
如果你想要一个超级易于部署的设置,你不需要可扩展性,但你希望能够超级轻松地启动新实例,并希望能够移动实例,那么嵌入MySQL服务器就没问题了.周围没有困难.
最灵活的设置是为每个应用部署一个应用容器+一个MySQL容器.如果你想这样做,我建议等待Docker 0.7,它将实现链接,这将使你拥有一个基本的服务发现机制,这样每个应用程序容器都可以轻松发现其数据库容器的主机/端口.
我不会在主机上部署MySQL; 如果你想要一个MySQL安装,你可以通过运行一个MySQL容器并运行它来实现相同的结果-p 3306:3306(它将把主机的3306/tcp端口路由到MySQL容器的3306/tcp端口).
| 归档时间: |
|
| 查看次数: |
4677 次 |
| 最近记录: |