对 Linux Webserver 使用还是不使用虚拟化?

the*_*ega 5 virtualization linux debian

我维护当前托管在三台机器上的大型 web 项目(java + postgres + 一些工具)的服务器:

  1. 机器:邮件服务器(后缀),广告服务器(lighttpd + php + openx)
  2. 机器:Tomcat+Servlet
  3. 机器:PostgreSQL-Server,静态内容(通过 lighttpd)

所有机器都运行 Debian Stable 并通过 VPN (openvpn) 连接。由于硬件非常陈旧(每个 AMD Athlon 3000+ 和 2GB RAM),是时候进行更改了。

这些服务器现在应该被一台大机器取代(16GB 内存,支持 VT 的大英特尔 CPU,5 个 IP)。

现在的问题是:我应该仍然使用虚拟机来分离不同的任务,还是应该像往常一样简单地把所有东西都放在机器上。优缺点在哪里?

我想到了以下几点:

专业虚拟化:

  • 安全性:由于虚拟机是分开的,你不能拿走整台机器(希望如此)

虚拟化:

  • 性能:有性能损失
  • 工作:每个维护工作都必须为每个虚拟机完成多次
  • 通信:不同虚拟机(Servlet 做数据库)的通信变得更加复杂。
  • 硬内存限制:我必须为每台机器分配静态资源(如内存)。如果说我的 db-server 需要更多的 ram 30 秒(比分配的时间多),并且其他机器上会有更多的 ram 可用,这可能是一个骗局。如果没有虚拟化,这将不是问题。

感谢您的任何提示。

Ora*_*ech 1

性能损失——是的,从技术上讲是存在的。您或您的用户会注意到吗?除非它是一些疯狂的高端工作负载,或者您严重过度配置虚拟机*(或者试图将 5 个具有“正常”RAM 分配的虚拟机压缩到旧的现有服务器上,否则我对此表示严重怀疑。请记住实际检查您的 RAM用法 - 如果您要拆分所有内容,则默认运行级别 3 的 NTP 服务器不需要 512megs。(仅拆分 NTP 服务器是过多的,这只是一个示例。)

工作——这是事实。如果只是从一到三台服务器,可能没什么大不了的 - 进行更改,将命令从一个终端会话复制/粘贴到另一个终端会话。但除此之外,您需要某种管理工具,我目前正在考虑Puppet

*内存限制 - 取决于虚拟机。您使用的解决方案。某些环境(例如 ESX/vSphere)允许您为虚拟机分配比物理可用内存更多的 RAM。如果您付费使用该功能,ESX 可以让您设置资源池,并根据需要自动调整资源,并能够设置优先级。像所有事情一样,您必须知道它是如何工作的以及在特定环境中的权衡。