多个服务器如何同步处理Web应用程序?

时间:2009-05-25 12:28:34

标签: architecture server server-side backend

  1. 我的第一个问题是,我经常阅读有关使用多个专用服务器来运行其网站并处理来自用户的查询的人。但他们如何做到这一点呢?我的意思是,当我输入域名时,DNS会将地图解析为IP地址,但之后我就迷失了......那里有某种主/从体系结构可以在(可能)数百个之间加载平衡传入请求服务器

  2. 如果是这种情况,各种服务器如何共享数据(例如数据库)?它们会连接到同一个硬盘吗?

2 个答案:

答案 0 :(得分:7)

ultramonkey将为您提供如何在多个服务器之间进行负载平衡的良好描述,因此您可以看到1个IP地址,但连接会被路由到许多服务器之一(包含容错)。

如果您没有使用相同存储的Web服务器(常见存储可能很棘手,您必须使用SAN和“共享”文件系统(如GFS或数据库)然后你应该启用sticky sessions告诉路由器每个客户端将选择第一次与之通信的服务器,并与该服务器保持一致。这样的容错能力较差(但在网络中你只需刷新一个断开的连接即可重新开始)但更容易架构(并且每个Web服务器可以保持独立的速度更快)

在真正容错的情况下,您需要的另一个问题是将物理服务器放在彼此远离的位置,这会导致大多数共享设计出现性能问题(即,如果它们无法将所有服务器放在SAN上“在不同的国家/地区”,是使用多服务器方法,使用单个DNS名称并定期在它们之间复制数据。 DNS load balancing可能是将多个Web服务器用作单个网站的最简单方法。

在这些情况下,数据库通常可以是一个数据库,所有服务器都可以使用群集进行通信,或者可以使用群集进行自身共享,或者更经常地进行日志传送,以确保在主服务器出现故障时备份就绪。备份服务器比远程服务更常见。

答案 1 :(得分:3)

1)您可以使用NLB(网络负载平衡) - 它将为服务器场中的所有服务器使用相同的IP http://en.wikipedia.org/wiki/Network_Load_Balancing_Services http://technet.microsoft.com/en-us/library/cc759510.aspx

2)DB的SQL集群和非关系数据的公共文件存储 http://www.sql-server-performance.com/articles/clustering/clustering_intro_p1.aspx