您何时需要多台服务器来托管一个Web应用程序?

时间:2009-10-04 00:04:54

标签: amazon-ec2

这称为服务器的“群集”吗?发送Web请求时,是否通过主服务器,如果主服务器无法处理额外负载,则将其转发到可以处理负载的辅助服务器?另外,一个“服务器”启动并运行称为“实例”的应用程序吗?

4 个答案:

答案 0 :(得分:4)

  

[...]是否称为“群集”服务器?

群集确实使用透明的多个节点,这些节点被视为一个独特的实体:集群。群集允许您扩展:您可以在所有节点上分散负载,如果需要更多功率,可以添加更多节点(简短版本)。群集允许您容错:如果一个节点(物理或逻辑)发生故障,其他节点仍然可以处理请求并且您的服务仍然可用(短版本)。

  

发送Web请求时,它是否通过主服务器,如果主服务器无法处理额外负载,那么它会将其转发到可以处理负载的辅助服务器上?

一般来说,这是一个称为“负载均衡器”(硬件,软件)的专用组件的工作,它可以使用许多算法来平衡请求:循环,FIFO,LIFO,基于负载......

对于EC2,您之前必须使用循环DNS和/或HA Proxy进行负载均衡。见Introduction to Software Load Balancing with Amazon EC2。但是一段时间以来,亚马逊推出了负载均衡和自动扩展(beta)作为其EC2产品的一部分。见Elastic Load Balancing

  

此外,是否有一个“服务器”启动并运行称为“实例”的应用程序?

实际上,一个实例可以是很多东西(取决于谁在说话):机器,虚拟机,服务器(软件)启动和运行等。

对于EC2,您可能需要阅读Amazon EC2 Instance Types

答案 1 :(得分:3)

以下是一个真实的例子:

此特定配置托管在其Managed Colo组中的RackSpace。

请求通过思科防火墙。然后将它们通过千兆位LAN路由到Cisco CSS 11501 Content Services Switch(例如负载均衡器)。 Load Balancer将传入的内容与内容规则进行匹配,必要时处理SSL解密,然后将流量转发到多个后端Web服务器之一。

每5秒钟,负载均衡器会在每个网络服务器上请求一个URL。如果Web服务器失败(连续两次,IIRC)以正确的值进行响应,则在URL开始正确响应之前,不会向该服务器发送任何流量。

Web服务器的后面是MySQL主/从配置。为只读请求的连接可以是狂到主(用于交易)或到从站。

Memcached安装在每个Web服务器上,1 GB的ram专用于缓存。每个Web应用程序都可以利用memcache服务器集群来缓存各种内容。

使用rsync处理部署,以将管理服务器上的特定目录同步到每个Web服务器。 Apache重启等等。通过管理服务器上的ssh类似脚本来处理。

通过此配置可以处理的流量非常大。易于扩展和易于维护的优点也很好。

答案 2 :(得分:1)

对于群集,任何Web请求都将由负载均衡器处理,负载均衡器将根据构成群集的服务器的当前负载进行更新,并将请求发送到负载最小的服务器。至于它是否是一个实例.....我相信,但我会先等待确认。

你需要一个非常大的应用程序来考虑群集以及软件和硬件方面带来的“乐趣”。除非你想要开始或者已经在运行大事,否则不用担心。

答案 3 :(得分:1)

是的,群集可能需要它。通常情况下,当负载上升时,您可能会发现自己有一个前端服务器,它会进行URL重写,如果需要可以使用https,并使用squid进行缓存。请求被传递到多个后端服务器 - 如果需要,可能使用cookie将会话与特定后端相关联。您也可以将数据库放在单独的服务器上。

我应该补充说,还有其他原因可能需要多台服务器,例如出于安全原因,可能要求数据库不在前端服务器上