我维护一个大型webproject的服务器(
java postgres一些工具),目前托管在三台机器上:
>机器:邮件服务器(后缀),广告服务器(lighttpd PHP openx)
>机器:Tomcat Servlet
>机器:Postgresql-Server,静态内容(通过lighttpd)
所有机器都运行Debian Stable并通过VPN(openvpn)连接.由于硬件非常陈旧(每台AMD Athlon 3000和2GB RAM),因此需要进行更改.
这些服务器现在应该被一台大机器取代(16GB Ram,大型Intel cpu支持VT,5个IP).
现在的问题是:我是否仍然应该使用虚拟机分离不同的任务,或者我应该像往常一样简单地将所有内容放在机器上.利弊在哪里?
我想到了以下几点:
专业虚拟化:
>安全性:由于vm是分开的,你不能把整个机器(希望)
Con虚拟化:
>性能:性能下降
>工作:每个维护工作必须为每个vm完成几次
>通信:不同vm(Servlet do Database)的通信变得更加复杂.
>硬内存限制:我必须为每台机器分配静态资源(如内存).这可能是一个骗局,如果说我的db-server需要更多ram 30秒(比它已分配)并且在其他机器上可以有更多的ram.没有虚拟化,这不会是一个问题.
谢谢你的任何提示.
解决方法
性能损失 – 是的,技术上有一个.这是您或您的用户会注意到的吗?除非是一些疯狂的高端工作负载,或者你过度配置虚拟机*(或者试图将“正常”RAM分配的5个虚拟机压缩到旧的现有服务器上,我真的很怀疑它.记得实际检查你的内存用法 – 如果你正在拆分所有东西,你就不需要512megs用于默认为运行级别3的NTP服务器.(分离JUST NTP服务器过多,这只是一个例子.)
工作 – 这是事实.如果它只来自一到三台服务器,可能没什么大不了的 – 进行更改,将命令从一个终端会话复制/粘贴到另一个终端会话.虽然过去,你想要某种管理工具,我现在正在寻找Puppet.
*内存限制 – 取决于virt.你用的解决方案.某些环境(如ESX / vSphere)允许您为VM分配更多RAM,而不是物理上可用.如果您为该功能付费,则ESX允许您设置资源池,并根据需要自动调整资源,并能够设置优先级.像所有东西一样,你必须知道它是如何工作的以及在特定环境中的权衡.