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

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

我在这里搜索了一些内容,但没有找到足够相关的内容。我会尽量简短地介绍一下。

我目前有三台 OSX 服务器。由于 Apple 取消了 Xserve,因此我正在转向虚拟化环境以实现冗余。我之前没有虚拟化经验,但是我学得很快我有自 1997 年以来管理服务器

因此,在新的数据中心安装了新的专用服务器。超棒的硬件,安装了 VMware ESXi,在其中,我创建了两个网络,“VM 网络”和“交换机”。“VM 网络”连接到物理 NIC,“交换机”是虚拟交换机。

然后,我创建了一个名为“FW”的 VPS,它有两个虚拟 NIC,每个 NIC 对应 VMware 中的每个网络,在此虚拟机上安装了 pfSense,并将“真实”NIC 与内部交换机桥接。完成。

然后我打算在“Switch”网络上创建我的资源池并让 pfSense 对其进行负载平衡。

我的 Web 应用程序目前包含在一个目录中,该目录包含大约 300GB 的数据,我的数据库大约多 50GB。它们目前位于 Xserve 1 和 Xserve 2 上。

我目前的想法是使用以下 VPS 机器:

1.主服务器(10.0.0.10) 它包含两个虚拟硬盘,一个小的用于 Linux,一个大的用于我的 Web 应用程序。较大的硬盘在 Linux 中安装为“/Atlas”(我的 CMS 的名称),然后通过 NFS 导出。VPS 有 2GB 的 RAM 和 2 个 CPU

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

3.Web 服务器(10.0.0.20 - 10.0.0.30) 十台 Linux 服务器,每台都配有 5GB 硬盘、5GB RAM 和 4 个 CPU。每台服务器都从 #1 安装 NFS 导出,并且可以读取和写入我的 Atlas。

我的问题是:

  1. 我是否应该在 3 中的每个 Web 服务器上运行 MySQL 从属服务器?我的服务器中只有大约 900GB,因此空间是一个问题。

  2. 如果没有,我是否应该在同一个 VMware 中设置单独的 MySQL 从属故障转移服务器,以防 #2 出现问题?

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

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

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

我在这里不建造诺克斯堡,但我需要比现在更好的冗余,而且我想尽可能“正确”地完成它。任何帮助/评论都非常感谢!

答案1

  1. 多层网络拓扑意味着您永远不应该在 Web 服务器上运行 MySQL。如果您需要冗余或负载平衡的 MySQL 服务器,请创建 db1、db2、db3 等。不要创建比实际需要更多的从属服务器,因为对于标准 MySQL 来说,复制是全有或全无的处理。
  2. 我通常做的是主-主复制。由于存在密钥冲突风险,通常不建议这样做,但我编写了一些脚本,让辅助服务器以只读模式运行以避免写入。因此,如果服务器死机,很容易切换只读开关并开始接受写入。
  3. NFS 很好;只需进行常规的性能调整和测试。
  4. 看一下 haproxy 如何进行 Apache/HTTP 和 TCP 负载平衡。甚至可以与 MySQL 很好地协同工作。。您可以在虚拟机中运行 haproxy。
  5. 拥有冗余虚拟机固然很好,但在单台物理机器上运行仍然是一个弱点。让 10 个相同的 Linux 虚拟机争夺资源也可能是一个弱点。

最后评论:ESXi 很棒(别误会我的意思),但在这种情况下我不会使用它。看看像开放VZ普罗克斯莫克斯为其提供了出色的用户界面。性能将显著提高;每个 VM 都可以使用所有 RAM 和 CPU 核心。(当然,除非您限制它。)OpenVZ 当然仅适用于 Linux。但任何在 Xserve 上运行的 Web 应用程序也应该在 Linux 容器中运行?

相关内容