将特定流量重定向到亚马逊AWS

将特定流量重定向到亚马逊AWS

我的服务器接收到的(读取)网络流量突然增加,请求许多地图图像图块,而 Apache 无法处理。

Apache 甚至无法处理重定向!我的 CentOS 机器上的平均负载超过 200。

是否有一些软件可以重定向部分流量,例如仅重定向来自特定目录的流量(例如http://example.com/maptiles/abc.png)到其他地址(例如http://s3.amazonaws.com/mytiles/abc.png)?

HAProxy 可以做到这一点吗?

答案1

您可以这样做,但在采取极端措施之前,请考虑改善现有服务的性能,包括(也许)引入缓存反向代理,例如 Varnish。当您到达唯一的选择是将一些流量代理到 S3 时,您可能已经陷入困境。

你可能要考虑做的是把一些内容放在单独的子域名(例如maptiles.example.com),将其指向 S3,并在站点代码中更改指向这些资产的链接以引用该子域。这将减轻您机器的负载。

答案2

如果您认为您的服务器已达到极限,则可以使用 haproxy 作为负载均衡器并将所有流量导向它。然后,它会将请求重定向到配置的后端。haproxy 的一些强大功能包括:

  1. 后端服务器的健康检查。
  2. 可以构建非常灵活的 ACL 来重定向流量。
  3. 稳定并且能够处理大量并发连接。

答案3

我认为你应该安装 - 如果你可以在专用实例上安装会更好,但也可以在同一实例上安装NGINX(一个简单的事件网络服务器/漂亮的负载均衡器解决方案)位于您的 apache 网络服务器前面。

您可以添加 Varnish 缓存(如果有足够的 RAM,则添加到 NGINX)来内部管理这些静态请求,而无需使用 Apache 设置。这是一个非常简单的设置,可以让您水平扩展(使用 Apache 添加更多服务器并从 NGINX 重定向到它们)。

您还应该了解瓶颈所在。200+ 的负载可能与高 CPU 有关(也许您在本地运行 MySQL,但缺少索引?),或者与磁盘 I/O 有关(查看 iostat GNU/Linux 命令中的 iowait%),这可能与那些静态文件请求有关。

第一步应该是了解瓶颈,然后卸载所有可以卸载的东西。

相关内容