我有两台服务器,每台运行50到100个不同的传统Web应用程序,使用从PHP到Python到Ruby-on-rails到NodeJS的各种语言编写。
我们希望这些机器老化,不安全,组织严密,没有一致的configuration逻辑,并且每个都运行两个mysqld实例(不要问)。
为此,我想要做到以下几点:
最终,我想要做类似Deis或Flynn的事情,尽pipe目前这两种产品都没有生产准备。
我真的有点不知所措,我真的不知道从哪里开始。 有什么build议么? 乘客是我应该考虑的东西吗? 泊坞窗?
谢谢!
我不太确定你的实际问题是什么。 你的整体问题相当含糊。 我可以从中收集三个主要的问题:
我会先回答3号,因为这是最简单的。 答案是肯定的 如果您将要构build新的东西,Docker将帮助您进入一个更加便携的世界,从而帮助您获得更具扩展性的点。 您的遗留Web应用程序将作为自己的容器运行,并具有自己的依赖关系,因此变得更加便携。
数字2的答案听起来更多地依赖于Ruby和Ruby应用程序。 你可以跑客运吗? 也许…这似乎更依赖于应用程序的写法以及它可能兼容的服务器。 然而,似乎Phusion正在大步前进,对Docker友好。 Docker镜像至less包含运行Ruby,Python和Node.js应用程序 – https://github.com/phusion/passenger-docker 。
我对号码1的回答将是容器化遗留的应用程序。 如果这些应用程序不是已经存在的话,那么使这些应用程序更符合12个因素( http://12factor.net/ )。 使他们更加面向服务。 而不是在一个容器中运行诸如MySQL,Redis,Apache,PHP-FPM等之类的东西,将它们分离成不同的服务,通过TCP和HTTP相互连接(Docker链接将是一个很好的开始 – https: //docs.docker.com/userguide/dockerlinks/ )。
通过让您的应用程序在自己的容器中运行,使用可以在任何地方运行的外部服务,并且可以使用默认的工作configuration(版本)进行版本控制,那么您正在接近一个可以启动的世界编写调度,服务发现和部署脚本。
如果您还没有,请查看比完整的Docker PaaS(如https://coreos.com/或http://www.projectatomic.io/)早一点的内容。 像这样的东西给你安排你自己的容器/单元,而不是实际为你build立你的应用程序容器。 为了学习开发,你可以使用http://www.fig.sh/或http://decking.io/ 。 非常适合在本地testing新的面向服务的容器。
有关Docker的更多工具,请继续关注https://stackoverflow.com/questions/18285212/how-to-scale-docker-containers-in-production 。 最好的答案有一个很好的概述,目前是什么,作者保持它的更新相当好。