我是一名新手系统管理员,我将负责管理我们内联网的服务器。我有 PHP/Ruby/Python 开发人员背景。
该服务器将充当多个“技术堆栈”的主机。一位开发人员需要常用的 LAMP 堆栈,然后 Python 和 Ruby 开发人员分别希望使用 Django 和 Rails 以及 PostgreSQL DB。未来我们还可能添加 NodeJS 和 MongoDB。
我担心的是,我需要在管理方面支持太多服务。这些服务仅用于我们的内联网,因此流量不大。但我担心,如果一项服务出现问题,其他服务也可能会受到影响。
现在由于预算限制,我无法使用多个独立的服务器,因此我正在考虑使用 Virtualbox 等虚拟化技术。
我的想法是否正确,让开发人员为每个所需的堆栈使用一个虚拟机会容易得多?或者,我应该只在那台服务器上设置所有服务以避免虚拟化开销?
对于虚拟化,哪种软件更好,同时对于像我这样的新手管理员来说又易于使用?我曾以开发人员的身份在 Mac 上使用过 Virtualbox 和 Parallels,但从未以管理员的身份使用过。
更新:
进一步的研究让我想到了“容器”的概念。这对我来说都是新事物,我仍在阅读更多相关内容。我目前还不能对此发表任何评论,但我正在阅读以下两篇相关文章:
答案1
您对虚拟化的思考是非常正确的;将所有这些不同的应用程序/服务彼此分开几乎肯定是最好的。
不过,我可能不会将 VirtualBox 用于生产;尽管 Oracle 声称相反,但由于缺乏完善的管理工具,它并不特别适合生产。我会首先考虑 KVM/OpenStack(需要时间)或 VMware vSphere(需要一些时间和金钱)虚拟化解决方案。
你甚至可以更进一步实现您自己的私有 OpenShift PaaS或类似的规定。
至于基于容器的虚拟化,您基本上有两个选择:OpenVZ 或 LXC。前者在某些情况下可以很好地工作,但很难管理,而且我见过的大多数 OpenVZ 安装都非常可怕。而 LXC 太不成熟,目前在大多数情况下都无法使用。我现在不一定会以其中任何一个为基础来开展新项目,但希望 LXC 在一两年内对普通人来说会更容易使用。(请注意,OpenShift 使用严格控制的 LXC 容器。)