我打算在一个星期左右发布一个网站,我将首先在公共服务器上进行上传。 我的问题是,如果我有很多用户,我将如何添加更多的服务器(可能是专用的)到网站? 另外,我应该什么时候开始考虑添加更多的服务器,如何知道服务器是否无法处理stream量?
那么要回答你的第一个问题,根据站点运行的平台和站点types,你可以将任务分离到不同的服务器,或者创build负载平衡器后面的重复服务器。
例如,一个简单的静态站点可以通过将内容复制到其他服务器来扩展,然后将您的URL设置为指向一个较小的负载均衡器服务器,该服务器以循环方式将传入连接传递到每个服务器,从而每个服务器增加了处理额外数量的用户的能力,这相当于你的第一个服务器可以处理的数量(假设它们都是一样的)。
_________________ | | | load balancer | |_______________| / | \ / | \ / | \ __________ __________ \ __________ | | | | | | | web | | web | | web | etc... | server | | server | | server | |________| |________| |________|
现在,如果它是一个更具dynamic性的网站,包括读取和写入数据库以及用户互相交互,这只是一个更复杂一点。 基本上,你将所有的单个服务器的任务分成多个服务器来分配负载。 例如,您将拥有一个(或多个使用复制)数据库服务器,为您的前端Web服务器提供内容。 然后,你可以有多个networking服务器提供实际的HTML / PHP /无论是从数据库服务器(S)获取他们的内容。 仍然使用负载均衡器来分割多个Web服务器之间的stream量,因此即使在dynamic站点上,每个人都会看到相同的事情,因为所有Web服务器都将从相同的数据库环境获取数据。 现在为了扩展数据库服务器,基本上你有一个“主”服务器,在那里你所有的写操作都发生了,然后它把它的变化复制到一堆“奴隶”服务器上,在那里你完成所有的读操作。 一般来说,任何站点的数据读取都比写入数据多得多,所以这个工作可以让你把这些读取分配到你需要的任意数量的从属服务器上。
_________________ | | | load balancer | |_______________| / | \ / | \ / | \ __________ __________ \ __________ | | | | | | | web | | web | | web | etc... | server | | server | | server | |________| |________| |________| ^ ^ ^ each web server writes to the master and reads from the slaves _________________ | Master | | (for writes) | |_______________| / | \ / | \ / | \ __________ __________ \ __________ | slave | | slave | | slave | |(for | |(for | |(for | etc... | reads) | | reads) | | reads) | |________| |________| |________|
现在回答你的第二个问题,看看什么时候你需要移动到更多的服务器是非常简单的。 在服务器上可能会耗尽一些不同的东西 – 可用的CPU周期,内存空间,磁盘空间/带宽和networking带宽。 有工具可以查看每个这些。 假设这是一个基于Unix的操作系统,可以使用“top”来监视CPU使用情况和内存使用情况,使用“df -h”查看磁盘使用情况,使用“iftop”来监视networking使用情况。 如果这些服务器中的任何一个都不断在运行,而且您注意到网站使用速度减慢,那么现在是时候获得另一台服务器了。 而且,根据你所看到的你将用尽,你会知道如何指定你的新服务器,以更好地处理这些负载。
希望有所帮助!