所以我在这里有三个机架式服务器,主要连接到WWW并有一个公共IP,其运行HAProxy设置为指向另外两个服务器。
另外两个正在运行apache,一个cron rsync作业正在从主控制器服务器上的目录下载Web文件给他们。
这一切工作正常,但是,我目前在控制服务器上运行MySQL,但我希望它像Apache和haproxy系统是工作。 有什么办法做到这一点?
还要说如果用户在wordpress上传一个文件/图像的文章,它只存储在本地服务器上的文件每隔1分钟被rsync覆盖。 我如何做目录的合并?
顺便说一句,所有三个服务器是Ubuntu 10.04服务器
谢谢。
在任何情况下,你有超过1个Web服务器,你需要一个中央位置来存储file upload和会话数据。
如果文件不是太大,可以考虑将它们直接存储在MySQL数据库中,否则可以在其中一台服务器上设置NFS共享目录,并将其挂载到其他服务器上。 这样,当用户上传文件时,无论他在哪个服务器上,该文件都是可访问的。
这样做的缺点是,如果NFS服务器(或具有NFS共享的Web服务器)崩溃或变得不可用,所有file upload将消失..所以你应该计划定期备份这些文件,并修改你的Web应用程序来访问文件备份位置如果NFS不可用。
至于负载平衡的MySQL,我已经写了几年前的一篇文章: http : //www.alexwilliams.ca/blog/2009/08/10/using-haproxy-for-mysql-failover-and-冗余/ index.html的
我还写了一本不同的负载平衡和缩放基础设施的书,如果这可能会帮助你: http : //scalingexperts.com/books/
我可能会build议像Gluster这样的分布式文件系统能够完成你所需要的大部分工作。 在服务器之间设置复制砖块(因为您只使用3,复制将会更安全),并且每台服务器都会将所有其他服务器的文件视为“本地” – 即使一台服务器发生故障,文件也会被复制到其他服务器。
您也可以在Gluster卷上运行MySQL,以便您的数据库在多个服务器之间共享 – 与直接复制相比,它具有一些优势。 如果你正在使用InnoDB表,你将不得不延迟locking,但它应该与MyISAM和InnoDB一起工作。
Gluster将跨卷(砖块)保持文件同步,并具有“自我修复”function,可处理由于一台服务器脱机而导致的任何不一致情况。 应该帮助你的目录合并,并且相当容易设置。