Apache 故障转移和负载平衡

Apache 故障转移和负载平衡

可能重复:
Apache 故障转移和负载平衡

我在一家小型金融公司担任 Web 应用程序开发人员。我们公司有一个内部网站,用 PHP 编写并在 Apache 上运行。最近我们的服务器瘫痪了,网站瘫痪了好几天,造成了严重问题。

我被要求再设置两台服务器来为网站提供服务。因此,我们需要在三台不同的机器上运行三台 Apache Web/App 服务器。当用户登录网站时,必须由三台服务器中的一台提供服务,具体取决于负载。此外,如果其中一台或两台服务器发生故障,则正常运行的服务器必须处理网站请求。

我只知道如何用 PHP 创建网站并将其托管在 Apache 服务器上。我对网络一无所知。请告诉我创建上述系统需要学习什么。

我并不指望有人给我喂食。我只是需要一个指引,告诉我要学什么才能实现我的目标。我同时在谷歌上搜索,但在这里问了这个问题,因为我急着要实现它。

答案1

可扩展互联网架构+1。

我要做的是坐下来看看相关服务器上当前正在运行什么。

我现在假设你正在运行 Linux,尽管你没有明确说明这一点。你想要查看的是 Varnish。它是一个高性能反向代理和负载平衡器。你可以按照在线示例进行设置这里并且它应该很容易运行。

如果您有 3 台服务器中的 2 个 varnish 节点,则将 1/3 的流量指向每台服务器,按循环分配方式安排。这 2 台服务器需要唯一的公共 IP 地址,您可以在 DNS 中设置多个 A 记录以执行 RoundRobin DNS (RRDNS)。

如果您的服务对企业至关重要,并且上次中断导致严重损失,您可能需要争取更具弹性和冗余的网络。假设您目前只有一台服务器,位于一个供应商提供的一个 IP 上,如果您之前的中断与网络有关,您可能会发现提高网络弹性可以提高正常运行时间。

还要仔细检查您的监控,确保您监控服务器上可能导致服务器宕机的内容、硬盘上的 SMART 数据、可用交换空间、可用内存、可用磁盘空间。设置 Nagios 和 Munin。Nagios 在满足关键监控条件时发出警报,而 Munin 则将这些数据制成图表。

您可能还需要进行一些应用程序级别的更改。假设您的应用程序是基于会话的,您需要某种方式来处理不总是发送到同一台服务器的用户请求。您可以将它们设置为客户端,或服务器端并保持粘性。您可能会发现 memcached 会在这里为您提供很大的帮助。
至于应用程序级别的更改,您可能想在 StackOverflow 上询问,因为它们更多的是代码而不是服务器。

答案2

如果您的公司对此非常重视,可以考虑使用 Cisco CSS 内容服务交换机 11501 系列等设备。我们将此设备与多个 Web/应用服务器配合使用,以平衡负载并提供冗余。

答案3

如果你没有钱购买负载均衡器,你可以通过配置来制作一个 Apache 服务器负载均衡器mod_proxy_balancer。为了使您的架构完全冗余,您需要运行两个负载均衡器实例,并且可以将您的域指向两个 IP。另一个选项是使用虚拟专用网络备份组或者鲤鱼描述于西奥的书这需要网络运营团队的帮助。

答案4

跑到 Amazon.com 购买

http://www.amazon.com/Scalable-Internet-Architectures-Theo-Schlossnagle/dp/067232699X

在您阅读并理解本书之前,请不要在这上面浪费任何时间。

您不想要(或不需要)单点故障负载均衡器。

你想要的是一个简单的瓦卡莫尔负载分担解决方案。

并且您希望所有前端 PHP 服务器都使用一个数据库。

相关内容