负载平衡和虚拟化的最佳实践

我在这里进行了一些search,没有发现任何与我相关的东西。 我会尽可能简短。

我目前有OSX服务器,其中三个。 我正在转向虚拟化环境,因为苹果取消了Xserve。 我没有以前的虚拟化经验,但我是一个快速学习者自1997年以来我一直在pipe理服务器

所以,在新的数据中心新的专用服务器。 Kickass硬件,安装了VMware ESXi,并在其中创build了两个networking“VM Network”和“Switch”。 “VM Network”连接到物理网卡,“Switch”是虚拟交换机。

然后,我创build了一个名为“FW”的VPS,它具有两个虚拟网卡,一个连接到VMware的每个networking,在该虚拟机上安装pfSense,并使用内部交换机桥接“真实”网卡。 完成。

然后,我打算在“Switch”networking上创build我的资源池,并让pfSense负载平衡它。

我的Web应用程序目前包含在一个单一的目录中,大约有300GB的数据,我的数据库大约是50GB。 他们目前在Xserve 1和Xserve 2上。

我目前的思维过程在这些VPS机器上有我:

1.主服务器(10.0.0.10)包含两个虚拟硬盘驱动器,一个用于Linux,另一个用于我的Web应用程序。 更大的是作为“/ Atlas”(我的CMS的名称)安装在Linux内部,然后是NFS导出。 VPS有2GB的RAM和2个CPU

2.数据库服务器(10.0.0.11)这是主数据库服务器

3.networking服务器(10.0.0.20 – 10.0.0.30)十台Linux服务器,每台服务器有5GB高清,5GB RAM和4个CPU。 每个从#1挂载NFS导出,并可以读写我的地图集。

我的问题是:

  1. 我应该在3的每个Web服务器上运行MySQL从站吗? 我只有约900GB的服务器,所以空间是一个问题。

  2. 如果不是,我应该在同一个VMware中有独立的MySQL从属故障切换服务器,以防#2发生什么情况?

  3. 我会rsync备份主服务器到异地的位置,但有没有比NFS更好的方式让每个Web服务器读取和写入这些数据。 使用集群文件系统会导致空间问题,是否可行?

  4. 我应该使用VPS进行负载平衡并使用Apache自己的LB? 对于Web应用程序来说,这比使用pfSense的LB更好吗?

  5. 我这里有其他弱点吗? 我将使用这个作为我的主要服务器,但我将有一个故障转移服务器在另一个位置设置相同,并使用DNS服务器重新路由stream量时(自动或手动)。

我不是在这里build造Fort Knox,但是我需要比现在更好的冗余,我想尽可能地做到“正确”。 任何帮助/意见都非常appriciated!

  1. 多层networking拓扑意味着您不应该在您的Web服务器上运行MySQL。 如果您需要冗余或负载均衡的MySQL服务器,那么创builddb1,db2,db3等。不要再创build更多的从服务器,因为复制对于标准MySQL来说是完全没有任何处理的。
  2. 我通常做的是MASTER-MASTER复制。 由于存在关键冲突风险,通常不build议这样做,但我编写了一些脚本,辅助服务器以read_only模式运行以避免写入。 所以如果一个服务器死了,很容易翻转read_only开关并开始接受写入。
  3. NFS很好, 只是做一般的性能调整和testing。
  4. 看看haproxy做Apache / HTTP和TCP负载平衡。 甚至可以和MySQL一起工作。 。 您可以在VM中运行haproxy。
  5. 拥有冗余的虚拟机非常棒,但是在单个物理机器上运行仍然是一个弱点。 有10个相同的Linux虚拟机争夺资源也可能是一个弱点。

最后的评论:ESXi是伟大的(不要误解我的意思),但我不会在这种情况下使用它。 看一下像OpenVZ这样的容器化系统。 Proxmox为它提供了一个很好的用户界面。 性能会显着提高; 每个虚拟机可以使用所有的RAM和CPU内核。 (除非你限制它当然。)。 OpenVZ当然只适用于Linux。 但是任何在Xserve上运行的web应用程序也应该在Linux容器中工作?