我有多个Linux Web服务器连接到负载均衡器,我喜欢在这些服务器之间共享资源(如图片,video和其他内容)。 什么是最好的方法来做到这一点?
目前,我已经在一台文件服务器上安装了所有的networking服务器,但是我担心它会在交通繁忙的情况下倒闭。 我怎样才能避免这种情况发生?
提前致谢。
有多种方法可以根据您的需要来做到这一点。
前两个是最好的,如果你有很多新的文件来。 第三个将是理想的解决scheme,如果你不添加或更改文件,往往因为用户将获得404静态内容尚未同步..
最后一个选项在很多方面可能是理想的,但也可能是4中最昂贵的。您还需要重写您的网站以支持这一点。
另一个减lessweb服务器负载和执行负载平衡的好方法是使用squid(即squid3)将其设置为具有caching的反向代理。 如果你这样设置的话,它会把图片等静态内容caching到硬盘(默认)或RAM(更快,最好)。 如果任何一个特定的节点过载,它也可以循环到其他的鱿鱼服务器。
我采用的一个解决scheme是在共享的NFS驱动器上拥有主要的文件读/写副本,而且还保留在每个networking服务器上的只读副本,以便NFS主机的故障将文件访问以只读模式而不是完全丢失它们。
rsync运行15分钟,以保持每个Web主机上的只读副本新鲜。 check_link bash脚本每分钟运行一次,以确保NFS挂载仍然存在,并且不会将符号链接交换到只读副本。 从我第一次设置这个系统的时候可以看到更多细节。
上升空间:
缺点:
你可能想考虑一个NoSQL数据库。 它们被devise用于集群,提供最终的一致性。 但要小心,他们不是酸。
这里有一个介绍 ,可以帮助你决定你想要什么样的NoSQL数据库。
以下是与可用的NoSQL相关的资源列表 。
由于通常需要更多的服务器来运行dynamic网站/ aps所需的资源,因此可以考虑在另一个子域/域中托pipe静态资源。 (如static.yourdomain.com)
然后您可以使用其他服务器/服务器来承载它们。 静态文件托pipe不占用太多资源,因此您的静态内容需要的服务器less得多。 您还将在服务器上为您的dynamic内容释放一些资源。
根据您的负载平衡器,您可能也可以在同一个域上执行此操作,负载平衡器将决定使用哪个服务器来处理哪个请求,但是如果您使用单独的域,则可以将静态资源放到CDN上,这很容易应该出现的需要!
你为什么不尝试一个DFS解决scheme,他们提供了高水平的冗余,并可以尽可能多的共享音量。 Gluster是我最喜欢的一个,在任何着名的Linux发行版中安装和configuration都非常简单