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

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

4

2 回答 2

7

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

如果您的 Web 服务器没有使用相同的存储(公共存储可能很棘手,您必须使用具有“共享”文件系统(如GFS )或数据库的SAN),那么您应该启用粘性会话,告诉路由器每个客户端都会选择一个服务器第一次与之通信,并与该服务器保持联系。这容错性较差(但在 Web 中,您只需刷新断开的连接即可重新开始),但更容易构建(并且速度更快,因为每个 Web 服务器都可以保持独立)

在真正容错的情况下,您需要的另一个问题是将物理服务器放置在远离彼此的位置,这会引发大多数共享设计的性能问题(即,如果您的所有服务器都在不同国家),是使用多个服务器的方法,使用单个 DNS 名称并定期在它们之间复制数据。DNS 负载平衡可能是将多个 Web 服务器用作单个网站的最简单方法。

在这些情况下,数据库通常可以是所有服务器与之通信的单个数据库,或者可以自己共享,使用集群或更常见的日志传送,以确保您有一个准备好在主服务器发生故障时上线的备份。日志传送对于备份服务器来说比位于很远的地方更常见。

于 2009-05-25T13:29:14.097 回答
4

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

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

于 2009-05-25T12:32:47.550 回答