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

phi*_*y77 14 architecture backend server-side server

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

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

gbj*_*anb 7

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

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

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

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